一、基础工程搭建
在上一章最后一讲的BLE蓝牙例程中,我们使用了沁恒官方的BLE调试助手完成数据发送,接下来我们使用Android Studio完成一款简易的BLE调试助手。
1、参考文章
我这里参考了CSDN中的一位博主“摸爬滚打的程序媛”的文章以及对应文章中的Android Studio BLE应用工程的Demo。
版权声明:链接中的文章为CSDN博主「摸爬滚打的程序媛」的原创文章,
遵循CC 4.0 BY-SA版权协议,
转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38950819/article/details/103067487。
大家先根据这位博主的文章搭建安卓工程,我也是按照这个文章进行的学习,博主也提供了工程源码,可以直接在Gitee上下载,具体请参考上述链接,下面的教程是基于这个工程之上,请大家搭建好上述工程后进行下面二次开发的教程学习。
2、工程自定义修改
按上面的教程搭建工程后,主要是工程的UUID修改,打开沁恒官方的BLE蓝牙调试助手,查看相关UUID,然后在工程中修改,例如:
3、运行测试
修改后在真机中运行,测试数据收发,首先点击搜索,然后选择要连接的蓝牙,点击连接后在数据输入框中输入数据,点击发送,串口助手可以收到数据(十六进制显示):
发送没有问题然后测试数据接收,在串口助手中勾选16进制发送,输入“88”后发送,APP端可以接收到数据:
在上一讲中通过发送字符“1”和字符“0”控制LED,在这个安卓应用中也可以实现,字符“0”的ASCII码为48,换算成16进制为0x30,在安卓应用中发送“30”,在串口助手中同样可以看到LED的开关变化:
提示:调试信息中的“NO TIME OUT”可在下图中注释掉:
然后我们就可以通过修改安卓应用程序,实现自己所需要的功能,下面为本期教程的二次开发中遇到的一些问题与解决方法。
二、二次开发可能遇到的问题
1、工程适配
通过上面的教程,我们可以搭建或直接下载模板程序,我这里采用的后者,按上述操作可以完成基本通信,但经过大幅修改后(例如添加界面等)编译会出现错误,如果大家也遇到相关问题,可以参考下面的方法解决:
(1)添加Activity
(这里添加Activity的主要作用是用于触发编译运行时的错误)
NEW->Activity->Empty Activity
(2)Default interface xxxx
等待上述Acticity构建完成后点击RUN,会遇到如下错误提示"Default interface methods are only supported starting with Android N (–min-api ":
解决方法:在“build.gradle”中添加下面代码用于指定JAVA版本,然后点击“Sync now”:
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
(3) Android resource linking failed
添加java版本指定后,再次点击RUN,会遇到新的问题“Android resource linking failed”:
解决方法:
首先进入“SDK Mangager”,查看“SDK Platform Tools”版本号,例如我这里是“33.0.3”:
修改:
再次运行:
(4)权限问题
这里我们修改AndroidManifest.xml文件,加入下面这句:
android:exported="true"
再次点击运行,此时程序可以运行,但是点击搜索时会闪退,因为权限需要补充,在MainActivity中的126行可以看到:
我们可以在文件中手动添加下面两个:
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
然后在需要的地方加入权限检查提示:
并把报错的“this”替换为“getApplicationContext()”
然后再次运行,就会发现所有功能正常使用了,接下来,我们可以自由的修改程序,完成自己的蓝牙应用开发啦。