Я использую just_audio для воспроизведения звука в своем приложении вместе с audio_session. Когда мое приложение воспроизводит звук, я хочу, чтобы звук других приложений останавливался или приглушался и возобновлялся/отключался, когда мои приложения прекращают воспроизведение звука.
Текущий код
Вот как я сейчас представляю audio_session:
Код: Выделить всё
final session = await AudioSession.instance;
await session.configure(AudioSessionConfiguration(
androidAudioFocusGainType: AndroidAudioFocusGainType.gainTransientMayDuck,
androidWillPauseWhenDucked: false,
));
Код: Выделить всё
AudioPlayer activePlayer = AudioPlayer(handleInterruptions: true);
await activePlayer.setAndroidAudioAttributes(AndroidAudioAttributes(
usage: AndroidAudioUsage.alarm,
contentType: AndroidAudioContentType.music,
));
await activePlayer.setLoopMode(loopMode);
await activePlayer.setAudioSource(AudioSource.uri(Uri.parse(ringtoneUri)));
await activePlayer.setVolume(volume);
// Other apps audio should stop/duck here
activePlayer?.play();
...
// Other apps audio should resume/unduck here
await activePlayer?.stop();
Звук другого приложения приглушается (уменьшается по громкости) при воспроизведении(), но не отключается (возвращение к нормальной громкости) при stop(). Пробовал это с несколькими другими приложениями.
Изменить: похоже, что другое приложение получает фокус, когда мое приложение закрывается. Значит, мне нужно вызвать что-то кроме stop(), чтобы освободить фокус от моего приложения?
Что я здесь делаю не так?
Информация об устройстве
В настоящее время я тестирую эмулятор Android 14 (Google API). Но такое же поведение будет и на устройствах Android 13. На старых устройствах еще не тестировал.
Подробнее здесь: https://stackoverflow.com/questions/784 ... on-android