Skip to content
This repository was archived by the owner on Mar 24, 2025. It is now read-only.

Fix audio playing for embedding v2 #91

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -127,14 +126,35 @@ public class AudiofileplayerPlugin
private Map<String, ManagedMediaPlayer> mediaPlayers;
private MethodChannel methodChannel;
private Context context;
private FlutterAssets flutterAssets;

private MediaBrowserCompat mediaBrowser;
private MediaControllerCompat mediaController;

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());
}

Expand All @@ -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<>();
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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);
}
}

Expand Down Expand Up @@ -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) {
Expand Down
2 changes: 2 additions & 0 deletions packages/audiofileplayer/example/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
.pub-cache/
.pub/
/build/
.flutter-plugins-dependencies

# Android related
**/android/**/gradle-wrapper.jar
Expand Down Expand Up @@ -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.*

Expand Down