项目里自己用 AudioSource 写的音频管理,打包到oppo、vivo原生平台后总是会有奇奇怪怪的bug,干脆直接改为调用其原生的音频API了,在此记录。
以OPPO、VIVO调用本地音频为例:
// OPPO API文档示例
var audio = qg.createInnerAudioContext();
audio.loop = true;
audio.volume = 0.7;
audio.autoplay = false;
var playSound = function () {
audio.play();
audio.offCanplay(playSound);
};
audio.onCanplay(playSound);
audio.src = "res/demo.mp3";
那么 src 要怎么获取呢?一开始在以前的贴子了看到了相关的解决方法:
let audioMap = bundle["_config"]["assetInfos"]["_map"];
let obj = audioMap[key];
bundle["_config"]["base"] + "native/" + key.slice(0, 2) + "/" + obj["uuid"] + "." + obj["nativeVer"] + ".mp3"
后来发现 AudioClip 自带属性可以直接获取:
audioClip.nativeUrl
audioClip._nativeAsset.url
但是后面用官网的示例代码测试一直没有反应,以为是路径的缘故,查了半天没有找到解决方案,后来修改了官网的示例代码,倒是可以播放了:
// OPPO API文档示例
var playSound = function () {
audio.play();
audio.offCanplay(playSound);
};
audio.onCanplay(playSound);
// 修改为直接播放
audio.play();