Android程序调用串口开发硬件
Android程序调用串口开发硬件
- Android的串口程序
- 工程编辑
Android的串口程序
Adnroid开发串口程序与linux一致,本质也是对文件进行读写操作,不过为了能用java操作,需要导出为JNI格式的接口而已。幸运的是,该串口读写程序已经被开发好了,我们直接使用就可以了。
github路径:android-serialport-api
当然,你也可以从gitee上搜索该项目,大同小异,我们只要取启动的SerialPort.c文件即可。
工程编辑
由于Android调用so库是通过jni方式实现的,所以so库导出的接口和你的程序包名严重相关。比如你自己的Android程序放在包com.demo.sdk中,你调用的so库的函数名类似Java_com_demo_sdk_SerialPort_xxx…(Java+包名+类名+方法名)。当然这个名字不用你自己记,javah会帮你生成。下面我们梳理下怎么生成自己的SerialPort串口库。
- 从github上下载android-serialport-api后,获取jni文件夹。复制该目录到你自己的工程目录中,删除其中的sh文件和h文件 。
- 编写自己的SerialPort.java文件。当然,你可以参考上述项目中的SerialPort.java文件,只需要将启动的包名改成你自己的包名即可。
- 按照包名生成路径,例如:
在路径jni文件夹中执行如下命令,生成自己的SerialPort.h头文件,将头文件中的导出函数替换到SerialPort.c中。
javah -o SerialPort.h -jni -classpath ../ com.demo.sdk.SerialPort
- 修改Android.mk,删除其中的TARGET_PLATFORM,修改Application.mk,删除生成目标的armeabi格式(ARM v5)。增加APP_PLATFORM := android-26,指定生成的版本。
- 回到上层目录中执行ndk-build.cmd,生成自己独有的SerialPort开发库。
PS D:\Android\work\test> cd jni
PS D:\Android\work\test\jni> javah -o SerialPort.h -jni -classpath ../ com.demo.sdk.SerialPort
PS D:\Android\work\test\jni> cd..
PS D:\Android\work\test> ndk-build.cmd
[armeabi-v7a] Compile thumb : serial_port <= SerialPort.c
[armeabi-v7a] SharedLibrary : libserial_port.so
[armeabi-v7a] Install : libserial_port.so => libs/armeabi-v7a/libserial_port.so
[x86] Compile : serial_port <= SerialPort.c
[x86] SharedLibrary : libserial_port.so
[x86] Install : libserial_port.so => libs/x86/libserial_port.so
PS D:\Android\work\test>
libs文件夹中即是生成的so库。
Android程序调用串口开发硬件相关推荐
- Android下的串口开发
一.前言 由于安卓的开源性以及可拓展性,近些年,Android在各种智能设备上的使用越来越多,如电视机.机顶盒.车载系统以及公交刷卡系统等等.在我们的认识中Android系统是手机系统,它的物理接口一 ...
- android java 指针异常处理,Android程序员日常开发中异常总结
CaptainAndroid.png Java异常 平时开发中遇到的java异常很多,因为引起原因一目了然,当然也有不好解决的,比如一个简单的空指针异常你可能始终无法找到其为空的原因,甚至使用前还做了 ...
- android 程序调用wps,Android在调用像WPS这种第三方软件打开word时遇到ActivityNotFoundException...
在工做的时候,项目中须要使用WPS打开office的东西,使用Intent比较简单.html boolean openFile(String path) { Intent intent = new I ...
- 如何在ios上运行android程序图标,iOS开发 Xcode 生成 应用图标 启动图 神器
一.先来研究下这个软件->Appicon and Launchimage Maker 首先打开你电脑上的AppStore,然后搜索:AppIcon 然后回车: 这里我们先使用免费版的点击下载.( ...
- 解决android程序调用摄像头黑屏
去掉surfaceChanged方法中的这段代码 // 根据屏幕方向设置预浏尺寸 if (getWindowManager().getDefaultDisplay().getOrientati ...
- Android USB串口开发
因为第一次接触Android下的串口开发,在网上找了很多例子都不能满足自己的需要以及不能正常使用,于是结合网上的资源以及查阅资料,终于完成了关于这个串口的开发,在此记录下usb转串口通信开发的过程. ...
- QT for Android串口开发
QT for Android 思路 一.所用到的头文件 1.打开串口 2.配置串口 3.接收数据 3.发送数据 最近在搞QT for Android开发,在网上搜了下解决方案发现都是需要java库的支 ...
- 躺不平又卷不动,30岁Android程序员当如何?
在程序员这个行业,几乎所有30而立的中年人都有这样的困惑,躺也躺不平,卷又卷不停,真想躺但是一家老小的压力背在身上不敢躺,也想跟年轻小伙子们卷,但是心有余而力不足,自主学习能力下降,加班身体开始吃不消 ...
- android手机gps定位开发省电要点
android手机使用GPS定位会非常费电.google工程师在quora上做了具体的解释,有兴趣可以看看 https://www.quora.com/Battery-Life/Why-does-GP ...
最新文章
- mysql流量控制_UDP流量控制之分析
- Android:基础控件按键文本框输入框制作登录页面
- 成功解决Exception unhandled AttributeError 'MainWindow' object has no attribute 'setDaemon'
- APScheduler 浅析
- hadoop3 禁用ec_Hadoop + Amazon EC2 –更新的教程
- 10万人参加过的公开课(大数据、AI、云计算、5G、物联网),你都学了吗?
- linux每日命令(28):chgrp命令
- jquery字符串转json
- 华北科技计算机组成原理,华北科技学院—《计算机组成原理》设计性实验报告.doc...
- Mariadb 安装 启动 及错误 1067 问题解决
- 为什么DataGridView不出现滚动条?它的ScrollBars属性我设置为Both了
- git 配置winmerge
- 对话即平台,一场对长尾理论的逆向革命
- 企业微信社群运营必建的4个内容体系
- 基于STC89C52单片机实现简易计算器
- 可以跟风不看好瑞幸,但真该相信浑水这份方法论偏差的报告吗?
- 计算机中存储数据最小的单位是什么,计算机中存储数据的最小单位和存储容量的基本单位各是什么?...
- EXT JS 4.3 在线学习
- python定义一个学生类姓名、年龄、性别、成绩、你成绩评价_.定义一个学生类Student,包含三个属性姓名、年龄、性别,创建三个学生对象存入ArrayList集合中。...
- 微信小程序 ECharts 水球图
热门文章
- 【2020年领域新星】 赵彦鹏 爱丁堡大学
- EFI系统分区,设定盘符
- 计算机设备维修记录app,设备维修保养管理软件电脑版
- 浙江省宁波温州台州绍兴卫星地图1省4市合一大高清图(2021年)
- ubuntu系统安装Nvdia Quadro P4000显卡驱动
- jQuery_03_操作HTML和CSS
- 用友与华为结盟私有云 谁将是背后最大赢家?
- 诺基亚7 刷android p,兑现承诺!HMD为诺基亚7 Plus推送Android 9.0正式版更新
- Could not set property ‘id‘ of ‘class com.example.demo.entity.User‘ with value ‘1488484032207781890‘
- java手机ua_通过UA判断手机的类型