Android BLE代码部分分析

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);
	}

猜你喜欢

转载自blog.csdn.net/lljss1980/article/details/113711163