简介:
Android 提供支持传统蓝牙和低功耗蓝牙的默认蓝牙堆栈。借助蓝牙,Android 设备可以创建个人区域网络,以便通过附近的蓝牙设备发送和接收数据。
在 Android 4.3 及更高版本中,Android 蓝牙堆栈可提供实现低功耗蓝牙 (BLE) 的功能。为了充分利用 BLE API,请遵循 Android 蓝牙 HCI 要求。具有合格芯片组的 Android 设备可以实现传统蓝牙或同时实现传统蓝牙和 BLE。BLE 不能向后兼容较低版本的蓝牙芯片组。
Android 架构
蓝牙应用通过 Binder 与蓝牙进程进行通信。蓝牙进程使用 JNI 与蓝牙堆栈通信,并向开发者提供对各种蓝牙配置文件的访问权限。下图显示了蓝牙堆栈的常规结构:

APP层实现:
关键术语:
通用属性配置文件 (GATT):GATT 配置文件是一种通用规范,内容针对在 BLE链路上发送和接收称为“属性”的简短数据片段。所有最新的 BLE 应用配置文件都基于 GATT。
Characteristic(特征值):BLE设备上存储数据的基本单元,可以理解为一个数据类型。它包括一个value(值)和0至多个对此characteristic的描述(Descriptor)。 描述符:对Characteristic的描述,如范围、单位等。它是可选的,并提供关于特征值的元数据。
Service(服务):Characteristic的集合,它可以包含多个Characteristic。每个BLE设备可以包含一个或多个服务,而每个服务又可以包含一个或多个特征值(Characteristic)。
UUID(通用唯一识别码):用于唯一标识BLE设备中的服务、特征值和描述符。UUID可以是标准的16位或128位,也可以是自定义的。
通知(Notify)与指示(Indicate):这是BLE中两种用于数据更新的机制。当特征值的值发生变化时,外围设备可以向中心设备发送通知或指示。通知是单向的,可能无法保证可靠传递;而指示则具有确认机制,可以确保通知被接收。
MTU :在一个蓝牙数据包中能够传输的最大数据量。
Android 端广播及连接+GATT模式实现
1,所需权限:
2,发现设备:
判断是否支持==>获取bluetoothAdapter==>判断是否开启蓝牙==>startScan===>发现设备device。
(Note:如需更详细的扫描策略 可使用ScanSettings 对扫描进行管理或者使用ScanFilter搜索特定设备)

最低0.47元/天 解锁文章
484

被折叠的 条评论
为什么被折叠?



