欢迎光临
我们一直在努力,滕州微信小程序开发

技术课 | 用好蓝牙能力,小程序轻松连接智能硬件

技术课 | 用好蓝牙能力,小程序轻松连接智能硬件

大家有没有发现,身边的智能硬件五花八门,但能常用的几乎没几个,因为——几乎每使用一种就需要重新下载一款应用,硬件就被丢在一边了。

其实,开发者通过小程序的低功耗蓝牙能力,就能实现通过小程序快速连接智能电子产品。

本期小程序课,就来看看微信开发哥对小程序的低功耗蓝牙能力有什么好思路、好分享——

目前蓝牙最为普遍的两种规格为蓝牙基础率/增强数据率 (BR/EDR) 和低功耗 (LE) 蓝牙。

蓝牙基础率/增强数据率 (BR/EDR) 是经典的蓝牙协议,常用在对数据传输带宽有一定要求的场景上,比如需要传输音频数据的蓝牙音箱等;

低功耗 (LE) 蓝牙是从蓝牙4.0起支持的协议,特点就是耗电极低、传输速度更快,常用在对续航要求较高且只需小数据量传输的各种智能电子产品中,包括心率监测仪器、体温计、血糖仪、智能穿戴设备、胎压监测和电子烟等等,应用场景广泛,所以小程序在很早的版本(基础库 1.1.0)就优先支持了低功耗蓝牙能力。

我们在开发基于低功耗蓝牙接口的小程序时,需要先理解一下蓝牙在连接和通信过程中的一些概念。

蓝牙定义的两种主要角色

低功耗蓝牙协议给设备定义了若干角色,其中最主要的角色是:外围设备(Peripheral)中心设备(Central)

1

外围设备是用来提供数据,通过不停地向外广播数据,让中心设备发现自己。

2

中心设备会扫描外围设备,发现有外围设备存在后,可以与之建立连接,之后就可以使用外围设备提供的服务(Service)。一般而言,手机会担任中心设备的角色,利用外围设备提供的数据进行处理或展示等等。因此,小程序提供低功耗蓝牙接口是默认设定手机为中心设备的。

如何使用小程序提供的蓝牙接口

在两个蓝牙设备建立连接之后,双方的数据交互是基于一个叫做 GATT (Generic Attribute Profile) 的规范,根据该规范可以定义出一个配置文件(Profile),描述该蓝牙设备提供的服务(Service)。

在整个通信过程中,有三个最主要的概念:配置文件(Profile)、服务(Service)、特性(Characteristic)。

1

Profile 并不真实存在于蓝牙设备中,它只是被蓝牙标准预先定义的一些 Service 的集合,如果蓝牙设备之间要相互兼容,它们只要支持相同的 Profile 即可。一个蓝牙设备可以支持多个 Profile。

2

Service 可以理解为蓝牙设备提供的服务,一个设备可以提供多个服务,比如电量信息服务、系统信息服务等。每个 Service 又包含多个 Characteristic 特性值,比如电量信息服务就会有个 Characteristic 表示电量数据,同时还会有一个 16bit 或 128bit 的 UUID 唯一标识该服务,像微信硬件平台的蓝牙智能灯的主服务 UUID 为 0xFEE7。16 bit 的 UUID 实际上是 128 bit 的缩短版,接收方收到后会补上蓝牙的 UUID 基数,目的是为了提高传输效率。

3

Characteristic 是在 GATT 规范中最小的逻辑数据单元,由一个 value 和多个描述特性的 Desciptor 组成。实际上,在与蓝牙设备打交道,主要就是通过读写 Characteristic 的 value 完成。同样的,Characteristic 也是通过一个 16bit 或 128bit 的 UUID 唯一标识。

总结一下,如下图所示,我们可以简单地理解为:每个蓝牙设备可能提供多个 Service,每个 Service 可能有多个 Characteristic,我们根据蓝牙设备的协议用对应的 Characteristic 进行读写即可达到与其通信的目的。

技术课 | 用好蓝牙能力,小程序轻松连接智能硬件

在理解了上面的模式和概念后,接下来我们看看如何使用小程序提供的蓝牙接口。

Step 1 :扫描并发现蓝牙外围设备

扫描并发现蓝牙外设。如果蓝牙功能未开启,可监听蓝牙状态变化以便自动进入下一步,提升用户体验。

技术课 | 用好蓝牙能力,小程序轻松连接智能硬件

Step 2 :连接蓝牙外围设备

若之前连接过某个设备,可跳过扫描步骤,直接传入 deviceId 连接。

技术课 | 用好蓝牙能力,小程序轻松连接智能硬件

Step 3 :查找蓝牙外围设备的服务

技术课 | 用好蓝牙能力,小程序轻松连接智能硬件

Step 4 :读写指定服务的特性值

技术课 | 用好蓝牙能力,小程序轻松连接智能硬件

基本上,小程序暴露出来的蓝牙接口都是系统级 API ,但在使用流程上对安卓和 iOS 两个平台做了统一,因此在使用这一套接口时也会出现一些因系统限制而导致的问题,在这里我们整理了一些常见的问题供开发者参考:

1

在安卓上,部分机型无定位权限或者是定位开关未打开时会搜不到设备。原因是蓝牙功能是可以获取到定位的,系统基于安全考量,使用蓝牙接口时必须要有定位权限,否则搜索不到;

2

在安卓上,部分机型获取设备服务时会多出 00001800 和 00001801 UUID 的服务,这是系统行为,注意不要使用这两个服务;

3

建立连接和关闭连接必须要成对调用。如果未能及时关闭连接释放资源,容易导致 state 133 GATT ERROR的异常;

4

与蓝牙设备通信的 MTU(最大传输单元)系统限定为 20 字节,如果超过则会出错,这里应该根据蓝牙设备协议进行分片传输。

更多有关小程序连接蓝牙功能的信息,可查阅[接口文档]

关于小程序快速上手的教程《小程序开发指南》已经上线,欢迎大家查阅~

如果本期内容让你有所收获

欢迎赞赏一下我们的开发哥

技术课 | 用好蓝牙能力,小程序轻松连接智能硬件

课后交流

学习完本期的小程序蓝牙能力后,你还想了解小程序哪方面的知识呢?欢迎留言与微信开发哥共同探讨!

课程复习 ▷▷

【插件】开发小程序插件遇到问题?微信开发哥来教你!

【用户登录】被用户“花式拒绝”微信登录?开发小哥有好建议!

【音频】小程序音频不知道怎么开发?10分钟看完这节课就懂了

【自定义组件】减少重复开发,小程序自定义组件来给大家减负了

【音视频组件】别人家玩的那么6的小程序直播,你也可以开发

【群聊】技术课 | 小程序玩“群聊”,开发哥来支招

● 内容来自“微信开发者”公众号《小程序·小故事》栏目

技术课 | 用好蓝牙能力,小程序轻松连接智能硬件

微信公开课

微信ID:wx-gongkaike

技术课 | 用好蓝牙能力,小程序轻松连接智能硬件

1.点击历史信息,查看更多内容

2.长按右侧二维码,关注微信公开课

长按二维码关注

历史上的今天
May
28
    哇哦~~~,历史上的今天没发表过文章哦
赞(0) 打赏
本文中由滕州网站建设发布,未经允许不得转载:滕州六画网络工作室 » 技术课 | 用好蓝牙能力,小程序轻松连接智能硬件
分享到: 更多 (0)

枣庄滕州网站建设相关推荐

  • 暂无文章

评论滕州网站建设的文章吧 抢沙发

7 + 5 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

滕州网站建设 枣庄网站开发 更专业 更方便

滕州网站建设枣庄网站开发