android ble蓝牙开发(一)

目前,对于传说中的智能家居来说,了解ble蓝牙知识必不可少;低功耗蓝牙从4.3版本开始,可以使用它来发现设备(ScanBlutTooth),查询服务和读写特写。蓝牙底层是基于GATT协议,我们要操作蓝牙读取是要了解Api中BluetoothGATT类,里面包含Service(服务),Characteristic(特征值),Descriptor(属性);在连接后想做读写的操作,需要特定的Service_UUID,uuid是什么呢,是唯一统一标识符,每一个标识符是128位,例如这样的格式

uuid格式

怎么理解深层次蓝牙?蓝牙底部由 Service,Characteristic,Descriptor组成,他们可以由不同的uuid表示,一个Service由多个Characteristic,而Characteristic有多个Descriptor组成,从而构成一个服务,假如这个服务,这个Service表是蓝牙灯的信息,那么Characteristic可以是色温,色差,那么Descriptor就是里面一个属性值,可以是代表argb值;连接蓝牙有几个步骤:

1.蓝牙权限

在AndroidManifest.xml文件中添加权限

2.scanBlueTooth 扫描蓝牙设备

一般在Activity、Fragment使用蓝牙场景中,将附近的蓝牙在扫描过后添加到BlueTooth列表;

(1).获取蓝牙服务,得到blueAdaper,再在开始扫描:

android ble蓝牙开发(一)_第1张图片
检测蓝牙是否开启

(2).开始扫描,开启扫描,这里的TimeOut是默认扫描15s,因为蓝牙扫描是很耗费电量以及性能,恩,电量是一定的,但性能我不知道,也许是我瞎编的;15s后结束扫描动作;

android ble蓝牙开发(一)_第2张图片
开始扫描蓝牙设备

(3).startScan,扫描是要通过BluetoothAdapter开启扫描过程

android ble蓝牙开发(一)_第3张图片
startScan()具体实现

(4).将扫描到的蓝牙设备添加到列表当中,以供连接选择;

android ble蓝牙开发(一)_第4张图片
leScanCallBack回调;

3.连接蓝牙

(1),通过Mac地址,在使用BluetoothAdapter获取Device,再使用Device连接

蓝牙模块
获取服务
android ble蓝牙开发(一)_第5张图片
连接蓝牙模块要实现bluetoothGatt回调,这里表示是否连接上

4.获取服务

android ble蓝牙开发(一)_第6张图片

5.收发数据

(1)收取数据

需要判断characteristic的uuid是否与通讯协议一致,如果一致,那么从gatt当中读取数据

读,收取数据

(2)写数据

写数据

(3)一般而言,收取通知是从这里,被动的收取从蓝牙模块发送的数据,根据协议不同,dealData各有所不同;其中注意需要判断uuid;rssi是蓝牙信息强度,值是负数,如果值越大,那么信息强度越强;

android ble蓝牙开发(一)_第7张图片

6.固件升级

待续;

你可能感兴趣的:(android ble蓝牙开发(一))