2

我是 web-bluetooth api 的初学者,我想获取我的 android 蓝牙设备的一些 ID 或 MAC 地址......或者通过 API 识别每个设备的某种方式。其实我有这个

// navigator.bluetooth.requestDevice({filters: [{services: ['battery_service']}]})
navigator.bluetooth.requestDevice({acceptAllDevices: true, optionalServices: ['device_information']})
    .then(device => device.gatt.connect())
        .then(server => {
         // Getting device information
            return server.getPrimaryService('device_information');
        })
            .then(service => {
            // Getting serialNumber
                return service.getCharacteristic('serial_number_string');
            })
                .then(characteristic => {
                    // Reading serialNumber
                    return characteristic.readValue();
                })
                    .then(value => {
                        console.log('Serial Number is ' + value.getUint8(0));
                    })
                        .catch(error => {
                            console.log(error);
                        });
4

1 回答 1

3

您可以使用该BluetoothDevice.id属性来区分两个相似的设备。如果设备的名称很有帮助,您也可以使用name,例如“Nexus 6p (Bob's)”。这是一个这样做的网络蓝牙设备信息示例。

您可能会发现这些限制。网络蓝牙试图在对蓝牙规范进行最小更改的情况下在低级别公开蓝牙概念,但确实采取了一些措施来提供与网络相关的安全和隐私保护。阻止列表包含:

# org.bluetooth.characteristic.serial_number_string
# Block access to standardized unique identifiers, for privacy reasons.
00002a25-0000-1000-8000-00805f9b34fb

您读取序列号的代码应该会生成一条控制台消息,将您引导至阻止列表以获取更多信息。

请参阅与蓝牙设备标识符相关的规范中的安全和隐私注意事项,了解这些 ID 被阻止的原因。

于 2017-08-17T22:07:35.417 回答