当前位置: 首页 > 知识库问答 >
问题:

在Chrome中使用实验性BLE扫描发现的蓝牙设备上访问GATT服务器

颜均
2023-03-14

我正在开发一个POC,我使用实验性的BLE扫描接口来发现多个蓝牙设备,并从web应用程序连接到它们的GATT服务。

使用导航器请求单个设备。蓝牙。requestDevice(请求设备)生成一个可以连接到GATT服务器的设备。

当我尝试使用Request estLEScan发现设备时,我收到的设备不允许我连接到GATT服务器。

  const [ devices, dispatch ] = useReducer(reducer, {});
  const scanClick = () => {
    navigator.bluetooth.requestLEScan({
      acceptAllAdvertisements: true,
    }).then((scan) => {
      setTimeout(() => scan.stop(), 10000);
    });
    navigator.bluetooth.addEventListener('advertisementreceived', (event) => {
      console.log("DEVICE DETECTED", event);
      parseBluetoothDevice(event.device).then(x => x && dispatch(x));
    });
  }

const parseBluetoothDevice = async (device) => {
  // Should return a representation with the device information I want to display
  await device.gatt.connect();
  ...
}

对设备的调用。关贸总协定。connect()引发错误:

未授权GATT操作

如何获得授权访问检测到的设备上的GATT服务器?

是我需要调用权限的问题。request(),蓝牙尚未实现?(蓝牙实施状态)

我没有设置acceptAllAdvertisement,而是尝试使用我知道我的设备支持的服务UUID通过过滤器,我想查询,但没有看到任何扫描结果。

我正在MacOS上运行Chrome 83.0.4103.97,并启用了“实验性web功能”。

共有1个答案

鲜于光赫
2023-03-14

requestLEScan()API仅授予启动扫描和查看来自附近设备的播发数据包的权限,但不授予连接到这些设备的权限。要做到这一点,您需要使用requestDevice()并将您感兴趣的服务添加到过滤器或optionalServices中。

Chrome,当Request estDevice()要求用户选择要允许站点连接的蓝牙设备时显示的提示,而Request estLEScan()显示的提示仅询问用户是否要允许站点扫描附近的蓝牙设备。这就是您无法连接到这些设备的原因。

 类似资料:
  • 我正在与Bluez一起使用带有USB蓝牙加密狗的TinyCore linux盒。我们使用示例gatt服务器添加电池服务以发送降低的电池电量。使用蓝牙,我们的控制器(USB蓝牙加密狗)的信息显示服务: 我们的目标是在Android应用程序上阅读此内容,但在我们的自定义应用程序和示例BLE扫描应用程序中,我们看到的唯一服务是00001800(通用访问配置文件)和00001801(通用属性配置文件)。

  • 我试图用BLE API扫描附近的蓝牙设备,但它似乎不起作用 我已经在清单中添加了权限 以下内容在创建对象时 创建扫描仪回调对象并进一步扫描 在logcat中,我只看到以下内容 这是我的app build gradle } 有人能指出我在这里遗漏了什么吗?

  • 开启蓝牙扫描 参数说明 字段 类型 必须? 说明 blePrefix String 是 设备名称类型前缀 示例代码 Swift: RokidMobileSDK.binder.startBLEScan(blePrefix: String) ->Bool Objc: [RokidMobileSDK.binder startBLEScanWithBlePrefix:@"Rokid-"]; 手机蓝牙未打

  • 扫描设备 介绍 需要传入扫描蓝牙设备的名称的前缀,回调均在主线程。如果传空,是无法获取设备列表。 1、单前缀蓝牙设备 参数说明 字段 类型 必须? 说明 type String 是 设备名称类型前缀 举个大栗子 String type = "Rokid-" RokidMobileSDK.binder.startBTScan(type, new IBTScanCallBack() { @Ov

  • 我正在创建一个蓝牙扫描仪应用程序,并试图找到可用的设备配对。我有一个蓝牙耳机,我正试图找到运行android 10应用程序。 权限在清单中设置 应用程序包含一个简单的按钮,点击它我开始发现蓝牙设备 用于发现的回调 如果我错过了什么,有人能帮我吗?

  • 我在为我的BLE设备开发Android软件时遇到了麻烦。我的软件可以找到我的设备和GATT服务,但在我的服务中找不到任何特征。 我查看了android-sdk-4.4.2源代码,发现了一些代码。https://android.googlesource.com/platform/external/bluetooth/bluedroid//android-sdk-4.4.2\u r1https://a