次の要件を持つアプリケーションを開発しています。デバイスにヘッドセットが接続されていて、ユーザーがそれを取り外した場合、すべてのストリームをミュートする必要があります。AudioManager.ACTION_AUDIO_BECOMING_NOISY
そのためには、放送を聞く必要があります。これで結構です!ここでは問題ありません。
しかし、ユーザーがヘッドセットを再度接続すると、デバイスのミュートを解除する必要があります。しかし、AudioManager.ACTION_AUDIO_BECOMING_NOISY
反対の放送はありません。ヘッドセットがいつ再び接続されるかわかりません。
1つの解決策は、定期的に確認することですAudioManager.isWiredHeadsetOn()
がtrue
、これは私にとって良い解決策ではないようです。
ユーザーがデバイスにヘッドセットを接続したことを検出する方法はありますか?
編集済み:Intent.ACTION_HEADSET_PLUG
この方法を使用しようとしましたが、機能しませんでした。
私はmanifest.xmlに次のように記述しました。
<receiver android:name=".MusicIntentReceiver" >
<intent-filter>
<action android:name="android.intent.action.HEADSET_PLUG" />
</intent-filter>
</receiver>
そして、これが私のコードですMusicIntentReceiver.java
:
public class MusicIntentReceiver extends BroadcastReceiver {
public void onReceive(Context ctx, Intent intent) {
AudioManager audioManager = (AudioManager)ctx.getSystemService(Context.AUDIO_SERVICE);
if (intent.getAction().equals(Intent.ACTION_HEADSET_PLUG)) {
Log.d("Let's turn the sound on!");
//other things to un-mute the streams
}
}
}
他に試すべき解決策はありますか?