小程序 InnerAudioContext 的 坑,播放云存储

2020-04-15  本文已影响0人  半亩塘读书会

好久没写小程序了,最近打开了《微信开发者工具》 发现改版改的挺不错,各种颜色提示,代码自动缩进什么的,差点就让我爱上写小程序了

然而

鹅厂的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

https://developers.weixin.qq.com/community/develop/doc/0006cc72970318081c682ff5151800?jumpto=comment&commentid=0004023a9540189f30c982ab4560

后来,经过测试,在手机中报错可能是 开发者工具中的音频格式和手机的不一样。

反正。开发和真机不一致很不爽

上一篇下一篇

猜你喜欢

热点阅读