2

以下は、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 デバイスの接続ステータスを正しく更新することはできません。

このクラスの完全なソースはここにあります

どんな助けでも大歓迎です。

4

1 に答える 1