本文为 FastBle 的使用教程,及部分补充内容(write 例子)。
关于 FastBle 的详细介绍,可参考 Android BLE 开发详解和 FastBle 源码解析。
一、概述
Android 4.3(API 级别 18)引入了内置平台支持低功耗蓝牙(BLE)的核心角色,并提供应用程序可用于发现设备,查询服务和传输信息的API。
与经典蓝牙(Classic Bluetooth)相比,低功耗蓝牙(BLE)旨在提供显着降低的功耗。这允许 Android 应用程序与具有更严格电源要求的 BLE 设备通信,例如接近传感器,心率监视器和健身设备。
(上图由 ProcessOn 在线工具绘制)
二、配置 BLE 权限
1. 配置定位权限
由于 LE Beacons 通常与位置相关联。要在 BluetoothLeScanner 没有过滤器的情况下使用,您必须通过声明应用程序清单文件中的权限 ACCESS_COARSE_LOCATION
或 ACCESS_FINE_LOCATION
权限来请求用户的权限。没有这些权限,扫描将不会返回任何结果。
1 | <!-- AndroidManifest.xml --> |
1 | // MainActivity.java |
2. 配置蓝牙权限
要在您的应用程序中使用蓝牙功能,您必须声明蓝牙权限 BLUETOOTH
。您需要此权限才能执行任何蓝牙通信,例如请求连接,接受连接和传输数据。
如果您希望应用启动设备发现或操作蓝牙设置,则还必须声明 BLUETOOTH_ADMIN
权限。注意:如果您使用 BLUETOOTH_ADMIN
权限,则您还必须拥有 BLUETOOTH
权限。
1 | <!-- AndroidManifest.xml --> |
如果您要声明您的应用仅适用于支持 BLE 的设备,请在应用的清单中包含以下 BLE 权限:
1 | <!-- AndroidManifest.xml --> |
但是一般来说,蓝牙只是应用程序的一个小功能,所以我们只会在使用到蓝牙功能时,去检查 BLE 是否可用,所以并不需要上述 BLE 权限,取而代之的是使用时检查:
1 | // MainActivity.java |
三、设置 BLE
如果不支持 BLE,则应优雅地禁用任何 BLE 功能。如果 BLE 受支持但已禁用,则可以请求用户启用蓝牙而无需离开您的应用程序。这个设置分两步完成,使用 BluetoothAdapter。
1. 获取 BluetoothAdapter
1 | // MainActivity.java |
2. 开启蓝牙
1 | // MainActivity.java |
1 | // MainActivity.java |
四、初始化 BleManager
引入 FastBle:
1 | compile 'com.clj.fastble:FastBleLib:1.2.1' |
1 | BleManager.getInstance().init(getApplication()); |
如果需要设备扫描规则:
1 | BleScanRuleConfig scanRuleConfig = new BleScanRuleConfig.Builder() |
五、扫描蓝牙设备
1 | private void startScan() { |
六、连接蓝牙设备
连接蓝牙后,如果需要往指定的 Characteristic UUID 中,写入一定的开锁指令,可使用以下方法连接蓝牙、搜索指定 UUID:
1 | private void connect(final BleDevice bleDevice) { |
七、读取蓝牙设备的数据
读取例子可参考官方 Demo。
八、写入数据到蓝牙设备
1 | private void writeCommand(BleDevice bleDevice, BluetoothGattCharacteristic characteristic) { |
源码在此下载。
九、参考资料
PS:欢迎关注 SherlockShi 个人博客