基于Android蓝牙通信技术的优化

基于Android蓝牙通信技术的优化

2023年6月28日发(作者:)

基于Android蓝牙通信技术的优化

【摘要】本文立足于Android系统的蓝牙通信技术,介绍了目前软件应用中常用的蓝牙数据传输的方法和出现的问题。通过分析产生问题的原因,从蓝牙的连接、配对、传输效率三个角度,提出了优化方法。并以心电数据做为对象,进行蓝牙通信实验,通过实验数据验证了本文提出的优化方法的有效性。

【关键词】蓝牙;Android;物联网;心电数据

引言

随着智能设备的应用越来越丰富和成熟,蓝牙通信技术的应用也分布于智能家庭、移动健康医疗等多个领域。蓝牙通信技术包含了传感器技术、识别技术、移动通信技术等,这些技术与物联网密切相关。Android操作系统是一种基于Linux的自由及开放源代码的操作系统,具有开放性、易用性、免费性等特点。基于Android操作系统的软件研发已成为智能移动平台开发的热点。例如上海宏康科技信息有限公司推出的mECG-101心电检测仪,就是通过蓝牙通信技术将数据发送到Android设备上进行心电数据的查看,这是一个结合了Android与蓝牙通信技术的应用实例。

d系统

Android系统自顶向下包括5层: 应用层、应用框架层、组件库和Dalvik 虚拟机和Linux内核层。

应用层:装配一个核心应用程序集合,包括电子邮件客户端、SMS程序、日历、地图、浏览器、联系人和其他设置;

应用框架层:提供了供软件开发者使用的组件,包括视图、内容提供者、资源管理器、通知管理器、活动管理器;

组件库:是一个C/C++库的集合,供Android系统的各个组件使用,并通过应用框架层将接口开放给开发者;

Dalvik虚拟机:一个java虚拟机,每一个Android应用程序是Dalvik虚拟机中的实例,运行在他们自己的进程中,在一个设备可以高效地运行多个虚拟机。

Linux内核层:Android的基础,提供了底层服务例如安全、内存管理、进程管理、网络堆栈、驱动模型。Linux内核层也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。

2.传统的Android蓝牙操作及问题

在Android中,一般对蓝牙模块的操作通常分为搜索、连接、接收数据三种。依次进行这些操作则可以进行蓝牙数据的传输。

2.1 搜索

通过在软件中调用startDiscovery进行蓝牙设备的搜索,然后向用户提供一个已收到的蓝牙设备列表界面,用户点击指定的蓝牙设备后,进入下一步。

2.2 连接与配对

为心电检测仪和移动监护端设定同样的UUID,通过connect方法实现设备之间的连接,系统会提示用户输入配对验证码。配对成功后,可以获取蓝牙套接字BluetoothSocket,并通过对此套接字的操作可以完成数据收发、检验连接、断开连接等操作。

2.3 数据接收

通过BluetoothSocket的read方法,可以进行对应的蓝牙数据接收操作。软件一般构造一个蓝牙专用的收发线程,在这个线程中利用一个循环来进行蓝牙数据的收发操作。

2.4 问题分析

需要通过蓝牙传输的数据通常具有实时性强、采样率大、精度高等特点。如果利用以上方法进行数据的传输,会有以下问题:

(1)在实际使用的过程中,如果每次通过搜索,再提供列表给用户进行选择,不仅搜索的时间很长,也使得用户的操作复杂;

(2)每次连接都需要输入一个配对码,增大了用户的使用复杂度;

(3)数据接收是阻塞的,经实践发现,即使是在一个线程中进行调用,依然会造成软件假死的情况,影响性能,不断地循环也会导致设备资源的大量浪费。

3.蓝牙通信技术的优化

3.1 搜索优化

考虑到蓝牙搜索是为了找到一个匹配的蓝牙设备地址,而用户在大多数情况下,其设备是不变的,所以利用Android提供的偏好设置,可以有效解决这个问题。由于每个设备有命名规范,软件只需要对搜索到的设备列表进行名称的比对,就能确定设备地址,而无需用户手动选择。

(1)当无历史连接记录时,搜索蓝牙设备,找到和设备命名规则符合的设 备,将其地址存入偏好设置中;

(2)有历史记录时,直接连接偏好设置中存储的MAC地址,如果可以连接,则结束;如果连接失败,再进行搜索。

3.2 配对优化

配对码是蓝牙模块出厂时设定好的,常为“0000”或“1234”,所以,软件应该提供一个方法,帮助用户自动填写配对码。Android的蓝牙接口中,有3个隐藏的接口:createBond、setPin、cancelPairingUserInput。creartBond用于与设备进行配对,在调用时,会触发系统一个请求输入配对码的意图,收到此意图后,调用setPin,并设置配对码,与此同时调用cancelPairingUserInput,取消输入配对码的对话框,这样,就可以自动进行配对。

3.3 数据传输优化

数据传输的优化分为两方面:一是将阻塞的接收调用优化为非阻塞的调用;二是优化蓝牙数据传输的资源利用效率。

(1)非阻塞的调用

蓝牙数据传输产生阻塞的原因,是由于当蓝牙通信的IO管道中无数据时,read方法会一直等待,而程序指令不向下执行,为了解决这个问题,就需要先判断在IO管道中是否有数据,如果有则进行读操作,否则等待。

Android蓝牙接口中,通过蓝牙套接字,可以获取一个输入流InputStream,运用输入流的availabe方法,获取流中剩余的数据量。若其返回0,则说明流中无数据,此时可以跳过read,如果其不为0,则说明流中有数据需要接收,调用read,这样就保证了每次read被调用时,都是输入流中都是有数据存在的,read也就不会阻塞住了。

发布者:admin,转转请注明出处:http://www.yc00.com/news/1687956357a60719.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信