Аудио для Android с STREAM_ALARM - как отключить динамик при подключенных наушниках - PullRequest
1 голос
/ 08 марта 2019

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

Может быть, я мог бы использовать STREAM_MUSIC, но:

  • В документах сказано, что Unless your app is an alarm clock, you should play audio using the STREAM_MUSIC stream.
  • Если зазвонит будильник и наушники уже подключены, мне нужно, чтобы он воспроизводился через динамик . STREAM_MUSIC не делает этого. Могут быть обходные пути , но мне нужно это на 100% надежно, так что было бы лучше сделать обходной путь для глушения динамика при необходимости, чем обходное решение для его громкого звучания при необходимости.
  • Я не уверен, какие еще последствия это может иметь, это не кажется безопасным.

Итак, есть ли возможность заставить громкоговоритель молчать? Может быть, вы используете какое-то отражение?

Я также рассматривал возможность изменения типа потока на ActionHeadsetPlug на STREAM_MUSIC, но это требует остановки звука, воссоздания экземпляра MediaPlayer, поиска предыдущей позиции, повторного связывания любых событий, другой логики и т. Д. много работы для моего варианта использования. Глушить динамик определенно будет лучше, если это возможно.

...