HarmonyOS 鸿蒙Next 蓝牙连接报错

HarmonyOS 鸿蒙Next 蓝牙连接报错

let clientNumber = -1;
let clientSocket = (code: BusinessError, number: number) => {
if (code) {
console.error('sppListen error, code is ' + code.message);
return;
} else {
console.log('bluetooth serverSocket Number: ' + number);
// 获取的clientNumber用作客户端后续读/写操作socket的id。
clientNumber = number;
}
}
let sppOption:socket.SppOptions = {uuid: '00001101-0000-1000-8000-00805F9B34FB', secure: false, type: 0};
try {
socket.sppConnect('04:7F:0E:2C:27:02', sppOption, clientSocket);
} catch (err) {
console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}

报错2900099


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

2 回复

socket.sppConnect(‘04:7F:0E:2C:27:02’, sppOption, clientSocket);

这个接口里的mac地址不可以直接使用设备真实的物理地址,需要先使用connection.getPairedDevices()接口获取当前蓝牙设备生成的随机地址,然后使用这个地址进行连接,主要需要先向用户申请蓝牙权限。

参考demo:

import { BusinessError } from '@kit.BasicServicesKit';
import { abilityAccessCtrl, common, PermissionRequestResult, Permissions } from '@kit.AbilityKit';

@Component
@Entry
export struct DSRefresh {
  permissions: Array<Permissions> = ['ohos.permission.ACCESS_BLUETOOTH'];

  reqPermissionsFromUser(permissions: Array<Permissions>): void {
    let context: Context = getContext(this) as common.UIAbilityContext;
    let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
    // requestPermissionsFromUser会判断权限的授权状态来决定是否唤起弹窗
    atManager.requestPermissionsFromUser(context, permissions).then((data: PermissionRequestResult) => {
      let grantStatus: Array<number> = data.authResults;
      let length: number = grantStatus.length;
      for (let i = 0; i < length; i++) {
        if (grantStatus[i] === 0) {
          // 用户授权,可以继续访问目标操作
        } else {
          // 用户拒绝授权,提示用户必须授权才能访问当前页面的功能,并引导用户到系统设置中打开相应的权限
          return;
        }
      }
      // 授权成功
    }).catch((err: BusinessError) => {
      console.error(`Failed to request permissions from user. Code is ${err.code}, message is ${err.message}`);
    })
  }

  aboutToAppear(): void {
    this.reqPermissionsFromUser(this.permissions)
  }
build() {
  Column() {
    Button()
      .onClick(() => {
        let devices: Array<string> = []
        try {
          devices = connection.getPairedDevices();
        } catch (err) {
          console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
        }
        if (devices.length == 0) {
          return
        }
        socket.sppConnect(devices[0], {
          uuid: '00001101-0000-1000-8000-00805F9B34FB',
          secure: true,
          type: 0
        }, (code, socketID) => {
          if (code != null) {
            console.error('sppConnect error, code = ' + (code as BusinessError).code);
            return;
          }
          console.info('sppConnect success, socketId = ' + socketID);
        })
      })
      .height('100%')
  }
}
}

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


针对HarmonyOS 鸿蒙Next蓝牙连接报错的问题,以下是一些可能的解决方案:

  1. 确认设备状态:确保您的设备已开启蓝牙功能,并且处于可发现状态。同时,确保蓝牙设备支持您尝试的连接类型(如BLE或经典蓝牙)。
  2. 检查权限与配置:在HarmonyOS中,确保您的应用已正确声明并获取了蓝牙相关权限,如ohos.permission.BLUETOOTHohos.permission.BLUETOOTH_ADMIN。此外,检查蓝牙配置是否正确。
  3. 设备兼容性:确认您的设备与蓝牙设备之间是否存在兼容性问题。有时,设备间的硬件或软件差异可能导致连接失败。
  4. 连接距离与干扰:确保您的手机与蓝牙设备之间的距离在有效范围内(通常建议10米以内),并远离可能产生无线干扰的源头,如微波炉、路由器等。
  5. 系统更新:检查您的HarmonyOS系统是否为最新版本,因为系统更新可能包含对蓝牙连接问题的修复。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部