Android BLE:onServicesDiscovered(BluetoothGatt gatt, int status) 没有回调过
.discoverServices()调用之后,却永远不回调onServicesDiscovered(BluetoothGatt gatt, int status)
基本代码如下:
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.");
// Attempts to discover services after successful connection.
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);
}
}
原因:
android 提示newState == BluetoothProfile.STATE_CONNECTED
而实际上并不一定连接上了(连接成功是假象),尤其是连接一个不存在的设备。
参考资料: