Я пытаюсь воспроизвести звук на динамике, даже если наушники включены, НО, если в фоновом режиме играет музыка, я хочу, чтобы музыка воспроизводилась в наушниках до тех пор, пока звук не будет воспроизведен.
Итак, я делаю следующие шаги:
- Перед воспроизведением звука я получаю audioFocus, поэтому вся фоновая музыка останавливается.
- После того, как audioFocus получен, я установил
MODE_COMMUNICATION
в AudioManager, чтобы звук можно было воспроизводить на динамике. - После окончания звука я отказываюсь от AudioFocus и устанавливаю обратно
MODE_NORMAL
наAudioManager
, чтобы фоновая музыка могла продолжать играть в наушниках.
Странно то, что это зависит от устройства, на некоторых устройствах это нормально, но на устройствах Nexus 6P (Huawei) после установки MODE_COMMUNICATION
есть задержка 3-4 секунды, прежде чем звук может быть воспроизведен. Если воспроизвести звук без задержки, то он не воспроизводится ни в динамик, ни в наушники.
ВОПРОС
Как я могу узнать, какую задержку установить перед воспроизведением звука? Есть ли какой-нибудь прослушиватель, который я могу подключить, чтобы он мог уведомить меня, что после установки MODE_COMMUNICATION
звук готов к воспроизведению?
Я не хочу устанавливать задержку, даже если в этом нет необходимости!
Решение не в том, чтобы установить режим в конструкторе класса (чтобы пропустить задержку), потому что мне нужно, чтобы звук воспроизводился на динамике в определенный момент!
P.S: Я проигрываю звук с AudioTrack
, но пробовал и с MediaPlayer
(настройка setAudioStreamType(MODE_IN_COMMUNICATION)
), но безрезультатно, задержка осталась!
Итак, какие-либо предложения?