Android 蓝牙开发(二)-低功耗蓝牙

一、前言:

本文章是参考官网,然后加入自己实践中的理解完成!没有看上一篇的读者,可以先阅读一下前一篇,这是一个系列。

Android 蓝牙开发(一)
官网地址:https://developer.android.com/guide/topics/connectivity/bluetooth-le

Android 4.3 (API 18 )引入了低功耗蓝牙,应用可以查询周围设备、查询设备的服务、传输信息。

二、关键术语和概念

1、通用属性配置文件(GATT Generic Attribute Profile)

GATT 配置文件是一种传输数据规范,用于在 BLE 链路上发送和接受被称为属性的短数据的通用规范。目前所有低功耗应用配置文件基本都是基于 GATT

2、Bluetooth SIG (蓝牙技术联盟)

是为低功耗设备定义了许多配置文件。配置文件是设备在特定应用程序中的工作方式的规范。设备可以实现多个配置文件。例如,设备可以包含心率监测器和电池水平检测器。

3、属性协议(ATT Attribute Protocol)

GATT 是建立在属性协议(ATT)之上的。也被称为 GATT/ATT 。ATT 经过优化,可在 BLE 设备上使用。为此,它使用了尽可能少的字节。每个属性由通用唯一标识符(UUID)来唯一标识。ATT 传输的属性被格式化为 特征 和 服务

4、特征

特征包含单个值和描述特征值的 0 ~ n 个描述符。特征值可以被称为类型。类似于类。(是在和 BLE 设备进行通信的时候主要的操作内容)

5、描述符

是用来定义特征值的已定义属性。用来描述特征值的。例如:描述符可以指定人类可读的描述,特征值的可接受范围或者特征值特定的度量单位

6、服务

服务中包含一系列的特征值。例如,我们可以使用名为 “心率监测器”的服务,其中包括"心率测量"等特征。可以在 bluetooh.org 上找到基于 GATT 的现有配置文件的服务的列表。

三、其它:

1、角色和责任

Android 设备和 BLE 设备交互时应用的角色和职责

  • 中央与外围设备。
  • GATT 服务器和 GATT 客户端。确定了两个设备建立连接后如何进行相互通信

2、BLE 权限

应用在使用蓝牙设备的时候必须要声明蓝牙权限 BLUETOOTH 需要这个权限才可以进行蓝牙通信,例如:请求连接、接受连接、和传输数据。

如果还需要发现或者操作蓝牙设置,则需要声明 BLUETOOTH_ADMIN 权限。使用这个权限的前提是要有 BLUETOOTH 权限。

如果要声明我们的应用仅适用于支持 BLE 的设备,需要清单文件中做如下声明


如果我们希望我们的应用程序在不支持 BLE 的设备上也可以运行的时候,只需要将 true 修改成 false 就可以了。

还可以在代码中作出判断

java if(!getPackageManager().hasSystemFeature(PackgeManger.FEATURE_BLUETOOTH_LE)){ // 不支持 BLE 设备 } ¨G1G java public class BluetoothLeService extends Service{ private final static String TAG = BluetoothLeService.class.getSimpleName(); private BluetoothManger bluetoothManger; private BluetoothAdapter bluetoothAdapter; private String bluetoothDeviceAddress; private BluetoothGatt bluetoothGatt; private int connectionState = STATE_DISCONNECTED; ¨K13K }

当触发特定的回调的时候,会调用适当的 broadcastUpdate() 辅助方法并向其传递操作。具体的数据解析格式是根据配置文件规范执行的(是你和你的BLE 设备共同约定好的规范)

大体的过程中:开启连接,然后会触发对应的连接回调,然后发现服务,触发发现服务回调,获取服务内部的特征值,对其读写命令(和 BLE 共同约束的规范)。就是这么一个过程,很简单。

3、读 BLE 属性

一旦我们的 Android 设备连接到了 GATT 服务器并发现了服务,我们就可以在支持的位置读取或者写入属性了。

完成后要记得关闭设备 bluetoothGatt.close();

关于蓝牙框架的一个库:https://github.com/Alex-Jerry/Android-BLE

你可能感兴趣的:(Android 蓝牙开发(二)-低功耗蓝牙)