小程序模板網(wǎng)

技術(shù)課 | 小程序音頻不知道怎么開發(fā)?10分鐘看完這節(jié)課就懂了 ...

發(fā)布時間:2018-05-09 15:46 所屬欄目:小程序開發(fā)教程
想安靜聽歌,即使退出小程序也不會被中斷;
最好還能在系統(tǒng)播放面板上控制小程序音頻;
電話/鬧鐘響起時,小程序音頻最好“識時務(wù)”自動暫停……

 

面對用戶對小程序音頻能力的種種需求,開發(fā)者們是否感到有點束手無措?

 

其實,小程序音頻接口能力就能一舉滿足!本期“小程序課”,微信開發(fā)哥“碼”了關(guān)于小程序音頻能力的好建議,幫助開發(fā)者滿足用戶“挑剔的耳朵”——

 

 

小程序支持播放和錄制音頻。小程序播放音頻的方式有兩種:內(nèi)部音頻和背景音頻。

 

1

內(nèi)部音頻支持用戶在使用小程序過程中播放音效;

 

2

背景音頻支持在用戶離開小程序后繼續(xù)播放音效。

 

 

播放音頻

 

01 播放背景音頻

 

背景音頻接口適用于音樂類小程序,如“音樂站”、“QQ 音樂小電臺”。

 

通過wx.getBackgroundAudioManager() 接口可以獲取全局唯一的背景音頻管理器,所有關(guān)于背景音頻的操作都由它來實現(xiàn)。

 

微信內(nèi)只有一個背景音頻,一個小程序開始播放背景音頻之后,就持有背景音頻播放器,只要當(dāng)前小程序持有背景音頻播放器,即使這個小程序進入后臺(即用戶離開小程序),也可以繼續(xù)使用背景音頻接口,且當(dāng)前小程序不會被微信主動回收;一旦背景音頻播放器被搶占(可能是其他小程序、微信內(nèi)其他音樂、其他 App 的音樂),則小程序不再持有背景音頻播放器。

 

 

(音樂站小程序)

 

 

02 在系統(tǒng)播放面板顯示和控制

 

通過設(shè)置標題、專輯名、歌手名、封面圖等屬性,小程序音頻接口支持在系統(tǒng)音樂播放面板顯示出來。通過響應(yīng)系統(tǒng)面板的點擊事件( onPrev , onNext ),可以實現(xiàn)列表播放。

 

 

(系統(tǒng)播放面板控制效果)

 

內(nèi)部音頻

 

01 播放內(nèi)部音頻

 

內(nèi)部音頻適用于所有小程序,尤其是游戲類目的小程序,如“跳一跳”。

 

通過 wx.createInnerAudioContext() 接口可以創(chuàng)建一個音頻實例。

 

 

每個小程序可以同時持有和播放多個內(nèi)部音頻,但一旦小程序進入后臺(onHide),所有內(nèi)部音頻都會被暫停,且在用戶回到前臺(即打開小程序)之前無法再被播放。

 

02 靜音下也能播放

 

在 iOS 系統(tǒng)中,內(nèi)部音頻默認遵循靜音鍵設(shè)置。如果希望在靜音時也能播放,可以設(shè)置 obeyMuteSwitch 為 false 。

 

 

安卓系統(tǒng)沒有統(tǒng)一的靜音開關(guān),暫不支持此特性。

 

03 處理音頻中斷事件

 

以游戲為例,在游戲中,經(jīng)常有播放使用內(nèi)部音頻來播放游戲背景音樂的場景。音頻中斷事件指的是在游戲期間,音頻被系統(tǒng)打斷時觸發(fā)的事件。音頻中斷事件分為中斷開始和中斷結(jié)束事件,分別使用 wx.onAudioInterruptionBegin() 和 wx.onAudioInterruptionEnd() 來監(jiān)聽。

 

以下事件會觸發(fā)音頻中斷開始事件:接到電話、鬧鐘響起、系統(tǒng)提醒、收到微信好友的語音/視頻通話請求。被中斷之后,小游戲內(nèi)所有音頻會被暫停,并在中斷結(jié)束之前都不能再播放成功。

 

中斷結(jié)束之后,被暫停的音頻不會自動繼續(xù)播放,游戲可監(jiān)聽音頻中斷結(jié)束事件,并在收到中斷結(jié)束事件之后調(diào)用背景音樂繼續(xù)播放。

 

 

如果游戲的邏輯強依賴音樂的播放(如音樂類游戲),需要在音頻開始中斷的時候暫停游戲。

 

 

(跳一跳小游戲)

 

二 錄制音頻

通過 wx.getRecorderManager 接口,可以獲取全局唯一的錄音管理器。

 

 

01 實現(xiàn)邊錄邊傳

默認情況下,錄音結(jié)束后會生成一個本地文件,并通過回調(diào)返回本地文件的地址。對于實時性要求比較高的小程序(如“面對面翻譯”),可以通過設(shè)置 frameSize 參數(shù)來設(shè)置一個幀的大小,這樣每錄制指定幀大小的內(nèi)容后,會通過 onFrameRecorded 回調(diào)返回本次分片的數(shù)據(jù)。

 

 

注意事項

不建議使用的歷史接口

上述接口可以滿足所有音頻相關(guān)的需求。除了上述接口,小程序內(nèi)還有若干跟音頻相關(guān)的接口(如 wx.startRecord 、 wx.playVoice 、 wx.playBackgroundAudio 等)。這些接口由于早期設(shè)計存在一些缺陷,我們不建議繼續(xù)使用。



易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://22321a.com/wxmini/doc/course/24406.html 復(fù)制鏈接 如需定制請聯(lián)系易優(yōu)客服咨詢:800182392 點擊咨詢
QQ在線咨詢