低功耗蓝牙,也称为蓝牙LE 或简称 BLE,是一种类似于经典蓝牙的新通信协议,不同之处在于它旨在消耗更少的功耗和成本,同时保持同等的功能。
因此,低功耗蓝牙是与耗电资源有限的物联网设备进行通信的首选。BluetoothLE 扩展需要 Android 5.0 或更高版本。
BlueToothLE 拓展中文文档入口:
或者,搜索“BLE 拓展”,首条搜索结果直达:
这里节选几个常用的属性、方法、事件:
AdvertisementScanPeriod
– 广播扫描周期:返回广播扫描周期的值(毫秒ms)。
DeviceList
– 以字符串形式返回BLE设备的有序列表。
NoLocationNeeded
– 启用此选项用以申明你的App不使用蓝牙来获取位置信息。如果启用,编译后的App将不需要请求ACCESS_FINE_LOCATION
权限,扩展程序也不会尝试请求这个权限。
(此属性仅“界面设计”视图可用)
ConnectWithAddress
– 如果已知BLE设备的MAC地址(如:已存储并从微数据库中读取),则使用ConnectWithAddress
方法连接到该设备。如果设备列表中没有任何设备与给定MAC地址匹配,则将触发ConnectionFailed
事件。否则,如果连接成功,则将触发Connected
事件。
参数:
address
(text) — 目标设备的 MAC 地址,格式为12:34:56:78:90:ab
RequestMTU
– 为 BluetoothLE 连接请求新的最大传输单元 (MTU)。此功能仅在两个设备都支持蓝牙 4.2 或更高版本时才受支持。如果 MTU 更改成功,则 MTUChanged 事件将被触发。默认 MTU 为 20。
此块适用于需要更改 BLE 设备之间发送的消息大小的高级应用。大多数开发人员不需要调整此值。
参数:
bytes
(number) — 期望的 MTU 大小(单位:字节)。- MTU: 最大传输单元(MAXIMUM TRANSMISSION UNIT) , 指在一个PDU (Protocol Data Unit:协议数据单元,在一个传输单元中的有效传输数据)能够传输的最大数据量(多少字节可以一次性传输到对方)。
- MTU 交换是为了在主从双方设置一个PDU中最大能够交换的数据量,通过MTU的交换和双方确认(注意这个MTU是不可以协商的,只是通知对方,双方在知道对方的极限后会选择一个较小的值作为以后的MTU,比如说,主设备发出一个150个字节的MTU请求,但是从设备回应MTU是23字节,那么今后双方要以较小的值23字节作为以后的MTU),主从双方约定每次在做数据传输时不超过这个最大数据单元。
- 更多MTU技术内幕请参考《一分钟读懂低功耗蓝牙(BLE) MTU交换数据包》。
WriteBytes
– 将一个或多个 8-bit 整数值写入已连接的BLE设备。服务UID 和特性UUID 是必需的。参数可以是 单个数值 或 数值列表。如果signed
为真
,则可接受的值介于 -128 和 127 之间。如果signed
为假
,则可接受的值介于 0 和 255 之间。
参数:
serviceUuid
(text) — 在读取或注册调用中传递的服务UUID。characteristicUuid
(text) — 读取或注册调用中特征UUID。signed
(boolean) 将字节解释为有符号(真
)或无符号(假
)。values
(list) — 要写入设备的值列表。
BytesReceived
– 当从连接的蓝牙BLE设备接收到一个或多个字节值时,将触发该事件。根据上次调用ReadBytes
或RegisterForBytes
时给定的serviceUuid
和characteristicUuid
的sign
参数,byteValues
列表将包含从 -128 到 127 (signed = true
) 或 0 到 255 (signed = false
) 的数字。
参数:
serviceUuid
(text) — 在读取或注册调用中传递的服务UUID。characteristicUuid
(text) — 读取或注册调用中特征UUID。byteValues
(list) — 从设备读取的值列表。每个值的范围取决于先前在读取或注册调用中指定的sign
标志。