Ниже приведен код, который Android использует для получения сводки о соединении (для отображения меток состояния соединения).
private int getConnectionSummary() {
...........................
...........................
for (LocalBluetoothProfile profile : cachedDevice.getProfiles()) {
int connectionStatus = cachedDevice.getProfileConnectionState(profile);
switch (connectionStatus) {
case BluetoothProfile.STATE_CONNECTING:
case BluetoothProfile.STATE_DISCONNECTING:
return Utils.getConnectionStateSummary(connectionStatus);
case BluetoothProfile.STATE_CONNECTED:
profileConnected = true;
break;
case BluetoothProfile.STATE_DISCONNECTED:
if (profile.isProfileReady()) {
if (profile instanceof A2dpProfile) {
a2dpNotConnected = true;
} else if (profile instanceof HeadsetProfile) {
headsetNotConnected = true;
}
}
break;
}
}
Как видно из приведенного выше кода, они получают статус подключения для классического устройства с помощью следующей строки кода:
int connectionStatus = cachedDevice.getProfileConnectionState(profile);
Система Android вызывает метод getConnectionSummary()
независимо от того, пытается ли подключиться устройство Classic или Bluetooth с низким энергопотреблением; но в отличие от классического устройства, поскольку у нас нет метода, с помощью которого мы можем получить статус подключения для устройства Bluetooth с низким энергопотреблением, мы не можем правильно обновить статус подключения для устройства с низким энергопотреблением.
Полный исходный код для этого класса можно найти здесь
Буду признателен за любую оказанную помощь.