【发布时间】:2017-04-27 19:48:28
【问题描述】:
如果用户尝试连接的设备未连接,除了等待和测试连接外,我如何通知用户。尝试 connectGatt() 后连接失败似乎没有任何回调。 谢谢!
【问题讨论】:
标签: android callback connection bluetooth-lowenergy gatt
如果用户尝试连接的设备未连接,除了等待和测试连接外,我如何通知用户。尝试 connectGatt() 后连接失败似乎没有任何回调。 谢谢!
【问题讨论】:
标签: android callback connection bluetooth-lowenergy gatt
方法:connGATT()有3个参数。第三个是回调:
mBluetoothGatt = device.connectGatt(this, false, mGattCallback);
如果你想知道连接是否成功,你应该添加覆盖方法:
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status,
int newState)
这是链接。https://developer.android.com/guide/topics/connectivity/bluetooth-le.html
整个回调如下所示:
private final BluetoothGattCallback mGattCallback =
new BluetoothGattCallback() {
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status,
int newState) {
String intentAction;
if (newState == BluetoothProfile.STATE_CONNECTED) {
intentAction = ACTION_GATT_CONNECTED;
mConnectionState = STATE_CONNECTED;
broadcastUpdate(intentAction);
Log.i(TAG, "Connected to GATT server.");
Log.i(TAG, "Attempting to start service discovery:" +
mBluetoothGatt.discoverServices());
} else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
intentAction = ACTION_GATT_DISCONNECTED;
mConnectionState = STATE_DISCONNECTED;
Log.i(TAG, "Disconnected from GATT server.");
broadcastUpdate(intentAction);
}
}
@Override
// New services discovered
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
if (status == BluetoothGatt.GATT_SUCCESS) {
broadcastUpdate(ACTION_GATT_SERVICES_DISCOVERED);
} else {
Log.w(TAG, "onServicesDiscovered received: " + status);
}
}
@Override
// Result of a characteristic read operation
public void onCharacteristicRead(BluetoothGatt gatt,
BluetoothGattCharacteristic characteristic,
int status) {
if (status == BluetoothGatt.GATT_SUCCESS) {
broadcastUpdate(ACTION_DATA_AVAILABLE, characteristic);
}
}
...
};
...
}
【讨论】: