Я пытаюсь воспроизвести радиопоток с типом носителя STREAM_ALARM и изменить его громкость с помощью аппаратных кнопок.Android: управление громкостью STREAM_ALARM с помощью аппаратных клавиш
Это должно быть STREAM_ALARM, потому что на самом деле это сигнал тревоги: он должен воспроизводить динамики, даже если наушники подключены и/или телефон настроен на молчание.
Я ищу реализацию, которая всегда работает, независимо от того, в какой активности находится пользователь (так что она также должна работать, например, на рабочем столе). Я знаю, что могу переопределить OnKeyUp/вниз, но это работает только в моей деятельности)
Вот что я делаю сейчас (упрощенный код)
audioMgr.requestAudioFocus(
afChangeListener,
AudioManager.STREAM_ALARM,
AudioManager.AUDIOFOCUS_GAIN
);
if (mp!=null) { mp.release(); mp = null;}
mp = new MediaPlayer();
mp.setDataSource(streamUrl);
mp.setAudioStreamType(AudioManager.STREAM_ALARM);
mp.setOnPreparedListener(onPreparedListener);
mp.prepareAsync();
А потом, когда onPreparedListener пожары:
mp.start();
Но когда я нажимаю кнопки регулировки громкости на моем телефоне, он меняет уровень громкости, а не сигнал тревоги (протестирован с Android 4.4 и 5.0).
Документация для Android гласит следующее. крыло:
«По умолчанию нажатие регуляторов громкости изменяет громкость активного аудиопотока».
Источник: http://developer.android.com/training/managing-audio/volume-playback.html#HardwareVolumeKeys
Так что я думаю, вопрос: как я (правильно) установить STREAM_ALARM в качестве активного аудио потока?
Или я делаю что-то неправильно?
Заранее благодарен!
UPDATE: Я сообщил об этом как об ошибке на AOSP Bug Tracker и поступил .. поэтому я предполагаю, что это на самом деле должны работать, как я описал выше, но это не делает: S
Ссылка: https://code.google.com/p/android/issues/detail?id=183843
Спасибо, но это работает только тогда, когда пользователь находится в моем приложении. Он также должен работать, когда пользователь находится в другом приложении, на рабочем столе и т. Д. – REJH
Тогда я предлагаю играть через поток MEDIA. over ALARM? –
Потому что это сигнал тревоги :) Он всегда должен воспроизводить динамики, даже если наушники подключены или телефон отключен. – REJH