Я занимаюсь разработкой приложения для будильника 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
, поиска предыдущей позиции, повторного связывания любых событий, другой логики и т. Д. много работы для моего варианта использования. Глушить динамик определенно будет лучше, если это возможно.