HarmonyOS鸿蒙Next基于uniapp开发蓝牙功能,使用getBLECharacteristics看看获取characteristics是:[]

HarmonyOS鸿蒙Next基于uniapp开发蓝牙功能,使用getBLECharacteristics看看获取characteristics是:[] 【问题描述】基于uniapp开发蓝牙功能,使用getBLECharacteristics看看获取characteristics是:[],characteristics获取不到没办法开展,这是什么原因,有没有什么方案可以解决???

【问题现象】使用getBLECharacteristics看看获取characteristics是:[],获取不到蓝牙特征

【版本信息】

插件id:srh-BluetoothAdapter

插件链接:鸿蒙NEXT蓝牙连接及数据写入 - DCloud 插件市场


更多关于HarmonyOS鸿蒙Next基于uniapp开发蓝牙功能,使用getBLECharacteristics看看获取characteristics是:[]的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS Next中,使用Uniapp开发蓝牙功能时,调用getBLECharacteristics返回空数组[],通常是由于以下原因:

  1. 服务UUID未正确指定或设备不支持。
  2. 蓝牙连接未完全建立或已断开。
  3. 设备特征值不可读或需要特定权限。

请检查服务UUID是否正确、连接状态是否稳定,并确保设备特征值可访问。

更多关于HarmonyOS鸿蒙Next基于uniapp开发蓝牙功能,使用getBLECharacteristics看看获取characteristics是:[]的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next上通过uni-app开发蓝牙功能,调用getBLECharacteristics返回空数组,通常是由于蓝牙服务(Service)发现流程未完成或权限配置问题导致的。

核心原因与排查步骤:

  1. 服务发现未完成:在获取特征值(Characteristics)前,必须确保已成功发现并指定了目标蓝牙服务(Service)。请按以下顺序检查:

    • 确认已成功调用getBLEDeviceServices获取到设备服务列表。
    • 检查传入getBLECharacteristicsserviceId参数是否准确,必须与发现的服务UUID完全匹配。
    • 确保在getBLEDeviceServices的成功回调后再调用getBLECharacteristics
  2. 权限配置:HarmonyOS Next对蓝牙权限有严格声明要求。在module.json5配置文件中,需确认已添加以下权限:

    {
      "module": {
        "requestPermissions": [
          {
            "name": "ohos.permission.DISCOVER_BLUETOOTH"
          },
          {
            "name": "ohos.permission.MANAGE_BLUETOOTH"
          },
          {
            "name": "ohos.permission.USE_BLUETOOTH"
          },
          {
            "name": "ohos.permission.LOCATION"
          }
        ]
      }
    }
    

    同时,部分蓝牙操作需要位置权限,请注意在真机上授权。

  3. 设备与服务匹配:确认目标蓝牙设备确实提供了你尝试访问的Service。可通过第三方蓝牙调试工具(如nRF Connect)扫描设备,验证其广播的服务和特征值是否存在且UUID正确。

  4. 连接状态:确保蓝牙连接已成功建立(createBLEConnection成功),并且连接状态稳定。在连接尚未完全建立或已断开时获取特征值会失败。

  5. 插件兼容性:你使用的第三方插件srh-BluetoothAdapter可能尚未完全适配HarmonyOS Next的底层蓝牙API变更。建议:

    • 查阅该插件在HarmonyOS Next环境下的具体说明或更新日志。
    • 考虑在HarmonyOS Next开发中,直接使用官方的@ohos.bluetooth API或确保插件已明确支持Next版本。

建议的代码流程检查: 确保你的调用顺序符合以下逻辑:

// 1. 创建连接
uni.createBLEConnection({
  deviceId: deviceId,
  success: (res) => {
    // 2. 获取服务
    uni.getBLEDeviceServices({
      deviceId: deviceId,
      success: (services) => {
        // 找到目标serviceId
        let targetServiceId = services.services[0].uuid; // 示例,请按实际目标服务获取
        // 3. 获取特征值
        uni.getBLECharacteristics({
          deviceId: deviceId,
          serviceId: targetServiceId, // 确保此ID正确
          success: (chars) => {
            console.log('characteristics:', chars.characteristics);
          }
        });
      }
    });
  }
});

请重点检查服务发现流程权限配置,这两点是导致特征值获取为空的最常见原因。如果问题依旧,需验证插件对HarmonyOS Next的兼容性。

回到顶部