谷歌 蓝牙4.0工作流程
谷歌于13年7月25日正式发布Android 4.3 操作系统,支持Bluetooth 4.0,搭载Bluetooth Low Energy/BLE技术。根据谷歌官网,SDK提供的demo开发,一共有一下几个步骤:
1、初始化BLE
2、搜索BLE设备
3、连接支持通用属性协议的设备
4、读取BLE属性
5、接收设备数据
6、关闭
每一步具体操作如下:
Step1:初始化BLE
1)得到一个本地适配器:BluetoothAdapter
2)启动蓝牙:if (!mBluetoothAdapter.isEnabled()) {
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); }
Step2:搜索BLE设备
1)调用startLeScan() ,把BluetoothAdapter.LeScanCallback作为参数,由于扫描非常耗电,所以需要设定一个扫描时间,且一旦发现目标设备,停止扫描。
2)如果想扫描已知的具体目标,可以使用startLeScan(UUID[], BluetoothAdapter.LeScanCallback)
直接给出一组uuid去扫描。
Step3:连接支持GATT的设备(GATT Server)
1)实例化一个BluetoothGatt 对象,如(mBluetoothGatt),
BluetoothGatt mBluetoothGatt = device.connectGatt(this, false, mGattCallback);
它有三个参数(对象,布尔变量,mGattcallback),mGattcallback是BluetoothGattcallback的一个引用,该对象用来指导手机端APP的操作(GATTclient)
private final BluetoothGattCallback mGattCallback = new BluetoothGattCallback() {
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {}
public void onServicesDiscovered(BluetoothGatt gatt, int status) {}
public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic, int status) {} //实现从设备端读取数据
public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic) {}
}; //mGattCallback 有四个方法,分别是状态连接改变,低功耗设备发现,数据读,数据改变通知
2)BluetoothGattCallback 传递数据到APP,比如连接状态,以及更多的app操作
Step4:读取BLE属性
1)读取设备的名字和地址
Step5:接收GATT通知
1)setCharacteristicNotification() 通知APP,设备端的产生变化
public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic) {}
//实现数据写
Step6:关闭程序,解除连接
GATT API工作流程图:
解读官方提供的demo:(主要是设备连接那一块)
1)BLE app 提供DeviceControlActivity 进行连接,显示数据和GATT设备以及设备支持的一些属性特征,该活动主要和BluetoothLeService通信,并通过安卓的BLE APT 和 BEL设备进行交互。
2)当特定的某个反馈触发,将调用合适的broadcastUpdate() 方法,并传递一个动作
3)回到DeviceControlActivity 上面的四个事件由BroadcastRecevier进行处理