Intereting Posts
Почему приложение android перезагружается, если мы используем кнопку «Назад» для выхода? BroadcastReceiver – onReceive не называется RxJava retryПри повторном рассылке Как создать собственный сервис android и использовать связующее для связи с ним? Как разработать приложение для Android, которое использует API календаря Google Что означает нуль в Handler.sendEmptyMessage (0) Отправка изображения Matlab на планшет Android Ошибка takePicture в леденец Как обрабатывать ошибки в пользовательском AsyncTaskLoader? Запустите фрагмент диалога при нажатии кнопки с пользовательского базового адаптера> getView Все библиотеки com.android.support должны использовать ту же самую спецификацию версии Почему мой контекст в моем фрагменте отсутствует? Путь Android Studio к различным каталогам Запуск Android-телефона в качестве стабильного веб-сервера (для сценария CGI Python) Как удалить пустое пространство вокруг изображения в Android?

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

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

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

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

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

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

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

setVolumeControlStream (AudioManager.STREAM_MUSIC);

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

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

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

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

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

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