Я разрабатываю приложение будильника для 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
, поиска предыдущей позиции, повторной привязки любых событий, другой логики и т. д. Много работы для моего варианта использования. Заглушить динамик определенно было бы лучше, если бы это было возможно.
STREAM_ALARM
(по крайней мере, так было раньше, когда я работал с этим материалом в Sony). Причина в том, что вы должны услышать будильник, даже если у вас нет наушников в ушах, но вы оставили их подключенными к телефону. Если вы не хотите такого поведения, используйте другой тип потока (например,STREAM_MUSIC
). - person Michael   schedule 08.03.2019STREAM_ALARM
такое, какое оно есть. Если вы не хотите такого поведения, вам следует использовать другой, более подходящий тип потока. Например, при запуске воспроизведения проверьте, подключены ли наушники, и в зависимости от этого выберите либоSTREAM_ALARM
, либоSTREAM_MUSIC
. - person Michael   schedule 08.03.2019