小编Ruc*_*oni的帖子

Android:从URI获取音频元数据

目标:我使用 flutter 创建了一个音乐播放器。我想播放另一个应用程序中的音频文件。为此,我使用了方法通道在 flutter 和 Android 之间进行通信。并且我从 Intent 获取了以下 URI。

Received URI:content://com.mi.android.globalFileexplorer.myprovider/external_files/song.mp3
Received PATH:/external_files/song.mp3
Run Code Online (Sandbox Code Playgroud)

我的代码

private MediaMetadataRetriever song details;
    private MetadataDetails[] songDetails;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        songDetails = new MediaMetadataRetriever();
        Intent intent = getIntent();

        new MethodChannel(AudioServicePlugin.getFlutterEngine(this).getDartExecutor().getBinaryMessenger(), CHANNEL).setMethodCallHandler(
                (call, result) -> {
                    if (call.method.equals("song")) {
                        if(intent != null && intent.getData() !=null) {
                            songDetails.setDataSource(intent.getData().getPath());
                            result.success(songDetails);
                        }
                        else {
                            result.success(null);
                        }
                    }
                });
    }

Run Code Online (Sandbox Code Playgroud)

当我获取歌曲详细信息时,出现以下错误。

ERROR:setDataSource failed: status = 0xFFFFFFEA
Run Code Online (Sandbox Code Playgroud)

我已经尝试过下面的代码。

FileInputStream file = new FileInputStream(intent.getData().getPath());
                               songDetails.setDataSource(file.getFD());
Run Code Online (Sandbox Code Playgroud)

但这对我不起作用。

谁能指导我如何去做?

android android-intent flutter flutter-method-channel

4
推荐指数
1
解决办法
361
查看次数