Android蓝牙通信技术如何优化?

随着智能设备的应用越来越丰富和成熟,蓝牙通信技术的应用也分布于智能家庭、移动健康医疗等多个领域。蓝牙通信技术包含了传感器技术、识别技术、移动通信技术等,这些技术与物联网密切相关。

Android 操作系统是一种基于Linux 的自由及开放源代码的操作系统,具有开放性、易用性、免费性等特点。基于 Android 操作系统的软件研发已成为智能移动平台开发的热点。例如某公司推出的 mECG-101 心电检测仪,就是通过蓝牙通信技术将数据发送到Android 设备上进行心电数据的查看,这是一个结合了Android 与蓝牙通信技术的应用实例。

Android蓝牙通信技术如何优化?_第1张图片

1.Android 系统

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.蓝牙通信技术的优化

Android蓝牙通信技术如何优化?_第2张图片

3.1 搜索优化

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

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

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

3.2配对优化

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

出处 电子世界

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

作者 万君亚

参考资料

https://www.hooketech.com/android-bluetooth-communication.html

你可能感兴趣的:(android)