アプリケーションの起動時にAndroidAPIレベル8を使用してBluetoothヘッドセットの接続状態(接続/切断)を取得するにはどうすればよいですか?android2.2で利用可能なスティッキーブロードキャストインテントはありますか?Bluetoothヘッドセットの初期状態を取得するためのAPIはありますか?利用可能な回避策はありますか?
6976 次
3 に答える
3
私は解決策を見つけました:
private static final String ACTION_BT_HEADSET_STATE_CHANGED = "android.bluetooth.headset.action.STATE_CHANGED";
private static final int STATE_CONNECTED = 0x00000002;
private static final int STATE_DISCONNECTED = 0x00000000;
private static final String EXTRA_STATE = "android.bluetooth.headset.extra.STATE";
private BroadcastReceiver mBlueToothHeadSetEventReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
try {
String action = intent.getAction();
if(action == null)
return;
if(action.equals(ACTION_BT_HEADSET_STATE_CHANGED)){
int extraData = intent.getIntExtra(EXTRA_STATE , STATE_DISCONNECTED);
if(extraData == STATE_CONNECTED ){
//TODO :
}else if(extraData == STATE_DISCONNECTED){
//TODO:
}
}
} catch (Exception e) {
//TODO:
}
}
};
于 2012-01-04T08:28:23.243 に答える
0
packages / apps / Phone / src / com / android / phone / PhoneGlobals.java:1449から
} else if (action.equals(BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED)) {
mBluetoothHeadsetState = intent.getIntExtra(BluetoothHeadset.EXTRA_STATE,
BluetoothHeadset.STATE_DISCONNECTED);
if (VDBG) Log.d(LOG_TAG, "mReceiver: HEADSET_STATE_CHANGED_ACTION");
if (VDBG) Log.d(LOG_TAG, "==> new state: " + mBluetoothHeadsetState);
updateBluetoothIndication(true); // Also update any visible UI if necessary
于 2014-07-22T02:57:46.450 に答える
-1
これはアプリケーションの起動では実際には機能しませんが、インテントフィルターは自動的に登録されるため、アプリが起動すると、有効な値が得られる可能性があります。
次のインテントフィルターを宣言します
<intent-filter >
<action android:name="android.bluetooth.headset.action.AUDIO_STATE_CHANGED" />
</intent-filter>
onReceiveのReceiverで、次のことを確認します。
if ("android.bluetooth.headset.action.AUDIO_STATE_CHANGED".equals(intent.getAction())) {
headsetAudioState = intent.getIntExtra("android.bluetooth.headset.extra.AUDIO_STATE", -2);
}
intを静的変数として保存します。BTオーディオが接続されているか(1)/切断されているか(0)を知りたいときはいつでもアクセスできます。きれいではありませんが、仕事は終わります。
https://github.com/android/platform_frameworks_base/blob/gingerbread/core/java/android/bluetooth/BluetoothHeadset.javaもチェックして ください。
于 2012-08-06T16:53:10.323 に答える