Skip to content

Latest commit

 

History

History
61 lines (45 loc) · 3.28 KB

Web Bluetooth API.md

File metadata and controls

61 lines (45 loc) · 3.28 KB

Web Bluetooth API

Web Bluetooth API 允许网站通过 GATT(Generic Attribute Profile) 客户端与附近用户选择的低功耗蓝牙(BLE)设备进行安全和隐私保护的通信 API。基于 Promise 规范。

维基百科:

  • BLE低功耗蓝牙Bluetooth Low Energy,或称Bluetooth LEBLE,旧商标Bluetooth Smart)也称蓝牙低能耗低功耗蓝牙,是蓝牙技术联盟设计和销售的一种个人局域网技术,旨在用于医疗保健、运动健身、信标、安防、家庭娱乐等领域的新兴应用。相较经典蓝牙,低功耗蓝牙旨在保持同等通信范围的同时显著降低功耗和成本。

  • GATT 是一个在蓝牙连接之上的发送和接收很短的数据段的通用规范。

其还在实验阶段,在生产中使用之前,请仔细检查浏览器兼容性表。以下是 Can I Use 给出的兼容情况:

Web Bluetooth API 兼容情况

注意:此 API 在 Web Worker 中不可用。

基础用法

下面,我们将使用一个简单的示例,来看看如何获取一台 BLE 设备的基本信息。

注意:为了方便实现效果,我们自己在本地手写一个配置选项。

我们使用 navigator.bluetooth.requestDevice() 方法并为函数提供一个配置对象,该对象含有关我们要使用哪个设备,以及都有哪些服务可用的信息。它将返回一个 Promise 对象。如果没有蓝牙设备选择界面,则此方法返回与条件匹配的第一个设备。

<button class="btn">点我!</button>
let options = {
  filters: [
    { services: ['heart_rate'] },
    { services: [0x1802, 0x1803] },
    { services: ['c48e6067-5295-48d3-8d5c-0395f61792b1'] },
    { name: '设备名' },
    { namePrefix: '前缀' }
  ],
  optionalServices: ['battery_service']
}

const button = document.querySelector('.btn')
button.addEventListener('click', function () {
  navigator.bluetooth
    .requestDevice(options)
    .then((device) => {
      console.log('Got device:', device.name)
      // 在此处实现设备调用
    })
    .catch((err) => {
      console.log('Error: ' + err)
    })
})

效果如下:

匹配设备

更多资源

目前,已经有很多例子可以实践和借鉴,你可以在 demosWeb Bluetooth Samples 查看更多例子,如:Web 蓝牙打印机、LED 显示器、赛车等。