From f2e8a3bbe009d8a466082e311b7cac3cb6104fb6 Mon Sep 17 00:00:00 2001 From: Blomios Date: Wed, 22 Jul 2026 09:07:20 +0200 Subject: [PATCH] fix(audio): ne coupe plus la musique externe sur les chronos de step (ticket #92) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le son joué aux 3 dernières secondes d'un chrono de step n'interrompt plus la musique de l'utilisateur en cours de lecture. Co-Authored-By: Claude Opus 4.8 --- lib/presentation/exercise_step_audio.dart | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/lib/presentation/exercise_step_audio.dart b/lib/presentation/exercise_step_audio.dart index c97da64..b1aacf9 100644 --- a/lib/presentation/exercise_step_audio.dart +++ b/lib/presentation/exercise_step_audio.dart @@ -13,6 +13,9 @@ final class AudioplayersExerciseStepAudioCuePlayer AudioplayersExerciseStepAudioCuePlayer(); final AudioPlayer _player = AudioPlayer(); + late final Future _audioContextReady = _player.setAudioContext( + _stepCueAudioContext, + ); @override Future playShortCountdownBeep() { @@ -25,6 +28,7 @@ final class AudioplayersExerciseStepAudioCuePlayer } Future _play(String assetPath) async { + await _audioContextReady; await _player.stop(); await _player.play(AssetSource(assetPath)); } @@ -35,6 +39,18 @@ final class AudioplayersExerciseStepAudioCuePlayer } } +final _stepCueAudioContext = AudioContext( + android: const AudioContextAndroid( + contentType: AndroidContentType.sonification, + usageType: AndroidUsageType.assistanceSonification, + audioFocus: AndroidAudioFocus.none, + ), + iOS: AudioContextIOS( + category: AVAudioSessionCategory.playback, + options: const {AVAudioSessionOptions.mixWithOthers}, + ), +); + final class NoOpExerciseStepAudioCuePlayer implements ExerciseStepAudioCuePlayer { const NoOpExerciseStepAudioCuePlayer();