天天看點

微信小程式innerAudioContext設定autoplay為true後,切換src時播放器狀态的變化

微信小程式innerAudioContext設定autoplay為true後,切換src時播放器狀态的變化

innerAudioContext是微信小程式自帶的頁面内播放器,可以通過 wx.createInnerAudioContext 接口擷取執行個體。innerAudioContext 的用法如下:

首先擷取播放器執行個體

播放音樂需要設定innerAudioContext的src

innerAudioContext.src = XXXXX.mp3
           

不同于BackgroundAudioManager設定了src後播放器會自動播放,innerAudioContext在設定了音樂的src後,需要手動控制播放。

可以調用play()方法來播放音樂

如果不想手動播放的話,可以設定innerAudioContext的autoplay屬性,将其設定為自動播放

設定了自動播放後,隻要改變了音樂的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手機上顯示 音樂暫停