изменение аудиопотока по умолчанию, управляемого кнопками громкости в Android

Извините за заголовок вопроса, но я не уверен, как называется эта конкретная функция Android
Это скриншот моего приложения, когда я нажимаю кнопку громкости
введите описание изображения здесь
Мы видим, что символ телефона находится вверху, что означает, что это тот телефон, громкость которого регулируется кнопками громкости
Однако я тестирую это на планшете (не на телефоне), поэтому изменение этой громкости не влияет на выходной сигнал динамика
Что я хочу сделать, так это сопоставить кнопки громкости со значком второго динамика, показанным здесь, который меняет динамик громкость вывода
Как настроить кнопку громкости планшета для сопоставления с этим потоком вывода (или как называется эта функция)?
Я пробовал
am.setMode(AudioManager.MODE_NORMAL);
и
am.setMode(AudioManager.MODE_IN_COMMUNICATION);
где am - это Audiomanager, но оба, кажется, имеют одинаковый результат


person user13267    schedule 02.09.2013    source источник


Ответы (1)


Класс Activity имеет метод setVolumeControlStream:

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

Вызовите его с типом потока, который вы хотите, чтобы аппаратные кнопки изменяли громкость, пока ваше приложение находится на переднем плане (например, STREAM_MUSIC), а затем вызовите его с USE_DEFAULT_STREAM_TYPE, если вы хотите сбросить поведение по умолчанию.

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

person Michael    schedule 02.09.2013
comment
Это должно вызываться в onCreate()? Если это то, что управляет громкостью, то какой смысл в AudioManager? - person user13267; 02.09.2013
comment
поэтому я должен вызывать его с помощью v в onCreate() или onResume(), а затем вызывать его с помощью USE_DEFAULT_STREAM_TYPE в onPause()? - person user13267; 02.09.2013
comment
Я использовал setVolumeControlStream(AudioManager.STREAM_MUSIC); в onCreate() и setVolumeControlStream(AudioManager.USE_DEFAULT_STREAM_TYPE); в onResume(), но он все еще делает то же самое. - person user13267; 02.09.2013
comment
onResume вызывается после onCreate при запуске действия. Вы должны поместить вызов setVolumeControlStream(USE_DEFAULT_STREAM_TYPE) так, чтобы он вызывался, когда вы больше не хотите переопределять, какой том будет изменен. - person Michael; 02.09.2013
comment
Что касается цели AudioManager; он используется (в основном) для получения и установки общесистемных настроек звука. Переопределение поведения, установленное с помощью setVolumeControlStream, зависит от действия. - person Michael; 02.09.2013
comment
Извините, я сделал некоторую ошибку. Вот что я сделал: setVolumeControlStream(AudioManager.STREAM_MUSIC); в onResume(), а затем в следующий раз в onCreate();; setVolumeControlStream(AudioManager.USE_DEFAULT_STREAM_TYPE); в onPause(). Но он по-прежнему делает то же самое, то есть аппаратные кнопки управляют потоком громкости, представленным символом телефона. Я хочу, чтобы он контролировал поток, представленный символом динамика. - person user13267; 02.09.2013
comment
@Michael, могу я получить ваше полное имя или адрес электронной почты, пожалуйста. - person JRC; 04.09.2013
comment
В StackOverflow есть служба чата, если вы хотите задать что-то, что не может быть освещено в обычном вопросе/комментарии. - person Michael; 04.09.2013
comment
Я не пользуюсь чатом, как вас найти в чате, извините за это - person JRC; 04.09.2013