OpenHarmony经典蓝牙之配对详解 原创 精华
作者:马魁
1. 简介
要使用设备中的蓝牙功能,需要先进行设备扫描,然后对扫描到的设备进行配对连接。
蓝牙配对就像是两个蓝牙设备间的注册。配对类似于两个设备互相交换电话号码或其他信息来保证互相的信息确认。且在第一次对设备进行配对后,设备已经保存了必要的信息,因此不需要重复这个配对过程就可以再次轻松地连接。
在OpenHarmony设备中,进入蓝牙设置打卡蓝牙开关后,就会进行蓝牙扫描,我们可以通过点击扫描到的某个设备来进行配对请求。
2. 配对请求流程
2.1 应用侧配对请求
对扫描到的某个设备进行点击操作,请求配对,应用侧代码如下( 代码路径:applications\standard\settings\product\phone\src\main\ets\MainAbility\pages\bluetooth.ets):
点击事件的处理在onClick函数中,通过调用this.pairDevice(item)来进行对选中的设备进行配对请求。
pairDevice(item)函数接口如下:
该接口通过继续调用this.controller.pair()方法请求配对,该方法如下(代码路径:applications\standard\settings\product\phone\src\main\ets\MainAbility\controller\bluetooth\BluetoothDeviceController.ts):
通过代码可以看到,先是监听了扫描设备的配对pin码并拿到其设备地址,再通过BluetoothModel.pairDevice(deviceId)方法传入设备地址进行配对请求。
其中pairDevice方法最终是调用NAPI的pairDevice(deviceId)接口来实现。
2.2 NAPI侧到C++侧的配对请求流程
NAPI侧到c++侧的主要流程如下图所示:
主要的流程分为三个阶段:
- napi_bluetooth_host.cpp的NAPI侧接口,通过IPC调用bluetooth SA的接口
- server到adapter的调用
- adapter到stack的调用,最终在stack中向下调用蓝牙驱动外围子系统的接口
3. 配对响应流程
3.1 C++到NAPI侧的配对响应流程
配对成功后的响应流程如下图所示:
该流程反向对应请求阶段三个流程,从协议栈stack到adapter,再到NAPI侧的observer。
3.2 应用设置侧的响应监听接口
应用设置侧对配对成功的监听主要代码如下:
subscribeBondStateChange函数用来监听配对状态。当配对成功后,会接着调用BluetoothModel.connectDevice(data.deviceId)接口来进行profile的链接。
4. 应用侧配对log流程
从配对请求到配对成功响应的settings应用的主要log如下:
更多原创内容请关注:深开鸿技术团队
入门到精通、技巧到案例,系统化分享HarmonyOS开发技术,欢迎投稿和订阅,让我们一起携手前行共建鸿蒙生态。
厉害,每天都能学到新知识!
大佬,图片模糊看不清,请求上传附近