最近一段时间在写支持BLE蓝牙的Android应用。是时候总结一下了。
1、什么是BLE。(总得先知道BLE是什么吧~~~)
Bluetooth Low Energy(低功耗蓝牙),缩写为Bluetooth LE,或BLE,作为蓝牙4.0 (有时称为蓝牙智能)规范的一部分,并针对上述的这些具体问题而被引入。就提高电池寿命而言,许多制造商声称一些传感器能维持数月甚至数年的时间(我必须承认我有点怀疑制造商的估计一般是基于最好的情况下,而不涉及实际的使用情况)。Google在Android 4.3(API 18)中加入了对BLE的支持。
* 这里附带提一下传统的蓝牙Bluetooth。传统的蓝牙采用的是类似于Socket的通信机制:Socket的基本原理就是有ServerSocket、ClientSocket,服务器端和客户端都指定一下网络地址、端口,然后服务器端accept(),处于等待客户端发起连接的状态;客户端Socket对象创建后,就可以拿到里面的一些输入输出流了,发起请求,然后实现各种数据传递业务逻辑。
而,BLE的机制不是这样的!BLE的机制是中心周边机制,以传输属性类型的原子数据为特征。(这句话是不是很绕。举个例子来说:Android Wear是有一个支持BLE的设备,可以测你的心率;Android phone上有个心率App,两者通过蓝牙连接。Android phone(接收心率数据)就是BLE中心,Android Wear(发送心率数据)就是BLE周边。传输的数据是心率,可能是 60 次/分 ,显然有单位。所以说这个数据是一个属性数据;这个数据是以数据传输的最小单元的形式发送的,是个原子数据。好难解释。大概是这样理解的~~~)
可以这么认为:接收数据的一端(Android phone)认为是BLE中心(BluetoothGatt),其他低能耗蓝牙设备(比如说带蓝牙的温度传感器、心率传感器等等)认为是周边。
-----------------------------------------------华丽丽的分割线-------------------------------------------------------------------------------------------------------------
2、进行BLE蓝牙操作的准备工作(工欲善其事,必先利其器!)
* 先啥也别想,把所有需要的权限加上。
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
2.1 Service 与 Activity 之间的通信
为啥要知道这个? 后面就知道了。先按下不表~~~(贱人就是矫情,还和我卖关子!)
记得Service 在清单配置文件AndroidManifest.xml中要写<service/>
<service
android:name="com.yudichina.bluetoothbyoidtestdemo.BluetoothLeService"
android:exported="true"
android:enabled="true">
</service>