You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cordova:如何直接播放Android res/raw与iOS resources目录下的MP3

直接播放Android res/raw和iOS Resources目录下的MP3文件(无需复制到assets/www)

没问题,完全可以直接播放这两个平台原生目录里的音频文件,不用复制到assets/www下面。我分平台给你讲清楚具体的路径写法、实现代码和注意事项:

Android 平台

路径规则

Android 的res/raw目录下的音频文件,需要用Android资源URI来访问,格式为:

android.resource://你的应用包名/raw/文件名(不带后缀)

比如你的应用包名是com.yourcompany.yourapp,音频文件是notify.mp3,那么路径就是:

android.resource://com.yourcompany.yourapp/raw/notify

播放代码示例(使用cordova-plugin-media)

// 初始化Media对象
var notificationSound = new Media(
    'android.resource://com.yourcompany.yourapp/raw/notify',
    function() { console.log('音频播放完成'); },
    function(error) { console.error('播放失败:', error); }
);

// 开始播放
notificationSound.play();

注意事项

  • res/raw目录下的文件名只能包含小写字母、数字和下划线,不能有空格或特殊字符,否则系统无法识别。
  • 确保文件已经正确放入res/raw目录(如果是Cordova项目,你可以在platforms/android/app/src/main/res/raw下添加,或者通过config.xml配置自动复制)。

iOS 平台

路径规则

iOS 的resources目录下的文件会被打包到App的主Bundle中,你有两种可靠的路径写法:

  1. 直接写文件名(带后缀):比如notify.mp3
  2. 使用Cordova的cdvfile协议:cdvfile://localhost/bundle/notify.mp3

播放代码示例(使用cordova-plugin-media)

写法一:直接用文件名

var notificationSound = new Media(
    'notify.mp3',
    function() { console.log('音频播放完成'); },
    function(error) { console.error('播放失败:', error); }
);
notificationSound.play();

写法二:使用cdvfile协议(更稳定)

var notificationSound = new Media(
    'cdvfile://localhost/bundle/notify.mp3',
    function() { console.log('音频播放完成'); },
    function(error) { console.error('播放失败:', error); }
);
notificationSound.play();

关键配置

要确保音频文件被正确打包到iOS App中,需要在config.xml里添加如下配置:

<platform name="ios">
    <!-- 将resources目录下的notify.mp3复制到App Bundle根目录 -->
    <resource-file src="resources/notify.mp3" target="notify.mp3" />
</platform>

注意事项

  • iOS 文件名区分大小写,要确保代码里的文件名和实际文件完全一致(比如Notify.mp3和notify.mp3是两个不同的文件)。
  • 检查Xcode项目的Build Phases > Copy Bundle Resources中是否包含你的音频文件,确保打包时不会遗漏。

权限说明

不需要额外申请特殊权限:

  • Android:播放res/raw里的私有资源,默认权限足够,不需要额外添加权限(如果是播放系统通知关联的音频,仅当你需要触发系统通知时才需要POST_NOTIFICATIONS权限,单纯播放音频不需要)。
  • iOS:播放Bundle内的本地音频,不需要任何权限;如果需要后台播放,才需要配置后台模式,但通知类音频一般是前台或通知触发时播放,不需要额外配置。

常见排查点

如果播放失败,可以检查:

  1. 文件名是否符合平台规范(Android小写无特殊字符、iOS大小写一致)。
  2. 文件是否被正确打包到对应平台的目录中。
  3. 确认cordova-plugin-media是最新版本,旧版本可能存在路径兼容问题。

内容的提问来源于stack exchange,提问作者lui

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:40:27