Как определить, когда пользователь подключает гарнитуру к устройству Android? (Напротив ACTION_AUDIO_BECOMING_NOISY)
Я занимаюсь разработкой приложения, которое имеет следующий реквизит: если к устройству подключена гарнитура, а пользователь удаляет ее, мне необходимо отключить звук всех потоков. Для этого мне нужно послушатьAudioManager.ACTION_AUDIO_BECOMING_NOISY
Broadcast. Хорошо! Не проблема здесь.
Но когда пользовательснова подключает гарнитуруМне нужно включить звук устройства. Но нетAudioManager.ACTION_AUDIO_BECOMING_NOISY
обратная трансляция. Я не могу знать, когда гарнитура снова подключена.
Одним из решений является периодически видеть, если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
}
}
}
Любое другое решение попробовать?