Как я могу управлять аудио тома здраво в моей Android приложений?

голоса
33

У меня есть приложение, которое играет прерывистый звук, а его деятельность открыта, и пользователь всегда ожидает его, чтобы сделать эти шумы, но, к сожалению, она ограничена по объему музыки потока. Варианты я Обнаруженные таким образом:

  1. Регулировка громкости музыкального ручья, возможно, оглушая пользователь, если они происходят, чтобы играть музыку в то время.
  2. Вызов MediaPlayer.setVolume (), который является неэффективным, если объем музыкальной записи потока 0.
  3. кнопка регулировки громкости ручки прижимает себя, который представляет две проблемы: объем нажатие кнопок регулировки уровня громкости звонка, если мой звук не играет, и я пока еще не удалось поймать OnKey событие для кнопки громкости нажмите, используя мой OnKeyListener. Если бы какой-нибудь способ, чтобы заставить регулировки применить к музыкальному потоку в то время как моя деятельность имеет фокус, или просто поймать кнопку прижимает меня это будет работать.
  4. Играть молчаливую циклическую часть аудио в фоновом режиме, чтобы сохранить поток музыки в контексте корректировки объема.

Я думаю, что третий вариант, вероятно, лучше, так как он уступит контроль объема по отношению к пользователю, но если бы каким-то образом просто переопределить объем системы в одном медиаплеера, например, что будет работать тоже.

Задан 10/03/2009 в 02:54
источник пользователем
На других языках...                            


4 ответов

голоса
70

Есть еще одно предложение с помощью групп Google, который является платформой интегрированное решение, я искал и работает отлично:

Пожалуйста, не обрабатываем клавиши регулировки громкости самостоятельно - это почти невозможно гарантировать, что вы не будете нарушать поведение клавиш громкости.

Назовите этот API в вашем OnCreate ():

setVolumeControlStream (AudioManager.STREAM_MUSIC);

Это говорит AudioManager, что, когда ваше приложение имеет фокус, клавиши регулировки громкости необходимо отрегулировать громкость музыки.

Ответил 23/03/2009 в 17:53
источник пользователем

голоса
2

Это полезно этого API: setVolumeControlStream (AudioManager.STREAM_MUSIC);

Если это я не буду тратить больше времени, чтобы исправить эту ошибку громкости.

Ответил 13/04/2011 в 06:55
источник пользователем

голоса
1

Если вы используете «» OnKeyDown метод, вы можете обойти эту проблему, выполнив следующие действия:

public boolean onKeyDown(int keyCode, KeyEvent event) {    
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
                setVolumeControlStream(AudioManager.STREAM_MUSIC);}}
Ответил 25/10/2015 в 10:08
источник пользователем

голоса
0

Это не поможет, если у вас есть переопределить OnKeyDown (INT, код ключа KeyEvent события) метод деятельности.

Ответил 07/12/2011 в 13:45
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more