Bluetoothデバイスが接続されているかどうかを検出するアプリを書いています。いくつかの調査を行った後、それを行うための最良の方法は、Bluetooth関連のインテントフィルターを備えた放送受信機を使用することであることがわかりました。
<receiver android:name=".BTReceiver" >
<intent-filter>
<action android:name="android.bluetooth.BluetoothDevice.ACTION_ACL_CONNECTED" />
<action android:name="android.bluetooth.BluetoothDevice.ACTION_ACL_DISCONNECTED" />
<action android:name="android.bluetooth.BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED" />
<action android:name="android.bluetooth.a2dp.profile.action.CONNECTION_STATE_CHANGED" />
</intent-filter>
</receiver>
そして、これが私のBluetoothレシーバークラスです。
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(action.equals("android.bluetooth.BluetoothDevice.ACTION_ACL_CONNECTED") || action.equals("android.bluetooth.a2dp.profile.action.CONNECTION_STATE_CHANGED") ){
Log.d("Z","Received: Bluetooth Connected");
}
if(action.equals("android.bluetooth.BluetoothDevice.ACTION_ACL_DISCONNECTED") ||action.equals("android.bluetooth.BluetoothDevice.ACTION_ACL_DISCONNECTED_REQUESTED")){
Log.d("Z","Received: Bluetooth Disconnected");
}
Log.d("Z",action);
}
Bluetoothヘッドセットをオンにして電話に接続すると、「android.bluetooth.a2dp.profile.action.CONNECTION_STATE_CHANGED」が2回表示されます。Bluetoothヘッドセットを切断すると、ブロードキャストレシーバーが実行されないか、何も受信されません。そのため、Bluetooth切断ログメッセージを受信しません。これを機能させるために必要だと思った2つのBluetooth権限を使用しています。
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
ここで何が悪いのかについての情報を実際に使用することができます。ありがとうございました。