【问题标题】:Native file path本机文件路径
【发布时间】:2021-02-16 13:30:34
【问题描述】:

我已经开始开发音乐播放器。我做了一些额外的 kotlin 逻辑来从 Android 检索设备上的所有音频文件元数据作为元数据列表。我试图了解 just_audio 理解的原生路径应该是什么样子。我当前的实现使用不推荐使用的密钥 - MediaStore.Audio.Media.DATA 用于 contentResolver,它返回类似 /storage/emulated/0/Download/scifri20181123-episode.mp3 的路径。插件可以使用此路径还是我需要找到另一种方法来检索不同格式的路径? 同样的问题也适用于专辑封面。

【问题讨论】:

    标签: flutter just-audio


    【解决方案1】:

    是的,如果它是一个有效的文件路径,那么 just_audio 将能够打开它。你可以把它传递给setFilePath:

    var filePath = '/storage/emulated/....../foo.mp3';
    await player.setFilePath(filePath);
    

    这是一种方便的方法:

    setAudioSource(AudioSource.uri(Uri.file(filePath)));
    

    Uri.file(filePath) 将创建一个 Uri 实例,其中包含类似file:///storage/emulated/.... 的内容。在引擎盖下。

    请注意,如果您的应用尝试访问其自己的应用数据/缓存目录之外的任何文件,它也需要权限才能这样做,并且有 other Flutter packages 可以帮助您。

    另请注意,还有一个使用名为 flutter_audio_query 的内容解析器 API 的现有 Flutter 包,因此如果它包含您需要的内容,您可能不需要编写自己的 Kotlin 代码。

    【讨论】:

    • 使用setAudioSource(AudioSource.uri(Uri.file(filePath)))时,文件路径可以直接指向flutter目录下的assets,不需要额外的权限吗?我正在尝试将本地文件加载到播放列表中并出现无此类文件错误
    • 还有另一种方法称为setAsset(assetPath),它是setAudioSource(AudioSource.uri(Uri.parse('asset:///$assetPath')) 的便捷方法。这直接从应用的 AssetBundle 访问资产,不需要任何特殊权限。
    • 我不知道那个flutter包,我自己做了一切:),我可以比较那个插件在做什么
    猜你喜欢
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 2013-08-22
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多