小程序 InnerAudioContext 的 坑,播放云存储
好久没写小程序了,最近打开了《微信开发者工具》 发现改版改的挺不错,各种颜色提示,代码自动缩进什么的,差点就让我爱上写小程序了
然而
鹅厂的api果然还是一如既往的坑
在写一个音频播放功能时,
发现,
这样的代码 InnerAudioContext.play();
播放刚录的音没问题,
但是播放 云 存储中的录音 就莫名奇妙出问题了,
模拟器上有时正常,有时会不出声,有时会出个怪声然后静音,
android真机上 直接 errCode:602 not found param, 再按 play 按钮 会出 errCode:55 unkonw format
郁闷好久,只能无奈的笑呵呵。。。
网上找了半天,发现说要用上 innerAudioContext.onCanplay 才不会报错
最终代码如下
//on的监听注意要放在onload,每on一次就多个监听实例
onLoad: function (options) {
InnerAudioContext.onPlay(() => { InnerAudioContext.offCanplay() });
InnerAudioContext.onEnded(() => { wx.hideLoading() });//我这里不用 onstop
}
//注意 重点来了
//先判断 当前播放地址是否与 将要播放的地址 一致 ,一致时不会回调onCanplay
if( InnerAudioContext.src == play_src ){
InnerAudioContext.play();
}else{ //不一致时 要用 onCanplay 才不会报错和出奇怪的问题
InnerAudioContext.src =play_src ;
InnerAudioContext.onCanplay(() => {
InnerAudioContext.play();
})
}
重点是,这些东西 在文档里 没有写,
重点是,这些东西 本应小程序自己后台解决的,我们不论播放什么都只用 InnerAudioContext.play(); 就完了
最后吐槽一下 win版 微信开发者工具 竟然不能选 模拟器 左右的位置
顺便再吐槽一个 1年都没改的 文档 bug
后来,经过测试,在手机中报错可能是 开发者工具中的音频格式和手机的不一样。
反正。开发和真机不一致很不爽