我们在《Android蓝牙开发系列文章-策划篇》中计划讲解一下蓝牙BLE,现在开始第一篇:Android蓝牙开发系列文章-玩转BLE开发(一)。计划要写的BLE文章至少分四篇,其他三篇分别讲解:BLE Server端编码(用手机模拟外围设备),BLE Beacon功能,BLE设备通信(利用自有协议实现Client和Server端通信,在Server端信息改变时,自动上报给Client)。
本文主要内容:编码实现BLE Client端,实现手机与蓝牙体重秤之间的通信
所用的设备:华为荣耀7手机,微信小程序,乐心体重秤
目录
1.基本概念
2.先来认识一下我们的设备
3、认识BLE Client编码
3.1 扫描BLE设备
3.2 建立GATT连接
3.3 解析设备支持的characteristic
3.4 读取characteristic值
3.5 写characteristic值
3.6 设置indication
4、总结
1.基本概念在这里先讲解一下BLE(Bluetooth Low Energy)的一些简单概念。
本文会涉及一个概念叫“GATT连接”,那我们先说一下什么是GATT,GATT(GenericAttribute Profile)译为通用属性配置文件。GATT连接利用的是在外设(体重秤)与中心设备(手机)之间建议一种联系,这种联系利用的是双方之间都能够识别(或者说提前约定好)的协议。这种协议的基础就是GATT。
GATT由service、characteristic、descriptor元素组成。service是一个功能单元的集合,这个集合有SIG标准的,也可以自己定义的。一个service可以包含一个或者多个characteristic,每个characteristic包含一个value和一个或者多个descriptor。descriptor是对characteristic的描述,例如是否支持读取等。
我们说的利用GATT通信就是对characteristic的读、写、或者characteristic的值发生改变时的自动上报(方向为:从蓝牙体重秤到手机)。
一个BLE设备往往支持多个service,即多个功能集合。例如,现在智能电视遥控器也许会支持蓝牙电量的service、蜂鸣的service以及一些自定义的service。
按照我个人的理解,画了一个BLE设备的GATT的结构如下,仅供大家参考。