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