HarmonyOS蓝牙搜索报错BussinessError 2900100如何解决?

新手上路,请多包涵

关于harmonyos进行蓝牙搜索时,调用 bluetoothManager.startBluetoothDiscovery();出现连接蓝牙设备失败: Error: BussinessError 2900100: trans exception.这个报错,请问有人知道该如何解决吗
try {

  console.info("faxian");
  // 检查蓝牙是否开启
  const state =  bluetoothManager.getState();
  if (state !== bluetoothManager.BluetoothState.STATE_ON) {
    // 请求用户开启蓝牙
    bluetoothManager.enableBluetooth();
    console.info("请求打开蓝牙");
  }
  else
  {
    console.info("已打开蓝牙");
  }
  // 扫描
  let deviceId;
  function onReceiveEvent(data) {
    deviceId = data;
    console.info('BLE scan device find result = '+ JSON.stringify(data));
    console.info("120");
  }

  bluetoothManager.BLE.on("BLEDeviceFind", onReceiveEvent);
    // bluetoothManager.startBluetoothDiscovery();
    bluetoothManager.startBluetoothDiscovery();
    bluetoothManager.BLE.startBLEScan(
      [{
        deviceId:"22:4B:B2:C9:09:24",
        name:"test",
        serviceUuid:"00001888-0000-1000-8000-00805f9b34fb"
      }],
      {
        interval: 500,
        dutyMode: bluetoothManager.ScanDuty.SCAN_MODE_LOW_POWER,
        matchMode: bluetoothManager.MatchMode.MATCH_MODE_AGGRESSIVE,
      }
    );
} catch (err) {
  console.error("连接蓝牙设备失败:", err);
  console.info("113");
}

使用的是官方提供的API,希望各位大佬帮忙出出注意

阅读 932
avatarAI BotBETA
### 解决方案

HarmonyOS 蓝牙搜索报错 `BussinessError 2900100` 通常表示在蓝牙扫描或设备发现过程中发生了传输异常。针对你提供的代码和错误,以下是一些可能的解决步骤:

1. **检查设备ID和UUID**:
   - 确认 `deviceId` 在 `startBLEScan` 方法中是否应该被指定。通常,设备ID在扫描过程中是用来过滤特定设备的,但如果你不是特定地寻找某个已知设备,可以尝试移除 `deviceId` 参数。
   - 确认 `serviceUuid` 是否正确无误,并且该服务确实存在于目标蓝牙设备上。

2. **权限和状态检查**:
   - 确保应用已正确申请并获得了蓝牙权限。
   - 检查蓝牙是否确实已开启,并且在调用 `startBluetoothDiscovery` 或 `startBLEScan` 前,蓝牙状态是 `STATE_ON`。

3. **扫描参数调整**:
   - 尝试调整扫描参数,如 `interval`, `dutyMode`, 和 `matchMode`,看看是否有影响。
   - 如果可能,尝试使用默认的扫描参数来排除参数设置错误的可能性。

4. **错误处理和日志**:
   - 增加更多的日志输出,尤其是在调用蓝牙相关API前后,以便更好地了解错误发生的上下文。
   - 捕获并处理所有可能的异常,包括在 `enableBluetooth` 和 `startBluetoothDiscovery` 等方法调用时可能抛出的异常。

5. **设备兼容性**:
   - 确认你的代码在目标HarmonyOS设备上是兼容的。不同的设备和系统版本可能会有不同的行为。

6. **API文档和更新**:
   - 查阅最新的HarmonyOS蓝牙API文档,确保你使用的API和方法是最新的,且没有已知的bug。
   - 检查是否有关于此错误的官方说明或更新。

7. **重启蓝牙和设备**:
   - 在某些情况下,重启蓝牙服务或整个设备可以解决一些临时的问题。

如果以上步骤仍然无法解决问题,建议联系HarmonyOS的开发支持团队或在相关开发者论坛寻求更具体的帮助。
1 个回答

错误代码“2900100: trans exception”表明在蓝牙传输过程中发生了异常。
deviceId:"22:4B:B2:C9:09:24",
name:"test",
serviceUuid:"00001888-0000-1000-8000-00805f9b34fb",
这三个参数各自都需要重新拿取,需要扫描附近设备,将设备值拿取到,你的代码不能直接复制粘粘,因为这个是案例,需要根据使用情况做出修改
具体实现案例参考:https://blog.51cto.com/harmonyos/6205722#:~:text=OpenHarmony%...,3%203.%E9%80%BB%E8%BE%91%E6%B5%81%E7%A8%8B%20%E9%A6%96%E5%85%88%E6%9C%BA%E9%A1%B6%E7%9B%92%E5%9C%A8%E5%BC%80%E5%A7%8B%E7%9A%84%E6%97%B6%E5%80%99%E8%8E%B7%E5%8F%96%E8%93%9D%E7%89%99%E7%9B%B8%E5%85%B3%E6%9D%83%E9%99%90%EF%BC%8C%E7%84%B6%E5%90%8E%E9%80%9A%E8%BF%87OpenHarmony%E6%8F%90%E4%BE%9B%E7%9A%84%E8%93%9D%E7%89%99%E6%8E%A5%E5%8F%A3%E6%89%93%E5%BC%80%E8%93%9D%E7%89%99%EF%BC%8C%E6%8E%A5%E7%9D%80%E8%AE%A2%E9%98%85%E5%8F%91%E7%8E%B0BLE%E8%AE%BE%E5%A4%87%E5%8F%91%E7%8E%B0%E4%BA%8B%E4%BB%B6%EF%BC%8C%E7%84%B6%E5%90%8E%E9%80%9A%E8%BF%87OpenHarmony%E6%8F%90%E4%BE%9B%E7%9A%84%E8%93%9D%E7%89%99%E6%8E%A5%E5%8F%A3%E5%BC%80%E5%90%AFBLE%E8%AE%BE%E5%A4%87%E6%89%AB%E6%8F%8F%EF%BC%8C%E5%BD%93%E5%8F%91%E7%8E%B0%E5%88%B0%E4%BA%86BLE%E8%93%9D%E7%89%99%E8%AE%BE%E5%A4%87%E5%90%8E%EF%BC%8C%E8%BF%9B%E8%A1%8C%E4%B8%8A%E6%8A%A5%EF%BC%8CBLE%E8%AE%BE%E5%A4%87%E5%8F%91%E7%8E%B0%E4%BA%8B%E4%BB%B6%E8%A7%A6%E5%8F%91%EF%BC%8C%E8%8E%B7%E5%8F%96%E5%88%B0%E6%9D%A5%E8%87%AABLE%E8%AE%BE%E5%A4%87%E7%9A%84%E5%B9%BF%E6%92%AD%E4%BF%A1%E6%81%AF%E5%8C%85%EF%BC%8C%E7%84%B6%E5%90%8E%E8%BF%9B%E8%A1%8CBLE%E8%93%9D%E7%89%99%E8%BF%9E%E6%8E%A5%E3%80%82%204%204.%E5%AE%9E%E7%8E%B0%E8%BF%87%E7%A8%8B%204.1%20%E8%8E%B7%E5%8F%96%E8%93%9D%E7%89%99%E7%9B%B8%E5%85%B3%E6%9D%83%E9%99%90%20
参考文档(低功耗蓝牙开发实践):https://developer.huawei.com/consumer/cn/doc/best-practices-V...

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