Подтвердить что ты не робот

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

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

  • Отрегулируйте громкость музыкального потока, возможно, оглушая пользователя, если они будут играть музыку в то время.
  • Вызвать MediaPlayer.setVolume(), который неэффективен, если объем музыкального потока равен 0.
  • Кнопка ручного тома нажимает на себя, что вызывает две проблемы: нажатие кнопки регулировки громкости регулирует громкость звонка, если только мой звук не воспроизводится, и я еще не смог поймать событие onKey для нажатия кнопки громкости с помощью моего OnKeyListener. Если бы был какой-то способ заставить корректировку применяться к музыкальному потоку, пока моя активность фокусируется, или просто нажать кнопку, она сама будет работать.
  • Воспроизведение звукового фрагмента аудио в фоновом режиме для сохранения музыкального потока в контексте для регулировки громкости.

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

4b9b3361

Ответ 1

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

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

Вызовите этот API в свой onCreate():

setVolumeControlStream (AudioManager.STREAM_MUSIC);

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

Ответ 2

Полезно использовать этот API: setVolumeControlStream (AudioManager.STREAM_MUSIC);

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

Ответ 3

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

public boolean onKeyDown(int keyCode, KeyEvent event) {    
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
                setVolumeControlStream(AudioManager.STREAM_MUSIC);}}

Ответ 4

Это не поможет вам, если вы переопределите метод onKeyDown (int keycode, KeyEvent event) для действия.