HarmonyOS鸿蒙Next中SPP蓝牙连接报错

HarmonyOS鸿蒙Next中SPP蓝牙连接报错

在使用经典蓝牙(spp)模块进行蓝牙连接时,系统报错{"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: "蓝牙配对失败" });
    }
  });

更多关于HarmonyOS鸿蒙Next中SPP蓝牙连接报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS鸿蒙Next中SPP蓝牙连接报错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


关于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配置是否有误。

回到顶部