Android使用串口(基于android-serialport-api)

2023-05-16

运行平台:
CPU:全志V40
Android版本:6.0.1


关于安卓设备上使用串口,谷歌官方在github上有提供代码实例,里面有JNI的代码和串口API的java文件,工程的地址如下:
https://github.com/cepr/android-serialport-api

官方给出的代码是eclipse工程,SDK的版本也比较旧。我使用的Android Studio,如果直接使用google提供的so库文件是访问不了串口的,我平台需要使用的SDK版本是26,而github上这个开源的代码比较旧了,跟我SDK版本也不匹配,好在google有提供相应的JNI文件,从github上下载这个工程下来后,在android-serialport-api文件夹里面可以找到jni文件夹,里面包含有SerialPort.c,如下:
这里写图片描述

有了这个文件后需要使用CMAKE去编译它,至于怎么安装和使用CMAKE我找到一篇文章:
https://blog.csdn.net/qq_25817651/article/details/53135685
基本上只要看下怎么安装CMAKE就好了,下面我会继续讲下怎么使用。CMAKE安装好后下面先建立一个JNI工程,这个工程只是为了去获取CMakeLists.txt这个编译文件,先创建好工程,如下:
这里写图片描述
这里写图片描述
这里写图片描述
这里直接Next就可以了,在工程下面可以看到有个CMakeLists.txt的文件,直接把这个CMakeLists.txt复制出来到工程目录下的app文件夹就可以关闭工程了,如果不添加这个文件,后面自己工程编译jni文件的时候会提示找打不到这个CMake文件
这里写图片描述
复制出来上面那个文件后,回到自己需要添加串口的工程,把这个文件复制到”项目名/app/”下,之后创建jni目录:
这里写图片描述
这里写图片描述
并复制 android-serialport-api-master\android-serialport-api\project\jni 下的“SerialPort.c”文件到自己创建的jni目录下,注意在android studio中显示的是“cpp”目录。
这里写图片描述
这里写图片描述

在build.gradle(Module:app)里面添加如下内容,SDK版本根据自己需要进行修改:
这里写图片描述

上面的步奏添加完后,进行同步后就会在工程页面出现我们前面添加的CMakeLists.txt,打开 CMakeLists.txt 做如下修改:
这里写图片描述
这里写图片描述

然后编译,在下面这个目录下会生成对应的串口so文件:
这里写图片描述
这个so文件就能够直接用起来了,把这个so文件放到libs文件下的“armeabi-v7a”里面,接下来写下如何使用这个so文件,google官方的例程里面有提供java的API文件:
这里写图片描述
这个文件夹的名字必须为“android_serialport_api”,把这个文件夹复制到自己的工程下面
这里写图片描述
加载库文件修改为新生成的so文件
这里写图片描述
接下来就可以直接在工程里面使用串口了,代码如下:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //series
        try {
            /* 打开串口 */
            mSerialPort = new SerialPort(new File("/dev/" + "ttyS2"), 115200, 0);
            //  mOutputStream = (FileOutputStream) mSerialPort.getOutputStream();
            mInputStream = (FileInputStream) mSerialPort.getInputStream();

            /* Create a receiving thread */
            mWriteThread = new WriteThread();/* 创建串口处理线程 */
            mWriteThread.start();

        } catch (SecurityException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android使用串口(基于android-serialport-api) 的相关文章

  • Android 日历视图字体大小

    我正在使用 Xamarin 构建 Android 应用程序 这是我的第一个应用程序 我有一个CalendarView我需要更改当天的字体大小和样式 我尝试了下面的代码 字体颜色改变了 但尺寸太小了 最低 API 级别为 11 目标 API
  • 如何在 AndroidEnvironment 构建文件的环境变量中指定下载目录的路径

    使用 Visual Studio 2022 17 2 0 Preview 1 0 我目前正在尝试创建一个 MAUI 应用程序 该应用程序已经在 Windows 上运行良好 也可以在 Android 下运行 该应用程序使用一个库 SaxonC
  • 工具栏下方的白条

    所以我有一个带有工具栏的应用程序 工具栏下方出现一个白条 最后的屏幕截图 我不希望那个栏在那里我尝试添加 maxHeight 以查看它是否有效 但没有运气 这是我的样式和 v21 style xml style
  • 如何从命令行向 Android 项目添加外部 jar 库

    我正在尝试构建一个具有一些依赖项的 Android 项目 jar 文件位于 lib 目录中 我可以通过将这些 jar 文件添加到我的类路径来构建项目 但当然它会在模拟器中强制关闭 因为这些库不存在 我正在使用 ant 从命令行执行此操作 n
  • Android - 同一行中的两个按钮填充整个宽度

    我在定义相对布局时遇到了一些问题 我有一个带有滚动的列表视图 并且两个按钮始终在列表视图的底部可见 我只是希望我的两个按钮有 50 的宽度 填充该线 这是我的代码
  • 使用 BroadcastListener 通话结束后从 Calllog 中获取通话持续时间

    我需要尝试在通话结束后获取通话持续时间 我有一个广播侦听器 它使用电话管理器跟踪电话状态 即 摘机 空闲 等 使用此接收器 我可以了解拨出呼叫何时完成 通话完成后 我启动一项服务来获取上次通话的通话持续时间 但是 我得到的值是前一个调用的值
  • Urban Airship:默认状态栏通知的自定义图标

    Urban Airship 建议创建自定义通知CustomPushNotificationBuilder如果您想对状态栏通知进行任何修改 包括简单地更改图标 不幸的是 使用RemoteView因为通知会带来许多与定制制造商和 或特定于平台的
  • Java-Android 上的 MulticastSocket 问题

    我开始使用 MulticastSocket 进行编码 尝试制作一个带有客户端和服务器的简单应用程序来发送消息 我的服务器代码 import java io IOException import java net DatagramPacket
  • 如何在android中播放音频文件

    我的 Android 手机中有一个 mp3 文件 让它在我的 SD 卡中的某个位置成为 xyz mp3 如何通过我的应用程序播放它 只需您就可以使用MediaPlayer并播放音频文件 查看这个很好的例子 http www helloand
  • AppCompat SearchView 图标无法消失

    我正在使用 android support v7 widget SearchView 我需要让这个搜索图标消失 我有带有 SearchView 的自定义 ActionBar 布局
  • 为什么线性布局 maxHeight 不起作用?

    这是我的布局 我在线性布局上设置了最大和最小高度 但最大高度似乎不起作用 事实上如果TextView R id testo有很多文本 不会被修剪 如果我设置固定高度 则不会发生这种情况 但我不想设置固定高度 以便在选择溢出屏幕模式时正确调整
  • 在应用程序退出时保存 Android 应用程序数据

    看来关于保存的信息量很大Activity状态 但我一直无法找到太多的信息应用 state 我正在寻找一些设计想法来解决我遇到的问题 我正在开发一个具有相当大的数据模型 1 2 MB 的游戏 该模型存在于任何 Activity 之外 事实上有
  • 罐子不匹配!修复使用 appcompat_v7 和 Facebook sdk 时的依赖关系。

    我在我的项目中使用 appcompat v7 库和 facebook sdk 并且这两个库都有 android support v4 jar 如果我删除任何 jar 则相应的库将无法工作 并且不允许同时拥有这两个 jar 我应该怎么办 请帮
  • 浮动操作按钮未显示在 recyclerview 上(位于 DrawerLayout 内)

    我正在尝试通过 recyclerview 获取 FAB 在我的情况下 它将覆盖整个屏幕 即使 recyclerview 为空 FAB 也不会显示 以下是我的 xml 代码
  • 在Android中获取Fragment中的应用程序上下文?

    我已通过在一个活动中使用应用程序上下文将一些数据存储到全局类中 稍后我必须在片段中检索这些值 我已经做了类似的事情来存储在全局类中 AndroidGlobalClass AGC AndroidGlobalClass getApplicati
  • Android 11 - 访问我的应用程序 Android/Data 文件夹中的文件

    由于某种原因 我真的很挣扎 希望有人能帮助我指明正确的方向 我的目标是 Android 11 API 30 这似乎是所有问题的根源 降低目标可能对我有用 但谷歌似乎最终会迫使我走上这条路 所以我不妨弄清楚这一点 我的应用程序通常会按照标准写
  • indexoutofboundException :setSpan (2...2) 结束长度超出长度 1

    I ve a MultiAutoCompleteTextView当用户按空格键时 我在其中创建芯片文本的自定义控件 我不希望用户在文本框为空时最初输入空格 所以我放了一个inputFilter以防止用户最初放置空格 这是过滤器代码 priv
  • Twitter APi“代码”:215,“消息”:“错误的身份验证数据

    接收错误 code 215 message 错误的身份验证数据 in my page var dump page 我读到 Friends exist 不再适用于 1 1 版本 因此我需要使用 Friends lookup 来比较一个 Twi
  • 生成最终存档时出错:无法获取调试签名密钥

    我无法在 mac 10 7 上使用 Eclipse 构建和运行我的 android 项目 我收到的错误是 生成最终存档时出错 无法获取调试签名密钥 更改 android 目录中的权限没有成功 尝试生成另一个项目 按照设置 SDK 的指南 甚
  • 作业调度 API android L

    我正在制作一个使用 jobscheduler API 的应用程序 我想定期以及在设备充电时运行服务 这是代码 JobInfo Builder builder new JobInfo Builder kJobId mServiceCompon

随机推荐

  • 时空行为检测数据集 JHMDB & UCF101_24 详解

    文章目录 0 前言1 JHMDB1 1 基本情况1 2 数据准备以及标签详解 2 UDF101 242 1 基本情况2 2 数据准备与标签详解 3 数据集可视化代码 0 前言 现在常用的时空行为检测数据集只有AVA JHMDB UCF101
  • Lock与RLock的区别

    目录 往期推荐介绍区别一区别二 往期推荐 Python多线程的使用 Python线程池的使用 Python多线程的安全问题 B站同名 有温度的算法 已经上线 想观看视频讲解的同学 点击此处直达B站 介绍 在上节中为大家说明了线程访问临界资源
  • ROS 小技巧 - OpenCV4 与 CV_Bridge 配合使用

    1 现象 ROS默认的Python版本是3 3 xff0c 但我系统安装的是OpenCV4 5 如果直接在pkg中使用cv bridge和opencv4 5就会有问题 会有一些undefined reference问题 参考资料 xff1a
  • 【做题系统】后端设计

    目录 一 设计思路 1 项目背景 2 技术栈选择 二 系统设计 1 系统结构图 2 项目结构 3 数据建模 4 数据流图 5 主要流程图 三 问题及解决办法 1 实现安全登录 访问 2 数据库中的信息安全问题 3 Mybatis plus如
  • C/C++字符串查找函数

    C C 43 43 string库 xff08 string h xff09 提供了几个字符串查找函数 xff0c 如下 xff1a memchr在指定内存里定位给定字符strchr在指定字符串里定位给定字符strcspn返回在字符串str
  • ssh命令-manpage

    SSH Section User Commands 1 Index Return to Main Contents BSD mandoc NAME ssh OpenSSH SSH 客户端 远程登录程序 总览 SYNOPSIS ssh l l
  • 一小时做出Java实战项目——飞翔的小鸟

    学姐又来啦 xff0c 今日分享一个Java实战项目 飞翔的小鸟 相信大家都玩过这个游戏 xff0c 这个游戏陪伴了我们整整一个童年 xff0c 是我们青春的回忆 飞翔的小鸟 xff0c 游戏中玩家只需通过点击方向键操纵让小鸟避开绿色管道等
  • 搭建本地仓库源

    一 如何搭建仓库源 之前讲了定制ISO的方法 xff1a 使用chroot定制系统 xff0c 但有时候我们想自定义的安装包不在上游的仓库源中 xff0c 在我们本地应该怎么办呢 xff1f 如果我们将deb包拷贝到iso目录再安装有点过于
  • 节点操作案例

    1 下拉菜单 xff08 仿微博 xff09 lt DOCTYPE html gt lt html lang 61 34 en 34 gt lt head gt lt meta charset 61 34 UTF 8 34 gt lt me
  • document获取对象的三种三方法

    Document对象中有几个常用的方法 xff0c 我们在Dom简介中提到过 说到获取JavaScript对象的方法 xff0c 最常用的可能就是getElementById了 xff0c 它是Document中最常用的获取对象的方式之一
  • 程序员,最关键的跨越是什么?做到了月薪可能翻上几番~

    黑马程序员视频库 播妞微信号 xff1a boniu236 传智播客旗下互联网资讯 学习资源免费分享平台 作为一名程序员 xff0c 最关键的跨越是什么 xff1f 从普通程序员进阶为熟练开发者 xff0c 从熟练开发者跃升到技术专家或架构
  • 黑马程序员:3分钟带你读懂C/C++学习路线

    随着互联网及互联网 43 深入蓬勃的发展 xff0c 经过40余年的时间洗礼 xff0c C C 43 43 俨然已成为一门贵族语言 xff0c 出色的性能使之成为高级语言中的性能王者 而在今天 xff0c 它又扮演着什么样重要的角色呢 x
  • 数据归一化

    原文链接 xff1a 从公式出发 xff1a 什么是模型收敛的有效方法 xff1f 大家好 xff0c 我是泰哥 数据归一化在模型收敛中起着至关重要的作用 xff0c 从经典机器学习到深度学习的数据归一化方法是如何一步步演变的呢 xff1f
  • 【Python面试】 说说Python变量、函数、类的命名规则?

    最近公众号新增加了一个栏目 xff0c 就是每天给大家解答一道Python常见的面试题 xff0c 反正每天不贪多 xff0c 一天一题 xff0c 正好合适 xff0c 只希望这个面试栏目 xff0c 给那些正在准备面试的同学 xff0c
  • ​LeetCode刷题实战46:全排列

    算法的重要性 xff0c 我就不多说了吧 xff0c 想去大厂 xff0c 就必须要经过基础知识和业务逻辑面试 43 算法面试 所以 xff0c 为了提高大家的算法能力 xff0c 这个公众号后续每天带大家做一道算法题 xff0c 题目就从
  • Android硬件访问服务-Service

    Android有四大组件 xff1a 一 Activity 二 Service 三 Broadcast Receiver 四 Content Provider Service是Android中一个类 xff0c 它是Android四大组件之
  • android6.0第三方APP获得设备节点的访问权限

    之前使用android4 4的系统进行开发时 system app xff08 系统自带APP xff09 目录下的 app 可以直接访问 dev 目录下的设备节点 xff0c Android 5 0 以后 xff0c 因为采取了 SEAn
  • U-boot取消或修改启动延时bootdelay

    在我们的实际项目中都希望uboot尽量能够快速启动 xff0c 这就涉及到uboot的裁剪工作 xff0c 由于裁剪的工作量和内容比较多 xff0c 这里暂不描述 但是uboot有个启动延时bootdelay xff0c 在我们进入linu
  • uboot启动分析第一阶段(start.S)

    前面分析了启动脚本 Makefile mkconfig xff0c 接下来就是uboot的start S这个启动代码了 xff0c 下面是本章的平台介绍 xff1a 单板 xff1a 迅为4412开发板 Exynos 4412 SDRAM
  • Android使用串口(基于android-serialport-api)

    运行平台 xff1a CPU xff1a 全志V40 Android版本 xff1a 6 0 1 关于安卓设备上使用串口 xff0c 谷歌官方在github上有提供代码实例 xff0c 里面有JNI的代码和串口API的java文件 xff0