低功耗蓝牙(BLE)之开发步骤
2016-04-11 23:57
302 查看
Android Bluetooth源码静态类图如下:
![](http://static.oschina.net/uploads/space/2014/0401/143628_Q5S3_661133.png)
使用低功耗蓝牙需要用到的权限:
?
下面介绍怎样使用BLE:
1、准备BLE
1)获取BluetoothAdapter
BluetoothAdapter是从系统服务获取到的,全系统就一个。
?
2)检测蓝牙是否打开
如果蓝牙未打开,系统会自动打开,会弹出系统框展示打开蓝牙。
?
2、查找BLE设备
因为扫描BLE设备是电源密集型操作,浪费电量,因此要保证以下原则:
1)扫描到需要的设备后,马上停止扫描;
2)给扫描一个时间限制
扫描示例代码如下:
?
如果只是要扫描到特定类型的设备,则使用接口
?
注意:我们既可以扫描BLE设备,也可以扫描普通蓝牙设备,也可以同时将BLE设备和普通蓝牙设备一起扫描到。
3、连接到GATT Server
获取到BluetoothGatt实例,
?
?
其中,discoverService方式是异步的,它的回调方法是上面代码中的onServiceDiscovered。
?
?
?
在获取Service的时候,每个蓝牙设备都会有两个默认的Service,它们和对应的UUID分别如下:
Bluetooth Generic Access Profile {00001800-0000-1000-8000-00805f9b34fb}
Bluetooth Generic Attribute Profile {00001801-0000-1000-8000-00805F9B34FB}
?
如果notificaiton方式对于某个Characteristic是enable的,那么当设备上的这个Characteristic改变时,手机上的
?
6、关闭客户端蓝牙
?
![](http://static.oschina.net/uploads/space/2014/0401/143628_Q5S3_661133.png)
使用低功耗蓝牙需要用到的权限:
?
1、准备BLE
1)获取BluetoothAdapter
BluetoothAdapter是从系统服务获取到的,全系统就一个。
?
如果蓝牙未打开,系统会自动打开,会弹出系统框展示打开蓝牙。
?
因为扫描BLE设备是电源密集型操作,浪费电量,因此要保证以下原则:
1)扫描到需要的设备后,马上停止扫描;
2)给扫描一个时间限制
扫描示例代码如下:
?
startLeScan(UUID[], BluetoothAdapter.LeScanCallback),通过UUID来查找设备。
扫描回调的代码如下所示:
?
3、连接到GATT Server
获取到BluetoothGatt实例,
?
具体实例如下:
?
?
4、读BLE属性
一旦获取到GATT的Services,就可以读写他们的属性了,实例如下:
?
Bluetooth Generic Access Profile {00001800-0000-1000-8000-00805f9b34fb}
Bluetooth Generic Attribute Profile {00001801-0000-1000-8000-00805F9B34FB}
5、收到GATT通知
如果设备主动给手机发信息,则可以通过notification的方式,这种方式不用手机去轮询地读设备上的数据。手机可以用如下方式给设备设置notification功能。
?
onCharacteristicChanged()回调就会被促发。如下所示:
?
?
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories