鸿蒙系统的蓝牙连接功能为何会偶尔出现连接失败的情况?

鸿蒙系统的蓝牙连接功能为何会偶尔出现连接失败的情况?

阅读 493
1 个回答
- 对于蓝牙 GATT 连接获取服务失败的情况,getServices 接口需要 GATT 成功连接后才会调用成功,可以通过注册连接回调,当回调中返回成功连接状态后,再调用 getServices 接口获取服务信息。首先需确认是否使用双端设备进行测试连接,ble 模块设计服务端和客户端,需要使用双端设备才可以成功连接测试。单设备内同时创建 createGattClientDevice 和 createGattServer 是没法进行服务端和客户端连接测试的。其次,.on('connectionStateChange') 方法是服务端的方法,应改成 on('BLEConnectionStateChange') 客户端的方法,判断连接成功后在其中调用服务发现接口。
- 对于通过 socket.sppConnect 连接蓝牙报错“2900003 Bluetooth switch is off.”的情况,SPP 必须要双端交互才能实现。大致逻辑如下:
  1. 服务端调用 sppListen 接口,回调中返回的 number 为 server socket ID,这个值作为调用 sppAccept 接口的入参 number。
  2. 服务端调用 sppAccept 接口时,回调中返回的 number 为 client socket ID,这个值作为调用 sppWrite 接口的入参 number。
  3. 客户端调用 sppConnect 接口,回调中返回的 number 为 client socket ID(与 2 中 number 一致)这个值作为调用 sppWrite 接口的入参 number。
  4. 一端调用 on('sppRead') 接口订阅 spp 读请求事件,入参使用 client socket ID。
  5. 另一端设备调用 sppWrite 接口,入参使用 client 。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进