From ba56001f718b500001984719dc2e931b0e8f44b5 Mon Sep 17 00:00:00 2001 From: Morgan McKenzie Date: Tue, 6 Oct 2020 18:34:31 -0700 Subject: [PATCH] Fix audio playing for embedding v2 --- .../AudiofileplayerPlugin.java | 37 +++++++++++++++---- packages/audiofileplayer/example/.gitignore | 2 + 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/packages/audiofileplayer/android/src/main/java/com/google/flutter/plugins/audiofileplayer/AudiofileplayerPlugin.java b/packages/audiofileplayer/android/src/main/java/com/google/flutter/plugins/audiofileplayer/AudiofileplayerPlugin.java index f983c26..7419487 100644 --- a/packages/audiofileplayer/android/src/main/java/com/google/flutter/plugins/audiofileplayer/AudiofileplayerPlugin.java +++ b/packages/audiofileplayer/android/src/main/java/com/google/flutter/plugins/audiofileplayer/AudiofileplayerPlugin.java @@ -23,7 +23,6 @@ import androidx.annotation.NonNull; import androidx.core.app.NotificationCompat; import androidx.media.session.MediaButtonReceiver; -import io.flutter.embedding.engine.loader.FlutterLoader; import io.flutter.embedding.engine.plugins.FlutterPlugin; import io.flutter.embedding.engine.plugins.activity.ActivityAware; import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding; @@ -127,6 +126,7 @@ public class AudiofileplayerPlugin private Map mediaPlayers; private MethodChannel methodChannel; private Context context; + private FlutterAssets flutterAssets; private MediaBrowserCompat mediaBrowser; private MediaControllerCompat mediaController; @@ -134,7 +134,27 @@ public class AudiofileplayerPlugin public static void registerWith(Registrar registrar) { AudiofileplayerPlugin instance = new AudiofileplayerPlugin(); instance.registrar = registrar; - instance.initInstance(registrar.messenger(), registrar.context()); + instance.initInstance(registrar.messenger(), new FlutterAssets() { + @Override + public String getAssetFilePathByName(@NonNull String assetFileName) { + return registrar.lookupKeyForAsset(assetFileName); + } + + @Override + public String getAssetFilePathByName(@NonNull String assetFileName, @NonNull String packageName) { + return registrar.lookupKeyForAsset(assetFileName, packageName); + } + + @Override + public String getAssetFilePathBySubpath(@NonNull String assetSubpath) { + return registrar.lookupKeyForAsset(assetSubpath); + } + + @Override + public String getAssetFilePathBySubpath(@NonNull String assetSubpath, @NonNull String packageName) { + return registrar.lookupKeyForAsset(assetSubpath, packageName); + } + }, registrar.context()); instance.registerLifecycleCallbacks(instance.activity()); } @@ -143,8 +163,9 @@ private void registerLifecycleCallbacks(Activity activity) { activity.getApplication().registerActivityLifecycleCallbacks(callbacks); } - private void initInstance(BinaryMessenger messenger, Context context) { + private void initInstance(BinaryMessenger messenger, FlutterPlugin.FlutterAssets flutterAssets, Context context) { this.context = context; + this.flutterAssets = flutterAssets; methodChannel = new MethodChannel(messenger, CHANNEL); methodChannel.setMethodCallHandler(this); mediaPlayers = new HashMap<>(); @@ -172,7 +193,7 @@ private Context activeContext() { @Override public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) { - initInstance(binding.getBinaryMessenger(), binding.getApplicationContext()); + initInstance(binding.getBinaryMessenger(), binding.getFlutterAssets(), binding.getApplicationContext()); } @Override @@ -266,6 +287,7 @@ public void onMethodCall(MethodCall call, Result result) { // All subsequent calls need a valid player. ManagedMediaPlayer player = getAndVerifyPlayer(call, result); + if (player == null) return; if (call.method.equals(PLAY_METHOD)) { Boolean playFromStartBoolean = call.argument(PLAY_FROM_START); @@ -339,7 +361,7 @@ private void onLoad(MethodCall call, Result result) { if (call.argument(FLUTTER_PATH) != null) { String flutterPath = call.argument(FLUTTER_PATH).toString(); AssetManager assetManager = context.getAssets(); - String key = FlutterLoader.getInstance().getLookupKeyForAsset(flutterPath); + String key = flutterAssets.getAssetFilePathByName(flutterPath); AssetFileDescriptor fd = assetManager.openFd(key); ManagedMediaPlayer newPlayer = new LocalManagedMediaPlayer(audioId, fd, this, looping, playInBackground); @@ -387,7 +409,7 @@ private void onLoad(MethodCall call, Result result) { return; } } catch (Exception e) { - result.error(ERROR_CODE, "Could not create ManagedMediaPlayer:" + e.getMessage(), null); + result.error(ERROR_CODE, "Could not create ManagedMediaPlayer: " + e.getMessage(), null); } } @@ -508,7 +530,8 @@ public void onActivityStopped(Activity activity) { } @Override - public void onActivitySaveInstanceState(Activity activity, Bundle outState) {} + public void onActivitySaveInstanceState(Activity activity, Bundle outState) { + } @Override public void onActivityDestroyed(Activity activity) { diff --git a/packages/audiofileplayer/example/.gitignore b/packages/audiofileplayer/example/.gitignore index 07488ba..99a69f9 100644 --- a/packages/audiofileplayer/example/.gitignore +++ b/packages/audiofileplayer/example/.gitignore @@ -26,6 +26,7 @@ .pub-cache/ .pub/ /build/ +.flutter-plugins-dependencies # Android related **/android/**/gradle-wrapper.jar @@ -59,6 +60,7 @@ **/ios/Flutter/app.flx **/ios/Flutter/app.zip **/ios/Flutter/flutter_assets/ +**/ios/Flutter/flutter_export_environment.sh **/ios/ServiceDefinitions.json **/ios/Runner/GeneratedPluginRegistrant.*