HarmonyOS SPP蓝牙连接报错?

在使用经典蓝牙(spp)模块进行蓝牙连接时,系统报错{“code”:2900003,“message”:“BussinessError 2900003: Bluetooth switch is off.”}

我这边目前的流程是,手机作为客户端发起配对,配对成功之后我会去连接打印机,但是连接之后就会报这个错{“code”:2900003,“message”:“BussinessError 2900003: Bluetooth switch is off.”}

示例代码:

connection.pairDevice(deviceId);
connection.on('bondStateChange', (bondState: connection.BondStateParam) => { // data为回调函数入参,表示配对的状态
  if (bondState.state == connection.BondState.BOND_STATE_BONDED) {
    let sppOption: socket.SppOptions = {
      uuid: '00001810-0000-1000-8000-00805F9B34FB',
      secure: false,
      type: 0
    };
    socket.sppConnect(deviceId, sppOption, (err: BusinessError, number: number) => {
      console.log(JSON.stringify(err))
    });
  } else if (bondState.state == connection.BondState.BOND_STATE_BONDING) {
    console.log("配对中...")
  } else {
    failCallback && failCallback({ errCode: -1, errMsg: "蓝牙配对失败" });
  }
});
阅读 673
1 个回答

关于2900003问题: 首先,远端设备是什么设备?是否适配socked模块功能? 正常情况下,socket通过sppConnect连接的对端设备,是需要对端设备已经通sppListen和sppAccept接口创建服务监听、等待客户端连接的,这一点需要确认一下。

其次,若对端设备已经通过sppListen和sppAccept接口创建服务监听、等待客户端连接,请确保对端设备创建监听时的uuid和客户端使用到的uuid保持一致。

最后,若是上述都不行的话,请尝试清除与对端设备的基本蓝牙连接信息,重新建立基础连接,然后再进行socket连接测试。

如果打印机已经具备socket模块功能,只需要调用sppConnect连接打印机即可。

如下写法:

link() {
  socket.sppConnect(this.deviceId, { uuid: '00001126-0000-1000-8000-00805f9b34fb', secure: false, type: 0 },
    (code, socketID) => {
      if (code != null) {
        console.error('客户端sppConnect error, code = ' + (code as BusinessError).code);
        return;
      }
      this.clientNumber = socketID
      console.info('客户端sppConnect success, socketId = ' + socketID);
    })
}

连接时请检查蓝牙开启状态,deviceId和uuid配置是否有误

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进