Разъем для наушников Слушатель Android

Кто-нибудь знает, как я могу определить, отключен ли разъем для наушников на устройстве на Android? У меня есть музыкальный проигрыватель, и мне нужно приостановить воспроизведение музыки, когда наушники отключены. Самое близкое, что я нашел, это использование AudioManager. Это правильное направление?


person DRiFTy    schedule 02.04.2012    source источник
comment
Вот хорошая реализация Android MediaPlayer @ GitHub. Он интегрирован с MediaSessionCompat и HeadsetListener — реализацией BroadcastReceiver, которая приостанавливает воспроизведение при отключении наушников. Кроме того, он обрабатывает Audio Focus через AudioManager.   -  person naXa    schedule 24.08.2018


Ответы (1)


Вот что я в итоге сделал:

private class NoisyAudioStreamReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (AudioManager.ACTION_AUDIO_BECOMING_NOISY.equals(intent.getAction())) {
            pause();
        }
    }
}

private IntentFilter intentFilter = new IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY);

private void startPlayback() {
    registerReceiver(myNoisyAudioStreamReceiver(), intentFilter);
}

private void stopPlayback() {
    unregisterReceiver(myNoisyAudioStreamReceiver);
}

Я нашел ответ по этой ссылке: http://developer.android.com/training/managing-audio/audio-output.html

person DRiFTy    schedule 03.04.2012
comment
Хотя у меня нет полной информации о том, как это сделать, я считаю, что вы можете использовать ACTION_HEADSET_PLUG в чем-то вроде :IntentFilter ReceiverFilter = new IntentFilter(Intent.ACTION_HEADSET_PLUG); Приемник HeadsetStateReceiver = новый гарнитураStateReceiver(); registerReceiver (this.toggleDeviceConnectionState(), ReceiverFilter); - person shim; 10.11.2012
comment
@shim Просто проверьте документацию Intent(developer.android.com/reference /android/content/), и вы в некотором роде правы: да, этот Intent Filter существует, но из API21+ они предлагают вам вместо него использовать AudioManager. Я думаю, причина в том, что BECOMING_NOISY также учитывает другие типы устройств вывода звука (например, bluetooth-гарнитуру), например. если bluetooth-гарнитура отключена, она также должна сделать эту трансляцию. Я пробую это сейчас, но для обратной совместимости я думаю, что оба метода должны быть реализованы... - person Louis Tsai; 28.12.2017