CH573-09-BLE蓝牙安卓应用二次开发——RISC-V内核BLE MCU快速开发教程

CH573-09-BLE蓝牙安卓应用二次开发——RISC-V内核BLE MCU快速开发教程_第1张图片

一、基础工程搭建

在上一章最后一讲的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,然后在工程中修改,例如:
CH573-09-BLE蓝牙安卓应用二次开发——RISC-V内核BLE MCU快速开发教程_第2张图片

3、运行测试

修改后在真机中运行,测试数据收发,首先点击搜索,然后选择要连接的蓝牙,点击连接后在数据输入框中输入数据,点击发送,串口助手可以收到数据(十六进制显示):

CH573-09-BLE蓝牙安卓应用二次开发——RISC-V内核BLE MCU快速开发教程_第3张图片
发送没有问题然后测试数据接收,在串口助手中勾选16进制发送,输入“88”后发送,APP端可以接收到数据:
CH573-09-BLE蓝牙安卓应用二次开发——RISC-V内核BLE MCU快速开发教程_第4张图片
在上一讲中通过发送字符“1”和字符“0”控制LED,在这个安卓应用中也可以实现,字符“0”的ASCII码为48,换算成16进制为0x30,在安卓应用中发送“30”,在串口助手中同样可以看到LED的开关变化:
CH573-09-BLE蓝牙安卓应用二次开发——RISC-V内核BLE MCU快速开发教程_第5张图片
提示:调试信息中的“NO TIME OUT”可在下图中注释掉:
CH573-09-BLE蓝牙安卓应用二次开发——RISC-V内核BLE MCU快速开发教程_第6张图片

然后我们就可以通过修改安卓应用程序,实现自己所需要的功能,下面为本期教程的二次开发中遇到的一些问题与解决方法。

二、二次开发可能遇到的问题

1、工程适配

通过上面的教程,我们可以搭建或直接下载模板程序,我这里采用的后者,按上述操作可以完成基本通信,但经过大幅修改后(例如添加界面等)编译会出现错误,如果大家也遇到相关问题,可以参考下面的方法解决:

(1)添加Activity

(这里添加Activity的主要作用是用于触发编译运行时的错误)
NEW->Activity->Empty Activity
CH573-09-BLE蓝牙安卓应用二次开发——RISC-V内核BLE MCU快速开发教程_第7张图片
CH573-09-BLE蓝牙安卓应用二次开发——RISC-V内核BLE MCU快速开发教程_第8张图片

(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
    }

CH573-09-BLE蓝牙安卓应用二次开发——RISC-V内核BLE MCU快速开发教程_第9张图片

(3) Android resource linking failed

添加java版本指定后,再次点击RUN,会遇到新的问题“Android resource linking failed”:
CH573-09-BLE蓝牙安卓应用二次开发——RISC-V内核BLE MCU快速开发教程_第10张图片
解决方法:
首先进入“SDK Mangager”,查看“SDK Platform Tools”版本号,例如我这里是“33.0.3”:
CH573-09-BLE蓝牙安卓应用二次开发——RISC-V内核BLE MCU快速开发教程_第11张图片
修改:
CH573-09-BLE蓝牙安卓应用二次开发——RISC-V内核BLE MCU快速开发教程_第12张图片
再次运行:
CH573-09-BLE蓝牙安卓应用二次开发——RISC-V内核BLE MCU快速开发教程_第13张图片

(4)权限问题

这里我们修改AndroidManifest.xml文件,加入下面这句:

android:exported="true"

CH573-09-BLE蓝牙安卓应用二次开发——RISC-V内核BLE MCU快速开发教程_第14张图片
再次点击运行,此时程序可以运行,但是点击搜索时会闪退,因为权限需要补充,在MainActivity中的126行可以看到:
CH573-09-BLE蓝牙安卓应用二次开发——RISC-V内核BLE MCU快速开发教程_第15张图片
我们可以在文件中手动添加下面两个:

<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />

CH573-09-BLE蓝牙安卓应用二次开发——RISC-V内核BLE MCU快速开发教程_第16张图片

然后在需要的地方加入权限检查提示:
CH573-09-BLE蓝牙安卓应用二次开发——RISC-V内核BLE MCU快速开发教程_第17张图片
并把报错的“this”替换为“getApplicationContext()”
CH573-09-BLE蓝牙安卓应用二次开发——RISC-V内核BLE MCU快速开发教程_第18张图片
然后再次运行,就会发现所有功能正常使用了,接下来,我们可以自由的修改程序,完成自己的蓝牙应用开发啦。

你可能感兴趣的:(MCU快速开发教程,CH573)