| .. | .. |
|---|
| 28 | 28 | // Listen for app lifecycle changes to suppress autoplay when backgrounded |
|---|
| 29 | 29 | WidgetsBinding.instance.addObserver(_LifecycleObserver()); |
|---|
| 30 | 30 | |
|---|
| 31 | + // Configure audio session for playback — allows audio to continue |
|---|
| 32 | + // when screen locks or app goes to background |
|---|
| 33 | + _player.setAudioContext(AudioContext( |
|---|
| 34 | + iOS: AudioContextIOS( |
|---|
| 35 | + category: AVAudioSessionCategory.playback, |
|---|
| 36 | + options: {AVAudioSessionOptions.mixWithOthers}, |
|---|
| 37 | + ), |
|---|
| 38 | + android: const AudioContextAndroid( |
|---|
| 39 | + isSpeakerphoneOn: false, |
|---|
| 40 | + audioMode: AndroidAudioMode.normal, |
|---|
| 41 | + audioFocus: AndroidAudioFocus.gain, |
|---|
| 42 | + ), |
|---|
| 43 | + )); |
|---|
| 44 | + |
|---|
| 31 | 45 | _player.onPlayerComplete.listen((_) { |
|---|
| 32 | 46 | if (_isChainPlaying) { |
|---|
| 33 | 47 | _playNext(); |
|---|