我有一个带有内置音频的react-native项目,可以在iOS上正常工作,但我不知道如何让它在Android上工作。
在 iOS 上,我只需打开 XCode 并将我的音频文件夹添加到项目中即可。
在Android中,我还没有弄清楚如何做到这一点。
我尝试过的是这样的:
我的音频文件是大写/小写字母和数字的混合。
我遇到的两个问题是我必须将音频文件更改为小写,并且还删除了文件名开头的数字(为每个文件添加了“a_”前缀)。不确定是否有办法允许使用数字和大写音频名称,但是切换到 Android 时必须更改它们很麻烦。
但是,即使这样做了,还是不行。
对于 iOS,我使用过:
path = "audio/" + soundfile
base_path = Sound.MAIN_BUNDLE
var s = new Sound(path, base_path, (e) => {
if (e) {
console.log('error', e);
} else {
s.play(()=>{
s.release()
})
}
});
但是,这在 Android 上不起作用。我发现 Sound.MAIN_BUNDLE 返回“未定义”。我尝试将 base_path 设置为空字符串 '' 。但还是没有运气。
我的路径已修改为:
path = "./assets/audio/a_" + soundfile.toLowerCase()
处理新的音频文件名(开头字母和小写字母)。
我已验证路径正确并指向正确的文件。
错误:
但是,我仍然得到
错误{“代码”:-1,“消息”:“找不到资源”}
问题:
主要问题:我还应该做什么才能播放音频?
第二个问题:有没有更简单的方法来做到这一点,而不需要我的文件名是小写且无法以数字开头?
这似乎解决了我的问题:
path = "a_" + soundfile.toLowerCase()
base_path = ''
var s = new Sound(path, base_path, (e) => {
if (e) {
console.log('error', e);
} else {
s.play(()=>{
s.release()
})
}
});
运行命令
npx react-native-asset
似乎会将音频文件直接复制到android/app/src/main/res/raw/
中。显然原始目录中不允许有子目录,所以我不能在这里放置我的音频目录。