以下は、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 Low energy デバイスが接続しようとしているかどうかに関係なく、メソッドを呼び出します。ただし、従来のデバイスとは異なり、Bluetooth Low energy デバイスの connectionStatus を取得できるメソッドがないため、Low energy デバイスの接続ステータスを正しく更新することはできません。
このクラスの完全なソースはここにあります
どんな助けでも大歓迎です。