我正在研究通过网页发现附近蓝牙设备的项目。
以下是我的限制: - Windows 7或10下的开发,手机上的android 5 - 外围设备是蓝牙信标 - 中央是Android 6手机
首先,我做了一个看起来像这样的页面:
<html>
<head>
<script src="jquery-3.1.1.js"></script>
</head>
<body>
<div id="target" style="width: 100px; height: 100px; border: 1px solid red"></div>
<script>
$('#target').click(function() {
chrome.bluetooth.startDiscovery(function () {
navigator.bluetooth.requestDevice({ filters: [{ services:['battery_service'] }] })
.then(device => {
console.log(device);
return device.gatt.connect();
}).then(server => { console.log(server)}).catch(error => { console.log(error); });
})
</script>
</body>
</html>
这段代码让我可以将蓝牙设备与名为“battery_service”的服务与网页配对。它正在工作(morover) - 它打开“chrome系统”窗口,用于搜索附近的设备,并找到一个,如果我已经在窗口中配对它。如果它没有配对,它将什么也没找到。 Chrome说gatt服务器不存在所以我无法连接它,而对象有gatt属性,其gatt属性具有gatt属性(等等于无穷大)
无论如何它返回包含device
和device.name
属性的device.id
对象。其他属性是undefined
。
我在互联网上找到的任何例子都没有为我工作。
所以这里是问题:
我使用CHROME 56.0.2924.76 64bit。
谢谢你的帮助! Kalreg
首先让我说Windows 10支持Web蓝牙 在不久的将来 现在可用。定期查看Web Bluetooth implementation status页面。
Re:你的问题,你在那里结合了Bluetooth Chrome API(适用于Chrome应用)和Web Bluetooth API。由于Windows 10支持尚未完成,您将很难连接到GATT服务器。
- 是否可以使用Windows作为开发平台?
现在不行。很快就是。
- 是否可以使用android 5作为蓝牙外设?
是。我一直用BLE Peripheral Simulator Android应用程序这样做。
- chrome.bluetooth对象和navigator.bluetooth对象有什么区别?每个教程都使用chrome.bluetooth,但它在我的chrome浏览器中是未定义的对象。 Navigator.bluetooth如前所述工作。
chrome.bluetooth
仅适用于Chrome Apps,而navigator.bluetooth
可用于Chrome应用程序和网站,因为这是一个Web API。
- 我发现chrome.bluetooth.startDiscovery但是navigator.bluetooth没有这样的方法,而chrome.bluetooth是空对象,我根本无法发现它。因为我甚至不想连接到设备,但只知道它的存在是否有可能在每次进入蓝牙范围时都不配对设备?
navigator.bluetooth
有requestDevice
方法开始扫描。这将弹出一个选择器,用户可以从中选择一个设备。看看这个device info sample
- 有没有工作的例子?