QppActivity.java
private final ServiceConnection mServiceConnection = new ServiceConnection() {
mBluetoothLeService 在 mServiceConnection 中 得到实例
mBluetoothLeService.connect(mDeviceAddress);
connect中
mBluetoothGatt = device.connectGatt(this, false, mGattCallback);
连接到GATT服务端时,由BLE设备做主机,并返回一个BluetoothGatt实例,然后你可以使用这个实例来进行GATT客户端操作。请求方(Android app)是GATT客户端。BluetoothGattCallback用于传递结果给用户,例如连接状态,以及任何进一步GATT客户端操作
private final BroadcastReceiver mGattUpdateReceiver = new BroadcastReceiver()
BluetoothLeService.ACTION_GATT_SERVICES_DISCOVERED.equals(action)
if (QppApi.qppEnable(mBluetoothGatt, uuidQppService, uuidQppCharWrite)) {
onCreat 中
Intent gattServiceIntent = new Intent(this, BluetoothLeService.class);
bindService(gattServiceIntent, mServiceConnection, BIND_AUTO_CREATE);
onResume()
注册广播
registerReceiver(mGattUpdateReceiver, makeGattUpdateIntentFilter());
public void onReceive(Context context, Intent intent) 中
接收到BluetoothLeService.ACTION_GATT_SERVICES_DISCOVERED.
QppApi.qppEnable(mBluetoothGatt, uuidQppService, uuidQppCharWrite)
//
BluetoothLeService.java 是一个服务
public class BluetoothLeService extends Service {
private final BluetoothGattCallback mGattCallback = new BluetoothGattCallback()
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) intentAction = ACTION_GATT_CONNECTED;
intentAction = ACTION_GATT_DISCONNECTED;
broadcastUpdate(intentAction);
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
broadcastUpdate(ACTION_GATT_SERVICES_DISCOVERED, status);
}
@Override
public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {
if (status == BluetoothGatt.GATT_SUCCESS) {
broadcastUpdate(ACTION_DATA_AVAILABLE, characteristic);
}
}
@Override
public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {
broadcastUpdate(ACTION_WRITE_STATUS, status);
}