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

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

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

Ответ 1

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

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

Ответ 2

Это не идеальный ответ, а взлом:

android.media.VOLUME_CHANGED_ACTION

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

01-25 16:11:24.015: DEBUG/VolumePanel(189): onVolumeChanged(streamType: 2, flags: 4)
01-25 16:11:24.015: DEBUG/BluetoothA2dpService(189): Received intent with action: android.media.VOLUME_CHANGED_ACTION

так что продолжайте и зарегистрируйте BroadcastReceiver с действием "android.media.VOLUME_CHANGED_ACTION", если у вас нет другого решения.

Другой способ сделать это; Взятие клавиши громкости на Android.

Ответ 3

Вы можете отобразить том, обратившись к текущему тому из AudioManger, если ваше приложение в настоящее время находится в фокусе. В противном случае нет конкретного пути (официальный способ использования api) для этого.

Ответ 4

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

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

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

setVolumeControlStream (AudioManager.STREAM_MUSIC);

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

От: http://developer.android.com/training/managing-audio/volume-playback.html