Android Play Sound, даже если громкость мультимедиа равна 0

Я хочу воспроизводить музыку с помощью AudioTrack, даже если громкость мультимедиа устройства равна 0. В моем приложении я хочу иметь SeekBar для громкости мультимедиа (возможно, если другая музыка работает в фоновом режиме) и еще один SeekBar для музыки мое приложение.

До сих пор я могу изменить громкость мультимедиа. Но тогда музыка моего приложения тоже молчит..

Как я могу это сделать?

2 ответа

Решение

Спасибо за ваши ответы.

Теперь я использую "AudioTrack(AudioManager.STREAM_SYSTEM, (...))", и он работает хорошо. Возможно, это не лучший метод, но сейчас он работает.

Я думаю, что в Android есть шесть разных потоков звука для воспроизведения разных типов звуков.

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

Android поддерживает отдельный аудиопоток для воспроизведения музыки, сигналов тревоги, уведомлений, звонка входящего вызова, системных звуков, громкости во время разговора и тонов DTMF. Это сделано в первую очередь, чтобы позволить пользователям контролировать громкость каждого потока независимо.

Используйте аппаратные клавиши регулировки громкости для управления громкостью звука вашего приложения

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

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

Вы можете попробовать прослушать нажатие клавиш регулировки громкости и таким образом изменить громкость вашего аудиопотока. Сопротивляйтесь побуждению. Android предоставляет удобный метод setVolumeControlStream() для направления нажатий клавиш громкости в указанный вами аудиопоток.

Определив аудиопоток, который будет использовать ваше приложение, вы должны установить его в качестве цели потока громкости. Вы должны сделать этот вызов на раннем этапе жизненного цикла вашего приложения - потому что вам нужно вызывать его только один раз в течение жизненного цикла действия, вы обычно должны вызывать его в методе onCreate() (Activity или Fragment, который контролирует ваши медиа). Это гарантирует, что всякий раз, когда ваше приложение будет видимым, регуляторы громкости функционируют так, как ожидает пользователь.

setVolumeControlStream(AudioManager.STREAM_MUSIC);

С этого момента нажатие клавиш регулировки громкости на устройстве влияет на указанный вами аудиопоток (в данном случае "музыка") всякий раз, когда видна целевая деятельность или фрагмент.

Другие вопросы по тегам