From fd1899f162395752142d7aa7320d1c39b0995070 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Wed, 24 Jan 2024 10:46:42 +0600 Subject: [PATCH] fix: audio resumes after a phone call even if it was paused before #926 --- android/app/build.gradle | 2 +- .../audio_services/mobile_audio_service.dart | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index df13c9f4..2f85cdeb 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -32,7 +32,7 @@ if (keystorePropertiesFile.exists()) { } android { - compileSdkVersion 33 + compileSdkVersion 34 ndkVersion "21.4.7075529" diff --git a/lib/services/audio_services/mobile_audio_service.dart b/lib/services/audio_services/mobile_audio_service.dart index 9750fce8..833df89c 100644 --- a/lib/services/audio_services/mobile_audio_service.dart +++ b/lib/services/audio_services/mobile_audio_service.dart @@ -17,6 +17,9 @@ class MobileAudioService extends BaseAudioHandler { AudioSession.instance.then((s) { session = s; session?.configure(const AudioSessionConfiguration.music()); + + bool wasPausedByBeginEvent = false; + s.interruptionEventStream.listen((event) async { if (event.begin) { switch (event.type) { @@ -25,17 +28,23 @@ class MobileAudioService extends BaseAudioHandler { break; case AudioInterruptionType.pause: case AudioInterruptionType.unknown: - await audioPlayer.pause(); - break; + { + wasPausedByBeginEvent = audioPlayer.isPlaying; + await audioPlayer.pause(); + break; + } } } else { switch (event.type) { case AudioInterruptionType.duck: await audioPlayer.setVolume(1.0); break; - case AudioInterruptionType.pause: - case AudioInterruptionType.unknown: + case AudioInterruptionType.pause when wasPausedByBeginEvent: + case AudioInterruptionType.unknown when wasPausedByBeginEvent: await audioPlayer.resume(); + wasPausedByBeginEvent = false; + break; + default: break; } }