微信小程序innerAudioContext设置autoplay为true后,切换src时播放器状态的变化
innerAudioContext是微信小程序自带的页面内播放器,可以通过 wx.createInnerAudioContext 接口获取实例。innerAudioContext 的用法如下:
首先获取播放器实例
const innerAudioContext = wx.createInnerAudioContext()
播放音乐需要设置innerAudioContext的src
innerAudioContext.src = XXXXX.mp3
不同于BackgroundAudioManager设置了src后播放器会自动播放,innerAudioContext在设置了音乐的src后,需要手动控制播放。
可以调用play()方法来播放音乐
innerAudioContext.play()
如果不想手动播放的话,可以设置innerAudioContext的autoplay属性,将其设置为自动播放
innerAudioContext.autoplay = true
设置了自动播放后,只要改变了音乐的src,innerAudioContext就会自动播放最新设置的音乐。这里研究了下切换src时播放器的状态,算是一点冷门的东西了。
首先,在把autoplay属性设置为true时,切换到另一个不同的src时,音乐会自动播放;但如果切换的src与之前的src相同,播放器则不会播放新的src
innerAudioContext.autoplay = true
innerAudioContext.src = a.mp3
//播放器播放a.mp3
innerAudioContext.src = b.mp3
//播放器播放b.mp3
innerAudioContext.autoplay = true
innerAudioContext.src = a.mp3
//播放器播放a.mp3
innerAudioContext.src = a.mp3
//播放器不再播放a.mp3
这时如果想实现再次播放的话,只能手动调用play()方法
innerAudioContext.autoplay = true
innerAudioContext.src = a.mp3
//播放器播放a.mp3
innerAudioContext.src = a.mp3
innerAudioContext.play()
//播放器从头播放a.mp3
在切换播放音乐的src时,播放器的状态也会发生改变,官方提供了几个API例如onstop(),onPause(),onplay()等等来监听播放器的状态从而进行交互。这里主要讨论onstop()和onPause()。
经过实践发现在切换src时,播放器的状态与手机的操作系统有关(ios和android)
在android手机上,切换src时会触发播放器的stop()方法,然后再播放新的src
在ios手机上,切换src时会触发播放器的pause()方法,然后再播放新的src
innerAudioContext.autoplay = true
innerAudioContext.src = a.mp3
//播放器播放a.mp3
innerAudioContext.src = b.mp3
//播放器播放b.mp3
innerAudioContext.onStop((res) => {
console.log('音乐停止')
})
innerAudioContext.onPause((res) => {
console.log('音乐暂停')
})
//在android手机上显示 音乐停止
//在ios手机上显示 音乐暂停