From c1716cbb3b421eef1a1c6fbfc9b4f5833dfe62b6 Mon Sep 17 00:00:00 2001 From: Ryan Heise Date: Sat, 22 Aug 2020 13:44:51 +1000 Subject: [PATCH] Configure AndroidAudioAttributes from audio_session. --- .../main/java/com/ryanheise/just_audio/AudioPlayer.java | 3 ++- example/pubspec.lock | 2 +- lib/just_audio.dart | 9 +++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/android/src/main/java/com/ryanheise/just_audio/AudioPlayer.java b/android/src/main/java/com/ryanheise/just_audio/AudioPlayer.java index b0a844d..f2986f7 100644 --- a/android/src/main/java/com/ryanheise/just_audio/AudioPlayer.java +++ b/android/src/main/java/com/ryanheise/just_audio/AudioPlayer.java @@ -553,11 +553,12 @@ public class AudioPlayer implements MethodCallHandler, Player.EventListener, Aud } private void setAudioAttributes(Map json) { + ensurePlayerInitialized(); AudioAttributes.Builder builder = new AudioAttributes.Builder(); builder.setContentType((Integer)json.get("contentType")); builder.setFlags((Integer)json.get("flags")); builder.setUsage((Integer)json.get("usage")); - builder.setAllowedCapturePolicy((Integer)json.get("allowedCapturePolicy")); + //builder.setAllowedCapturePolicy((Integer)json.get("allowedCapturePolicy")); player.setAudioAttributes(builder.build()); } diff --git a/example/pubspec.lock b/example/pubspec.lock index c1fa9ef..87f7303 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -113,7 +113,7 @@ packages: path: ".." relative: true source: path - version: "0.3.3" + version: "0.3.4" matcher: dependency: transitive description: diff --git a/lib/just_audio.dart b/lib/just_audio.dart index 46e6569..23e5373 100644 --- a/lib/just_audio.dart +++ b/lib/just_audio.dart @@ -200,6 +200,14 @@ class AudioPlayer { onError: _playbackEventSubject.addError, ); _sequenceSubject.add(null); + // Respond to changes to AndroidAudioAttributes configuration. + AudioSession.instance.then((audioSession) { + audioSession.configurationStream + .map((conf) => conf?.androidAudioAttributes) + .where((attributes) => attributes != null) + .distinct() + .listen(setAndroidAudioAttributes); + }); } /// The latest [PlaybackEvent]. @@ -636,6 +644,7 @@ class AudioPlayer { /// platforms. This will cause a new Android AudioSession ID to be generated. Future setAndroidAudioAttributes( AndroidAudioAttributes audioAttributes) async { + if (audioAttributes == null) return; await _invokeMethod( 'setAndroidAudioAttributes', [audioAttributes.toJson()]); }