Android MediaPlayer игнорирует свою внутреннюю громкость при изменении громкости системы - PullRequest
1 голос
/ 05 июня 2010

вот моя ситуация:

У меня есть медиаплеер, воспроизводящий музыку в приложении для Android. Я обнаружил, что в некоторых наушниках громкость слишком громкая, даже если она установлена ​​на минимальное значение. В результате я хочу изменить громкость музыки для всех уровней громкости на 10% от того, что она обычно есть (на самом деле, это значение определяется пользователем, конечно).

Отлично работает следующее:

mediaPlayer.setVolume(0.1f, 0.1f);

Громкость музыки теперь на хорошем уровне для прослушивания. Однако, если пользователь теперь меняет громкость с помощью регулятора громкости (таким образом, изменяя громкость музыкального потока), медиаплеер изменяет громкость в соответствии с ожиданиями, но, похоже, также сбрасывает параметры 'setVolume' до 1,0, что вызывает значительное изменение громкости , Установка громкости обратно на 0,1 устанавливает громкость на то, какой она должна быть (что составляет 10% от текущей громкости музыкального потока).

Чтобы процитировать документы Android для метода MediaPlayer.setVolume:

Этот API рекомендуется для балансировки выходных аудиопотоков в приложении

Как вы можете это сделать, если он сбрасывается до 1,0 при каждом изменении громкости системы?

Любая помощь высоко ценится. Благодаря.

1 Ответ

0 голосов
/ 06 июня 2010

Мое предложение было бы попробовать переопределить onKeyDown (...) и вручную отрегулировать громкость, получив объект AudioManager с помощью:

getSystemService(AUDIO_SERVICE).adjustVolume(ADJUST_RAISE);

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

...