我注意到,当外围设备非手动断开时,例如外围设备断电时,方法onConnectionStateChange()
并非总是被调用(或者根本没有按时调用)。有没有办法手动获取连接的BLE外设的连接状态而不是等待onConnectionStateChange()
触发?我尝试使用BluetoothManager#getConnectionState
但这个方法似乎正在访问由调用onConnectionStateChange()
的任何线程更新的连接状态,并且实际上并不询问设备是否已连接。换句话说,如果尚未调用BluetoothManager#getConnectionState
,则onConnectionStateChange()
仅返回false。
这是我的isConnected
方法
public boolean isConnected(){
// If the device has never connected, it's gatt service is null.
if(mGatt != null){
BluetoothManager btm =
(BluetoothManager)
MainActivity.mMainActivity.getSystemService(Context.BLUETOOTH_SERVICE);
int state = btm.getConnectionState(mGatt.getDevice(), BluetoothProfile.GATT);
return state == 2;
}
// The gat service is null, the device is not connected, return false.
return false;
}
答案 0 :(得分:2)