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

news2024/11/16 21:25:08

在这里插入图片描述

一、基础工程搭建

在上一章最后一讲的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()”
在这里插入图片描述
然后再次运行,就会发现所有功能正常使用了,接下来,我们可以自由的修改程序,完成自己的蓝牙应用开发啦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1018865.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023最新玩客云刷机armbian,部署docker并配置各种常用容器镜像

#以下安装从基于 rootonecloud:~# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.2 LTS Release: 22.04 Codename: jammy刷机开始 &#xff08;以下刷机教程部分资料来源于&#xff1a;玩客云刷ARMBIAN系统…

linux查看进程对应的线程(数)

首先&#xff0c;top或ps查看进程列表&#xff0c;确定要查看的进程pid&#xff0c;如下面40698 查看进程的线程情况 查看进程&#xff1a;top -p 40698 查看线程&#xff1a;top -p 40698 -d 3 -H 其中-d是刷新频率 可看到此进程共211个线程&#xff0c;运行中的是211个。…

C++基础-类和对象(下)

文章目录 前言一、构造深入1.初始化列表2.隐式类型转换1.隐式类型转换2.explicit 3.委托构造 二、类的静态成员1.静态成员声明2.静态成员定义3.静态成员特性 三、重载运算符和类型转化1.关系及算数运算符重载2.递增递减运算符重载及如何区分3.赋值运算符重载4.重载输入输出运算…

【基础篇】五、基于SpringBoot来整合SSM的案例(上)

文章目录 0、创建模块1、实体类的快速开发Lombok2、数据层开发&#xff08;CRUD&#xff09;3、分页4、条件查询5、业务层的标准开发6、业务层的快速开发&#xff08;基于MyBatisPlus&#xff09;7、表现层开发 接下来在SpringBoot下&#xff0c;把Spring、SpringMVC、MyBatis整…

项目进度管理(3-3)PERT计划评审技术详解

1 计划评审技术起源 PERT&#xff08;Program Evaluation and Review Technique&#xff0c;项目评估和审查技术&#xff09;的起源可以追溯到20世纪50年代&#xff0c;与美国国防部和美国海军的项目管理有关。 PERT的发展始于20世纪50年代初&#xff0c;当时美国国防部正面临…

ConfigMaps-2

文章目录 主要内容一.Volume 挂载 ConfigMap1.创建一个Pod&#xff0c;起挂载的内容&#xff0c;将来自下面的configmap&#xff1a;代码如下&#xff08;示例&#xff09;: 2.解释 二.环境变量 ConfigMap1.创建一个名为 mysqlpass 且包含 passwordABCabc123 的 configmap&…

第一、二题见贴图第三题 实现求1-100之间的质数?

print("模式A") while True: for i in range (1,7): for j in range(1, 7): if j < i: print(j,end"\t") print() break print() print("模式B") while True: for i in range (6,…

【测开】Java快转Python 学习路径记录

写在前面 工作后需要用python&#xff0c;记录下学习的一些资料和总结&#xff0c;仅供参考&#xff0c;希望对你有帮助。 2023/9/8 (碎碎念&#xff1a;我太懂工作要用时自己却不会的感觉了…心好累&#xff0c;问大家怎么学就说这简单…md记录一下&#xff09; Part.1 对比 …

基于Java汽车服务商城系统 设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

知识图谱(3)关系抽取

信息抽取旨在从大规模非结构化或半结构化的自然语言文本中抽取结构化信息。关系抽取是其中的重要子任务&#xff0c;主要目的是从文本中识别实体并抽取实体之间的语义关系。 比如有下面的文本&#xff1a; International Business Machines Corporation (IBM or the company) …

2019-2021年上市公司润灵ESG评分评级数据

2019-2021年上市公司润灵ESG评分评级数据 1、时间&#xff1a;2019-2021年 2、指标&#xff1a;股票代码、股票简称、评级年份、所属指数名称、GICS行业一级分类、GICS行业一级分类代码、GICS行业二级分类、GICS行业二级分类代码、GICS行业三级分类、GICS行业三级分类代码、E…

【Qt 图形视图框架】QGraphics分析及使用

组成 Qt 图形视图框架分为三部分&#xff1a;场景、视图、图元。 场景对于程序来说&#xff0c;场景是不可见的&#xff0c;是一个抽象的管理图形项的容器。 可以向场景中添加图形项&#xff0c;比如&#xff1a;圆形、矩形、三角形等等 此外&#xff0c;还可以获取场景中的某…

games101 作业2

题目 光栅化一个三角形 1. 创建三角形的 2 维 bounding box。 2. 遍历此 bounding box 内的所有像素&#xff08;使用其整数索引&#xff09;。然后&#xff0c;使用像素中心的屏幕空间坐标来检查中心点是否在三角形内。 3. 如果在内部&#xff0c;则将其位置处的插值深度值 (…

GICv3学习

GICv3学习 参考文档&#xff1a; 《corelink_gic600_generic_interrupt_controller_technical_reference_manual_100336_0106_00_en》 《IHI0069H_gic_architecture_specification》 《ECM0495013B_GIC_Stream_Protocol》 一、GICv3寄存器接口 接口如下图所示&#xff1a…

手搭手入门Mybatis-Plus配置多数据源

https://baomidou.com/ Mybatis-Plus介绍 为简化开发而生 MyBatis-Plus(opens new window)&#xff08;简称 MP&#xff09;是一个 MyBatis (opens new window) 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 特性 无…

Python 多线程概述

视频版教程 Python3零基础7天入门实战视频教程 几乎所有的操作系统都支持同时运行多个任务&#xff0c;一个任务通常就是一个程序&#xff0c;每一个运行中的程序就是一个进程。当一个程序运行时&#xff0c;内部可能包含多个顺序执行流&#xff0c;每一个顺序执行流就是一个线…

指针笔试题

目录 指针笔试题 NO1. NO2. NO3. NO4. NO5.✔ NO6. NO7. NO8.✔ 今天接着继续指针练习。&#x1f642;&#x1f642;&#x1f642; 指针笔试题 NO1. //指针的类型 //转化后的类型 //解引用访问根据指针类型访问几个字节 //整型在内存中的存储------小端存储 //*解引…

项目上线部署--》服务器部署流程(二)安装Nginx、Node.js、MySQL

阅读本篇文章前请先阅读项目上线部署--》服务器部署流程&#xff08;一&#xff09; 目录 &#x1f31f;安装Nginx 先登录远程服务器&#xff0c;安装依赖包 下载并解压包 &#x1f31f;安装Node.js 安装nodejs进程管理工具 &#x1f31f;安装MySQL &#x1f31f;写在最…

透过《眼睛的故事》:需求为何成为纪录片的“价值锚点”?

我们正处在一个内容过载、追求流量的时代。 对于观众来说&#xff0c;这是幸运的&#xff0c;也是不幸的。一方面&#xff0c;相比以前能接受到的内容指数级增长&#xff0c;自己的视野无限扩大&#xff0c;但另一方面&#xff0c;“流量思维”下粗制滥制的内容不在少数&#…

一百七十八、ClickHouse——海豚调度执行ClickHouse的.sql文件

一、目的 由于数仓的ADS层是在ClickHouse中&#xff0c;即把Hive中DWS层的结果数据同步到ClickHouse中&#xff0c;因此需要在ClickHouse中建表&#xff0c;于是需要海豚调度执行ClickHouse的.sql文件 二、实施步骤 &#xff08;一&#xff09;第一步&#xff0c;海豚建立Cl…