0

BT機器の接続・切断に同報受信機を登録するサービスを開始しています。うまく機能しているようです。しかし、私は問題に遭遇しました。現在の状態を知るために、BT ヘッドセットが既に接続されているかどうかを検出する必要があります。以下のコードを使用していますが、機能していないようです。

// ...
// get BluetoothAdapter 
BluetoothAdapter ba = BluetoothAdapter.getDefaultAdapter();
// to tell if BT headset is connected
boolean isBtHeadsetOn = false;

// if device supports BT
if (ba != null) {
    // get list of paired devices
    Set<BluetoothDevice> devices = ba.getBondedDevices();

    if (devices != null) {
        // loop through devices
        for (BluetoothDevice device : devices) {
            // get device class
            BluetoothClass bc = device.getBluetoothClass();
            if (bc == null) continue;
            int devClass = bc.getDeviceClass();

            // check if device is handsfree, headphones or headset
            if (devClass == BluetoothClass.Device.AUDIO_VIDEO_HANDSFREE || devClass == BluetoothClass.Device.AUDIO_VIDEO_HEADPHONES || devClass == BluetoothClass.Device.AUDIO_VIDEO_WEARABLE_HEADSET) {
                // yes, it is
                isBtHeadsetOn = true;
                break;
            }
        }
    }
}

// now I got my result in variable isBtHeadsetOn
// ...

私はAndroid 2.1用に開発しており、上記のコードはService#onCreate()に配置されています。ご協力いただきありがとうございます。

4

1 に答える 1

0

このコードは、結合されたデバイスのみを提供し、接続ステータスは提供しません。これは、モバイルが記憶している Bluetooth デバイスを意味しますが、接続されているかどうかはわかりません。

一般に、ステータスを知るには、デバイスの状態の変化をキャプチャする必要があります。

<receiver android:name=".receiver.BTReceiver">
        <intent-filter>
            <action android:name="android.bluetooth.adapter.action.STATE_CHANGED" />
            <action android:name="android.bluetooth.device.action.ACL_CONNECTED" />
            <action android:name="android.bluetooth.device.action.ACL_DISCONNECTED" />
            <action android:name="android.bluetooth.device.action.BOND_STATE_CHANGED" />
        </intent-filter>

それがハンズフリーであることがわかっている場合は、実際に接続ステータスを知るためのいくつかのメソッドを持つ BluetoothHeadset オブジェクトを取得できます: http://developer.android.com/reference/android/bluetooth/BluetoothHeadset.html

于 2013-02-05T22:59:17.527 に答える