W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
my.createInnerAudioContext 是在小程序內(nèi)創(chuàng)建并返回內(nèi)部音頻(與背景音頻相對應(yīng)) innerAudioContext 對象的 API。又稱“前景音頻”,用戶離開頁面即停止播放。
第一步:開發(fā)者可以在 .axml 文件中寫入相關(guān)的組件(如 button 或者 view)來控制音樂的播放和暫停等,以下示例代碼僅供參考:
<!--.axml-->
<view class="operation-item" onTap="play">播放</view>
<view class="operation-item" onTap="pause">暫停</view>
<view class="operation-item" onTap="stop">停止</view>
<view class="operation-item" onTap="seek">播放進度跳轉(zhuǎn)</view>
<view class="operation-item" onTap="offAudioInterruptionBegin">取消監(jiān)聽音頻因為系統(tǒng)占用而被中斷的開始事件</view>
<view class="operation-item" onTap="offAudioInterruptionEnd">取消監(jiān)聽音頻被中斷的結(jié)束事件</view>
第二步:開發(fā)者獲取前景音樂 innerAudioContext 對象后,添加屬性并注冊對應(yīng)監(jiān)聽事件。
//.js
onLoad(){
//創(chuàng)建前景音頻上下文對象。
this.innerAudioContext = my.createInnerAudioContext();
//來源于優(yōu)酷的音頻碼,用于直接播放。支持音頻格式:AAC,MP3。如果開發(fā)者不傳入音頻碼,控制臺不會報錯,但無音頻播放。
this.innerAudioContext.src = '音頻src';
//是否自動開始播放,默認為 false。
this.innerAudioContext.autoplay = false;
//是否循環(huán)播放,默認為 false。
this.innerAudioContext.loop = false;
//是否遵循系統(tǒng)靜音開關(guān),當(dāng)此參數(shù)為 false 時,即使用戶打開了靜音開關(guān),也能繼續(xù)發(fā)出聲音,默認值為 true (注意:此參數(shù)僅 iOS 支持)。
this.innerAudioContext.obeyMuteSwitch = false;
this.innerAudioContext.onPlay(() => {
console.log("innerAudioContext onPlay 開始播放")
my.alert({ content:'innerAudioContext 前景音頻播放事件 onPlay' });
});
this.innerAudioContext.onPause(() => {
console.log("innerAudioContext onPause 暫停播放")
my.alert({ content:'innerAudioContext 前景音頻暫停事件 onPause' });
});
this.innerAudioContext.onStop(() => {
console.log("innerAudioContext onStop 停止播放")
my.alert({ content:'innerAudioContext 前景音頻停止事件 onStop' });
});
this.innerAudioContext.onSeeking(() => {
console.log("innerAudioContext onSeeking 跳轉(zhuǎn)播放事件")
my.alert({ content:'innerAudioContext 前景音頻跳轉(zhuǎn)播放事件 onSeeking' });
});
this.innerAudioContext.onError(() => {
console.log("innerAudioContext onError 前景音頻播放錯誤事件")
my.alert({ content:'innerAudioContext 前景音頻播放錯誤事件 onError' });
});
//監(jiān)聽音頻因為系統(tǒng)占用而被中斷的開始事件
my.onAudioInterruptionBegin(() => {
console.log('innerAudioContext onAudioInterruptionBegin');
});
//監(jiān)聽音頻被中斷的結(jié)束事件
my.onAudioInterruptionEnd(() => {
console.log('innerAudioContext onAudioInterruptionEnd');
});
},
第三步:開發(fā)者在 .js 文件中寫入以下方法,配合上一步的組件,播放音頻,以下示例代碼僅供參考:
//.js
// 播放音樂
play() {
this.innerAudioContext.play();
console.log("call innerAudioContext.play");
my.alert({ content: "call innerAudioContext.play" });
},
// 暫停播放
pause() {
this.innerAudioContext.pause();
console.log("call innerAudioContext.pause");
my.alert({ content: "call innerAudioContext.pause" });
},
// 停止播放
stop() {
this.innerAudioContext.stop()
console.log("call innerAudioContext.stop");
my.alert({ content: "call innerAudioContext.stop" });
},
//播放進度調(diào)整
seek(){
this.innerAudioContext.seek(3.333);
console.log("call innerAudioContext.seek");
my.alert({ content: "innerAudioContext.seek" });
},
//取消監(jiān)聽音頻因為系統(tǒng)占用而被中斷的開始事件。
offAudioInterruptionBegin(){
my.offAudioInterruptionBegin();
console.log('innerAudioContext offAudioInterruptionBegin');
},
//取消監(jiān)聽音頻被中斷的結(jié)束事件。
offAudioInterruptionEnd(){
my.onAudioInterruptionEnd();
console.log('innerAudioContext offAudioInterruptionEnd');
},
返回值為 innerAudioContext。
屬性 | 類型 | 是否只讀 | 說明 |
---|---|---|---|
src | String | 否 | 音頻碼,用于直接播放。支持音頻格式:AAC,MP3。如果開發(fā)者不傳入音頻碼,控制臺不會報錯,但無音頻播放。注意:只支持來源于優(yōu)酷的音頻碼。 |
startTime | Number | 否 | 開始播放的位置,單位為秒(s),默認從 0 開始播放。 |
autoplay | Boolean | 否 | 是否自動開始播放,默認為 false。 |
loop | Boolean | 否 | 是否循環(huán)播放,默認為 false。 |
obeyMuteSwitch | Boolean | 否 | 是否遵循系統(tǒng)靜音開關(guān),當(dāng)此參數(shù)為 false 時,即使用戶打開了靜音開關(guān),也能繼續(xù)發(fā)出聲音,默認值為 true (注意:此參數(shù)僅 iOS 支持)。 |
duration | Number | 是 | 當(dāng)前音頻的長度,單位為秒(s),只有在當(dāng)前有合法的 src 時返回。 |
currentTime | Number | 是 | 當(dāng)前音頻的播放位置,單位為秒(s),只有在當(dāng)前有合法的 src 時返回,時間不取整。 |
paused | Boolean | 是 | 當(dāng)前是否為暫停或停止?fàn)顟B(tài),true 表示暫?;蛲V?,false 表示正在播放。 |
buffered | Number | 是 | 音頻緩沖的時間點,僅保證當(dāng)前播放時間點到此時間點內(nèi)容已緩沖。 |
volume | Number | 否 | 音量。范圍 0~1。例如:this.innerAudioContext.volump = 0.5 |
方法 | 參數(shù) | 說明 |
---|---|---|
play | 無 | 播放。 |
pause | 無 | 暫停。 |
stop | 無 | 停止。 |
seek | position | 跳轉(zhuǎn)到指定位置,單位為秒(s)。精確到小數(shù)點后 3 位,即支持 毫秒(ms) 級別精確度。 |
destroy | 無 | 銷毀當(dāng)前實例。 |
onCanplay | Function callback | 監(jiān)聽前景音頻進入可以播放狀態(tài),但不保證后面可以流暢播放。 |
onPlay | Function callback | 監(jiān)聽前景音頻播放事件。 |
onPause | Function callback | 監(jiān)聽前景音頻暫停事件。 |
onStop | Function callback | 監(jiān)聽前景音頻停止事件。 |
onEnded | Function callback | 監(jiān)聽前景音頻自然播放結(jié)束事件。 |
onTimeUpdate | Function callback | 監(jiān)聽前景音頻播放進度更新事件。 |
onError | Function callback | 監(jiān)聽前景音頻播放錯誤事件。 |
onWaiting | Function callback | 監(jiān)聽前景音頻加載中事件,當(dāng)音頻因為數(shù)據(jù)不足,需要停下來加載時會觸發(fā)。 |
onSeeking | Function callback | 監(jiān)聽前景音頻開始播放進度跳轉(zhuǎn)的操作事件。 |
onSeeked | Function callback | 監(jiān)聽前景音頻完成播放進度跳轉(zhuǎn)的操作事件。 |
offCanplay | Function callback | 取消監(jiān)聽 onCanplay 事件。 |
offPlay | Function callback | 取消監(jiān)聽 onPlay 事件。 |
offPause | Function callback | 取消監(jiān)聽 onPause 事件。 |
offStop | Function callback | 取消監(jiān)聽 onStop 事件。 |
offEnded | Function callback | 取消監(jiān)聽 onEnded 事件。 |
offTimeUpdate | Function callback | 取消監(jiān)聽 onTimeUpdate 事件。 |
offError | Function callback | 取消監(jiān)聽 onError 事件。 |
offWaiting | Function callback | 取消監(jiān)聽 onWaiting 事件。 |
offSeeking | Function callback | 取消監(jiān)聽 onSeeking 事件。 |
offSeeked | Function callback | 取消監(jiān)聽 onSeeked 事件。 |
錯誤碼 | 描述 | 解決方案 |
---|---|---|
10001 | 系統(tǒng)錯誤。 | 請檢查手機系統(tǒng),并重試。 |
10002 | 網(wǎng)絡(luò)錯誤。 | 請檢查網(wǎng)絡(luò)設(shè)置,并重試。 |
10003 | 文件錯誤。 | 請檢查文件,并重試。 |
10004 | 格式錯誤。 | 請檢查格式問題,并重試。 |
-1 | 未知錯誤。 |
A:onTimeUpdate 等監(jiān)聽事件在再次進入頁面時失效不執(zhí)行,二次進入界面的時候消息沒辦法傳遞出去,導(dǎo)致頁面出錯沒有更新頁面數(shù)據(jù)。
所以建議把之前的音頻監(jiān)聽事件全部都 off 處理,然后再重新監(jiān)聽。
my.getAvailableAudioSources 是獲取當(dāng)前支持的音頻輸入源的 API。
<!--.axml-->
<view class="btn-area">
<button type="primary" onTap="getAvailableAudioSources">獲取當(dāng)前支持的音頻輸入源</button>
</view>
//.js
getAvailableAudioSources() {
my.getAvailableAudioSources(
{
success: function(res) {
my.alert({ content: "success" + JSON.stringify(res)});
console.log("getAvailableAudioSources success" + JSON.stringify(res));
},
fail: function(res) {
my.alert({content : "fail"});
console.log("getAvailableAudioSources fail" + JSON.stringify(res));
if (res) {
console.log("getAvailableAudioSources fail" + JSON.stringify(res));
}
},
complete: function(res) {
my.alert({ content: "complete" });
console.log("getAvailableAudioSources complete" + JSON.stringnify(res));
if(res) {
console.log("getAvailableAudioSources complete" + JSON.stringnify(res));
}
},
}
)
}
屬性 | 類型 | 必填 | 描述 |
---|---|---|---|
success | Function | 否 | 接口調(diào)用成功的回調(diào)函數(shù)。 |
fail | Function | 否 | 接口調(diào)用失敗的回調(diào)函數(shù)。 |
complete | Function | 否 | 接口調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行)。 |
屬性 | 類型 | 描述 |
---|---|---|
audioSources | Array.<String> | 音頻輸入源,每一項對應(yīng)一種音頻輸入源。 |
值 | 說明 | 支持平臺 |
---|---|---|
auto | 自動設(shè)置,默認使用手機麥克風(fēng),插上耳麥后自動切換使用耳機麥克風(fēng)。 | iOS/Android/devtools |
buildInMic | 手機麥克風(fēng)。 | iOS |
headsetMic | 耳機麥克風(fēng)。 | iOS |
mic | 麥克風(fēng)(沒插耳麥時是手機麥克風(fēng),插耳麥時是耳機麥克風(fēng))。 | Android |
camcorder | 攝像頭的麥克風(fēng)。 | Android |
my.getBackgroundAudioManager 是獲取后臺音頻播放器的 API,與前景音頻相對應(yīng),可以在用戶離開當(dāng)前小程序后繼續(xù)播放音頻。
第一步:開發(fā)者可以在 .axml 文件中寫入相關(guān)的組件來控制音樂的播放和暫停等,以下示例代碼僅供參考:
<!--.axml-->
<view>
<button type="primary" onTap="audioPlay">開始播放背景音頻</button>
</view>
<view>
<button type="primary" onTap="audioPause">暫停播放背景音頻</button>
</view>
<view>
<button type="primary" onTap="audioStop">停止播放背景音頻</button>
</view>
<view>
<button type="primary" onTap="audioSeek">背景音頻播放進度跳轉(zhuǎn)</button>
</view>
第二步:獲取背景音樂播放 backgroundAudioManager 后,添加屬性并注冊對應(yīng)監(jiān)聽事件。
//.js
onLoad(){
//獲取背景音管理對象。
this.backgroundAudioManager = my.getBackgroundAudioManager();
//來源于優(yōu)酷的音頻碼,默認為空字符串,當(dāng)設(shè)置了新的 src 時,會自動開始播放。目前支持的格式有 m4a, aac, mp3, wav。如果開發(fā)者不傳入音頻碼,控制臺不會報錯,但無音頻播放。
this.backgroundAudioManager.src = '音頻src';
//封面圖 URL。用于做原生音頻播放器背景圖。原生音頻播放器中的分享功能,分享的卡片配圖及背景也將使用該圖。
this.backgroundAudioManager.coverImgUrl = 'coverImgUrl';
//專輯名。用于做原生音頻播放器音頻標題。原生音頻播放器中的分享功能,分享的卡片標題,也將使用該值。
this.backgroundAudioManager.title = 'title';
//歌手名。原生音頻播放器中的分享功能,分享的卡片簡介,也將使用該值。
this.backgroundAudioManager.singer = 'singer';
this.backgroundAudioManager.onPlay(()=>{
console.log("backgroundAudioManager onPlay 開始播放")
my.alert({ content:'backgroundAudioManager 背景音頻播放事件 onPlay' });
});
this.backgroundAudioManager.onPause(()=>{
console.log("backgroundAudioManager onPause 暫停播放")
my.alert({ content:'backgroundAudioManager 背景音頻暫停事件 onPause' });
});
this.backgroundAudioManager.onStop(()=>{
console.log("backgroundAudioManager onStop")
my.alert({ content:'backgroundAudioManager 背景音頻停止事件 onStop' });
});
this.backgroundAudioManager.onSeeking(() => {
console.log("backgroundAudioManageronSeeking 跳轉(zhuǎn)播放事件")
my.alert({ content:'backgroundAudioManager 背景音頻跳轉(zhuǎn)播放事件 onSeeking' });
});
this.backgroundAudioManager.onError((res)=>{
console.log('backgroundAudioManager 背景音頻播放錯誤事件 onError ')
my.alert({ content: 'backgroundAudioManager 背景音頻播放錯誤事件 onError' + JSON.stringify(res) });
});
},
第三步:開發(fā)者在 .js 文件中寫入以下方法,配合上一步的組件,播放音頻,以下示例代碼僅供參考:
//.js
audioPlay(){
this.backgroundAudioManager.play();
console.log("call backgroundAudioManager.play");
my.alert({ content: "call backgroundAudioManager.play" });
},
audioPause(){
this.backgroundAudioManager.pause();
console.log("call backgroundAudioManager.pause");
my.alert({ content: "call backgroundAudioManager.pause" });
},
audioStop(){
this.backgroundAudioManager.stop();
console.log("call backgroundAudioManager.stop");
my.alert({ content: "call backgroundAudioManager.stop" });
},
//播放進度調(diào)整
audioSeek(){
this.backgroundAudioManager.seek(3.333);
console.log("call backgroundAudioManager.seek");
my.alert({ content: "backgroundAudioManager.seek" });
}
返回值為 backgroundAudioManager。
屬性 | 類型 | 是否只讀 | 描述 |
---|---|---|---|
duration | Number | 是 | 當(dāng)前音頻的長度,單位為秒(s),只有在當(dāng)前有合法的 src 時返回。 |
currentTime | Number | 是 | 當(dāng)前音頻的播放位置,單位為秒(s),只有在當(dāng)前有合法的 src 時返回。 |
paused | Boolean | 是 | 當(dāng)前是是否暫?;蛲V?fàn)顟B(tài),true 表示暫?;蛲V?,false 表示正在播放。 |
src | String | 否 | 音頻碼,默認為空字符串,當(dāng)設(shè)置了新的 src 時,會自動開始播放 ,目前支持的格式有 m4a, AAC, MP3, WAV。如果開發(fā)者不傳入音頻碼,控制臺不會報錯,但無音頻播放。注意:只支持來源于優(yōu)酷的音頻碼。 |
startTime | Number | 否 | 音頻開始播放的位置,單位為秒(s)。默認從 0 開始播放。 |
buffered | Number | 是 | 音頻緩沖的時間點,僅保證當(dāng)前播放時間點到此時間點內(nèi)容已緩沖。 |
title | String | 否 | 專輯名。原生音頻播放器中的分享功能,分享的卡片標題,也將使用該值。 |
singer | String | 否 | 歌手名。原生音頻播放器中的分享功能,分享的卡片簡介,也將使用該值。 |
coverImgUrl | String | 否 | 封面圖 URL,用于做原生音頻播放器背景圖。原生音頻播放器中的分享功能,分享的卡片配圖及背景也將使用該圖。以 URL 地址進行傳參。 |
webUrl | String | 否 | 頁面鏈接,原生音頻播放器中的分享功能,分享的卡片簡介,也將使用該值。以 URL 地址進行傳參。 |
方法 | 參數(shù) | 描述 |
---|---|---|
play | 無 | 播放。 |
pause | 無 | 暫停。 |
stop | 無 | 停止。 |
seek | position | 跳轉(zhuǎn)到指定位置,單位為秒(s)。精確到小數(shù)點后 3 位,即支持毫秒(ms)級別精確度。 |
onCanplay | Function callback | 監(jiān)聽背景音頻進入可以播放狀態(tài)。但不保證后面可以流暢播放。 |
onWaiting | Function callback | 監(jiān)聽音頻加載中事件。當(dāng)音頻因為數(shù)據(jù)不足,需要停下來加載時會觸發(fā)。 |
onError | Function callback | 監(jiān)聽背景音頻播放錯誤事件。 |
onPlay | Function callback | 監(jiān)聽背景音頻播放事件。 |
onPause | Function callback | 監(jiān)聽背景音頻暫停事件。 |
onSeeking | Function callback | 監(jiān)聽背景音頻開始播放進度跳轉(zhuǎn)事件。 |
onSeeked | Function callback | 監(jiān)聽背景音頻完成播放進度跳轉(zhuǎn)操作。 |
onEnded | Function callback | 監(jiān)聽背景音頻自然播放結(jié)束事件。 |
onStop | Function callback | 監(jiān)聽背景音頻停止事件。 |
onTimeUpdate | Function callback | 監(jiān)聽背景音頻播放進度更新事件。 |
onNext | Function callback | 監(jiān)聽用戶在系統(tǒng)音樂播放面板點擊下一曲事件。 |
onPrev | Function callback | 監(jiān)聽用戶在系統(tǒng)音樂播放面板點擊上一曲事件。 |
錯誤碼 | 描述 | 解決方案 |
---|---|---|
10001 | 系統(tǒng)錯誤。 | 請檢查手機系統(tǒng),并重試。 |
10002 | 網(wǎng)絡(luò)錯誤。 | 請檢查網(wǎng)絡(luò)設(shè)置,并重試。 |
10003 | 文件錯誤。 | 請檢查文件,并重試。 |
10004 | 格式錯誤。 | 請檢查格式問題,并重試。 |
-1 | 未知錯誤。 |
A:onTimeUpdate 等監(jiān)聽事件在再次進入頁面時失效不執(zhí)行,二次進入界面的時候消息沒辦法傳遞出去,導(dǎo)致頁面出錯沒有更新頁面數(shù)據(jù)。
所以建議把之前的音頻監(jiān)聽事件全部都 off 處理,然后再重新監(jiān)聽。
my.offAudioInterruptionBegin 是取消監(jiān)聽音頻因為系統(tǒng)占用而被中斷的開始事件。為異步接口。
第一步:開發(fā)者可以在 .axml 文件中寫入相關(guān)的組件(如 button 或者 view)來控制音樂的播放和暫停等,以下示例代碼僅供參考:
<!--.axml-->
<view class="operation-item" onTap="play">播放</view>
<view class="operation-item" onTap="pause">暫停</view>
<view class="operation-item" onTap="stop">停止</view>
<view class="operation-item" onTap="seek">播放進度跳轉(zhuǎn)</view>
<view class="operation-item" onTap="offAudioInterruptionBegin">取消監(jiān)聽音頻因為系統(tǒng)占用而被中斷的開始事件</view>
<view class="operation-item" onTap="offAudioInterruptionEnd">取消監(jiān)聽音頻被中斷的結(jié)束事件</view>
第二步:開發(fā)者獲取前景音樂 innerAudioContext 對象后,添加屬性并注冊對應(yīng)監(jiān)聽事件。
//.js
onLoad(){
//創(chuàng)建前景音上下文對象
this.innerAudioContext = my.createInnerAudioContext();
//來源于優(yōu)酷的音頻碼,用于直接播放。支持音頻格式:AAC,MP3。如果開發(fā)者不傳入音頻碼,控制臺不會報錯,但無音頻播放。
this.innerAudioContext.src = '音頻src';
//是否自動開始播放,默認為 false
this.innerAudioContext.autoplay = false;
//是否循環(huán)播放,默認為 false
this.innerAudioContext.loop = false;
//是否遵循系統(tǒng)靜音開關(guān),當(dāng)此參數(shù)為 false 時,即使用戶打開了靜音開關(guān),也能繼續(xù)發(fā)出聲音,默認值 true(注意:此參數(shù)僅 iOS 支持)。
this.innerAudioContext.obeyMuteSwitch = false;
this.innerAudioContext.onPlay(() => {
console.log("innerAudioContext onPlay 開始播放")
my.alert({ content:'innerAudioContext 前景音頻播放事件 onPlay' });
});
this.innerAudioContext.onPause(() => {
console.log("innerAudioContext onPause 暫停播放")
my.alert({ content:'innerAudioContext 前景音頻暫停事件 onPause' });
});
this.innerAudioContext.onStop(() => {
console.log("innerAudioContext onStop 停止播放")
my.alert({ content:'innerAudioContext 前景音頻停止事件 onStop' });
});
this.innerAudioContext.onSeeking(() => {
console.log("innerAudioContext onSeeking 跳轉(zhuǎn)播放事件")
my.alert({ content:'innerAudioContext 前景音頻跳轉(zhuǎn)播放事件 onSeeking' });
});
this.innerAudioContext.onError(() => {
console.log("innerAudioContext onError 前景音頻播放錯誤事件")
my.alert({ content:'innerAudioContext 前景音頻播放錯誤事件 onError' });
});
//監(jiān)聽音頻因為系統(tǒng)占用而被中斷的開始事件
my.onAudioInterruptionBegin(() => {
console.log('innerAudioContext onAudioInterruptionBegin');
});
//監(jiān)聽音頻被中斷的結(jié)束事件
my.onAudioInterruptionEnd(() => {
console.log('innerAudioContext onAudioInterruptionEnd');
});
},
第三步:開發(fā)者在 .js 文件中寫入以下方法,配合上一步的組件,播放音頻,以下示例代碼僅供參考:
//.js
//播放音樂
play() {
this.innerAudioContext.play();
console.log("call innerAudioContext.play");
my.alert({ content: "call innerAudioContext.play" });
},
//暫停播放
pause() {
this.innerAudioContext.pause();
console.log("call innerAudioContext.pause");
my.alert({ content: "call innerAudioContext.pause" });
},
//停止播放
stop() {
this.innerAudioContext.stop()
console.log("call innerAudioContext.stop");
my.alert({ content: "call innerAudioContext.stop" });
},
//播放進度調(diào)整
seek(){
this.innerAudioContext.seek(3.333);
console.log("call innerAudioContext.seek");
my.alert({ content: "innerAudioContext.seek" });
},
//取消監(jiān)聽音頻因為系統(tǒng)占用而被中斷的開始事件
offAudioInterruptionBegin(){
my.offAudioInterruptionBegin();
console.log('innerAudioContext offAudioInterruptionBegin');
},
//取消監(jiān)聽音頻被中斷的結(jié)束事件
offAudioInterruptionEnd(){
my.onAudioInterruptionEnd();
console.log('innerAudioContext offAudioInterruptionEnd');
},
Object 類型,屬性如下:
屬性 | 類型 | 描述 |
---|---|---|
callback | Function | 音頻因為受到系統(tǒng)占用而被中斷的開始事件的回調(diào)函數(shù)。 |
my.offAudioInterruptionEnd 是取消監(jiān)聽音頻被中斷的結(jié)束事件。為異步接口。
第一步:開發(fā)者可以在 .axml 文件中寫入相關(guān)的組件(如 button 或者 view)來控制音樂的播放和暫停等,以下示例代碼僅供參考:
<!--.axml-->
<view class="operation-item" onTap="play">播放</view>
<view class="operation-item" onTap="pause">暫停</view>
<view class="operation-item" onTap="stop">停止</view>
<view class="operation-item" onTap="seek">播放進度跳轉(zhuǎn)</view>
<view class="operation-item" onTap="offAudioInterruptionBegin">取消監(jiān)聽音頻因為系統(tǒng)占用而被中斷的開始事件</view>
<view class="operation-item" onTap="offAudioInterruptionEnd">取消監(jiān)聽音頻被中斷的結(jié)束事件</view>
第二步:開發(fā)者獲取前景音樂 innerAudioContext 對象后,添加屬性并注冊對應(yīng)監(jiān)聽事件。
//.js
onLoad(){
//創(chuàng)建前景音上下文對象
this.innerAudioContext = my.createInnerAudioContext();
//來源于優(yōu)酷的音頻碼,用于直接播放。支持音頻格式:AAC,MP3。如果開發(fā)者不傳入音頻碼,控制臺不會報錯,但無音頻播放。
this.innerAudioContext.src = '音頻src';
//是否自動開始播放,默認為 false
this.innerAudioContext.autoplay = false;
//是否循環(huán)播放,默認為 false
this.innerAudioContext.loop = false;
//是否遵循系統(tǒng)靜音開關(guān),當(dāng)此參數(shù)為 false 時,即使用戶打開了靜音開關(guān),也能繼續(xù)發(fā)出聲音,默認值 true(注意:此參數(shù)僅 iOS 支持)。
this.innerAudioContext.obeyMuteSwitch = false;
this.innerAudioContext.onPlay(() => {
console.log("innerAudioContext onPlay 開始播放")
my.alert({ content:'innerAudioContext 前景音頻播放事件 onPlay' });
});
this.innerAudioContext.onPause(() => {
console.log("innerAudioContext onPause 暫停播放")
my.alert({ content:'innerAudioContext 前景音頻暫停事件 onPause' });
});
this.innerAudioContext.onStop(() => {
console.log("innerAudioContext onStop 停止播放")
my.alert({ content:'innerAudioContext 前景音頻停止事件 onStop' });
});
this.innerAudioContext.onSeeking(() => {
console.log("innerAudioContext onSeeking 跳轉(zhuǎn)播放事件")
my.alert({ content:'innerAudioContext 前景音頻跳轉(zhuǎn)播放事件 onSeeking' });
});
this.innerAudioContext.onError(() => {
console.log("innerAudioContext onError 前景音頻播放錯誤事件")
my.alert({ content:'innerAudioContext 前景音頻播放錯誤事件 onError' });
});
//監(jiān)聽音頻因為系統(tǒng)占用而被中斷的開始事件
my.onAudioInterruptionBegin(() => {
console.log('innerAudioContext onAudioInterruptionBegin');
});
//監(jiān)聽音頻被中斷的結(jié)束事件
my.onAudioInterruptionEnd(() => {
console.log('innerAudioContext onAudioInterruptionEnd');
});
},
第三步:開發(fā)者在 .js 文件中寫入以下方法,配合上一步的組件,播放音頻,以下示例代碼僅供參考:
//.js
//播放音樂
play() {
this.innerAudioContext.play();
console.log("call innerAudioContext.play");
my.alert({ content: "call innerAudioContext.play" });
},
//暫停播放
pause() {
this.innerAudioContext.pause();
console.log("call innerAudioContext.pause");
my.alert({ content: "call innerAudioContext.pause" });
},
//停止播放
stop() {
this.innerAudioContext.stop()
console.log("call innerAudioContext.stop");
my.alert({ content: "call innerAudioContext.stop" });
},
//播放進度調(diào)整
seek(){
this.innerAudioContext.seek(3.333);
console.log("call innerAudioContext.seek");
my.alert({ content: "innerAudioContext.seek" });
},
//取消監(jiān)聽音頻因為系統(tǒng)占用而被中斷的開始事件
offAudioInterruptionBegin(){
my.offAudioInterruptionBegin();
console.log('innerAudioContext offAudioInterruptionBegin');
},
//取消監(jiān)聽音頻被中斷的結(jié)束事件
offAudioInterruptionEnd(){
my.onAudioInterruptionEnd();
console.log('innerAudioContext offAudioInterruptionEnd');
},
Object 類型,屬性如下:
屬性 | 類型 | 描述 |
---|---|---|
callback | Function | 音頻被中斷的結(jié)束事件的回調(diào)函數(shù)。 |
my.onAudioInterruptionBegin 是監(jiān)聽音頻因為系統(tǒng)占用而被中斷的開始事件。為異步接口。
第一步:開發(fā)者可以在 .axml 文件中寫入相關(guān)的組件(如 button 或者 view)來控制音樂的播放和暫停等,以下示例代碼僅供參考:
<!--.axml-->
<view class="operation-item" onTap="play">播放</view>
<view class="operation-item" onTap="pause">暫停</view>
<view class="operation-item" onTap="stop">停止</view>
<view class="operation-item" onTap="seek">播放進度跳轉(zhuǎn)</view>
<view class="operation-item" onTap="offAudioInterruptionBegin">取消監(jiān)聽音頻因為系統(tǒng)占用而被中斷的開始事件</view>
<view class="operation-item" onTap="offAudioInterruptionEnd">取消監(jiān)聽音頻被中斷的結(jié)束事件</view>
第二步:開發(fā)者獲取前景音樂 innerAudioContext 對象后,添加屬性并注冊對應(yīng)監(jiān)聽事件。
//.js
onLoad(){
//創(chuàng)建前景音上下文對象
this.innerAudioContext = my.createInnerAudioContext();
//來源于優(yōu)酷的音頻碼,用于直接播放。支持音頻格式:AAC,MP3。如果開發(fā)者不傳入音頻碼,控制臺不會報錯,但無音頻播放。
this.innerAudioContext.src = '音頻src';
//是否自動開始播放,默認為 false
this.innerAudioContext.autoplay = false;
//是否循環(huán)播放,默認為 false
this.innerAudioContext.loop = false;
//是否遵循系統(tǒng)靜音開關(guān),當(dāng)此參數(shù)為 false 時,即使用戶打開了靜音開關(guān),也能繼續(xù)發(fā)出聲音,默認值 true(注意:此參數(shù)僅 iOS 支持)。
this.innerAudioContext.obeyMuteSwitch = false;
this.innerAudioContext.onPlay(() => {
console.log("innerAudioContext onPlay 開始播放")
my.alert({ content:'innerAudioContext 前景音頻播放事件 onPlay' });
});
this.innerAudioContext.onPause(() => {
console.log("innerAudioContext onPause 暫停播放")
my.alert({ content:'innerAudioContext 前景音頻暫停事件 onPause' });
});
this.innerAudioContext.onStop(() => {
console.log("innerAudioContext onStop 停止播放")
my.alert({ content:'innerAudioContext 前景音頻停止事件 onStop' });
});
this.innerAudioContext.onSeeking(() => {
console.log("innerAudioContext onSeeking 跳轉(zhuǎn)播放事件")
my.alert({ content:'innerAudioContext 前景音頻跳轉(zhuǎn)播放事件 onSeeking' });
});
this.innerAudioContext.onError(() => {
console.log("innerAudioContext onError 前景音頻播放錯誤事件")
my.alert({ content:'innerAudioContext 前景音頻播放錯誤事件 onError' });
});
//監(jiān)聽音頻因為系統(tǒng)占用而被中斷的開始事件
my.onAudioInterruptionBegin(() => {
console.log('innerAudioContext onAudioInterruptionBegin');
});
//監(jiān)聽音頻被中斷的結(jié)束事件
my.onAudioInterruptionEnd(() => {
console.log('innerAudioContext onAudioInterruptionEnd');
});
},
第三步:開發(fā)者在 .js 文件中寫入以下方法,配合上一步的組件,播放音頻,以下示例代碼僅供參考:
//.js
//播放音樂
play() {
this.innerAudioContext.play();
console.log("call innerAudioContext.play");
my.alert({ content: "call innerAudioContext.play" });
},
//暫停播放
pause() {
this.innerAudioContext.pause();
console.log("call innerAudioContext.pause");
my.alert({ content: "call innerAudioContext.pause" });
},
//停止播放
stop() {
this.innerAudioContext.stop()
console.log("call innerAudioContext.stop");
my.alert({ content: "call innerAudioContext.stop" });
},
//播放進度調(diào)整
seek(){
this.innerAudioContext.seek(3.333);
console.log("call innerAudioContext.seek");
my.alert({ content: "innerAudioContext.seek" });
},
//取消監(jiān)聽音頻因為系統(tǒng)占用而被中斷的開始事件
offAudioInterruptionBegin(){
my.offAudioInterruptionBegin();
console.log('innerAudioContext offAudioInterruptionBegin');
},
//取消監(jiān)聽音頻被中斷的結(jié)束事件
offAudioInterruptionEnd(){
my.onAudioInterruptionEnd();
console.log('innerAudioContext offAudioInterruptionEnd');
},
Object 類型,屬性如下:
屬性 | 類型 | 描述 |
---|---|---|
callback | Function | 音頻因為受到系統(tǒng)占用而被中斷的開始事件的回調(diào)函數(shù)。 |
my.onAudioInterruptionEnd 是監(jiān)聽音頻被中斷的結(jié)束事件。在收到 onAudioInterruptionBegin 事件之后,小程序內(nèi)的所有音頻會暫停,收到此事件之后可再次播放成功。為異步接口。
第一步:開發(fā)者可以在 .axml 文件中寫入相關(guān)的組件(如 button 或者 view)來控制音樂的播放和暫停等,以下示例代碼僅供參考:
<!--.axml-->
<view class="operation-item" onTap="play">播放</view>
<view class="operation-item" onTap="pause">暫停</view>
<view class="operation-item" onTap="stop">停止</view>
<view class="operation-item" onTap="seek">播放進度跳轉(zhuǎn)</view>
<view class="operation-item" onTap="offAudioInterruptionBegin">取消監(jiān)聽音頻因為系統(tǒng)占用而被中斷的開始事件</view>
<view class="operation-item" onTap="offAudioInterruptionEnd">取消監(jiān)聽音頻被中斷的結(jié)束事件</view>
第二步:開發(fā)者獲取前景音樂 innerAudioContext 對象后,添加屬性并注冊對應(yīng)監(jiān)聽事件。
//.js
onLoad(){
//創(chuàng)建前景音上下文對象
this.innerAudioContext = my.createInnerAudioContext();
//來源于優(yōu)酷的音頻碼,用于直接播放。支持音頻格式:AAC,MP3。如果開發(fā)者不傳入音頻碼,控制臺不會報錯,但無音頻播放。
this.innerAudioContext.src = '音頻src';
//是否自動開始播放,默認為 false
this.innerAudioContext.autoplay = false;
//是否循環(huán)播放,默認為 false
this.innerAudioContext.loop = false;
//是否遵循系統(tǒng)靜音開關(guān),當(dāng)此參數(shù)為 false 時,即使用戶打開了靜音開關(guān),也能繼續(xù)發(fā)出聲音,默認值 true(注意:此參數(shù)僅 iOS 支持)。
this.innerAudioContext.obeyMuteSwitch = false;
this.innerAudioContext.onPlay(() => {
console.log("innerAudioContext onPlay 開始播放")
my.alert({ content:'innerAudioContext 前景音頻播放事件 onPlay' });
});
this.innerAudioContext.onPause(() => {
console.log("innerAudioContext onPause 暫停播放")
my.alert({ content:'innerAudioContext 前景音頻暫停事件 onPause' });
});
this.innerAudioContext.onStop(() => {
console.log("innerAudioContext onStop 停止播放")
my.alert({ content:'innerAudioContext 前景音頻停止事件 onStop' });
});
this.innerAudioContext.onSeeking(() => {
console.log("innerAudioContext onSeeking 跳轉(zhuǎn)播放事件")
my.alert({ content:'innerAudioContext 前景音頻跳轉(zhuǎn)播放事件 onSeeking' });
});
this.innerAudioContext.onError(() => {
console.log("innerAudioContext onError 前景音頻播放錯誤事件")
my.alert({ content:'innerAudioContext 前景音頻播放錯誤事件 onError' });
});
//監(jiān)聽音頻因為系統(tǒng)占用而被中斷的開始事件
my.onAudioInterruptionBegin(() => {
console.log('innerAudioContext onAudioInterruptionBegin');
});
//監(jiān)聽音頻被中斷的結(jié)束事件
my.onAudioInterruptionEnd(() => {
console.log('innerAudioContext onAudioInterruptionEnd');
});
},
第三步:開發(fā)者在 .js 文件中寫入以下方法,配合上一步的組件,播放音頻,以下示例代碼僅供參考:
//.js
//播放音樂
play() {
this.innerAudioContext.play();
console.log("call innerAudioContext.play");
my.alert({ content: "call innerAudioContext.play" });
},
//暫停播放
pause() {
this.innerAudioContext.pause();
console.log("call innerAudioContext.pause");
my.alert({ content: "call innerAudioContext.pause" });
},
//停止播放
stop() {
this.innerAudioContext.stop()
console.log("call innerAudioContext.stop");
my.alert({ content: "call innerAudioContext.stop" });
},
//播放進度調(diào)整
seek(){
this.innerAudioContext.seek(3.333);
console.log("call innerAudioContext.seek");
my.alert({ content: "innerAudioContext.seek" });
},
//取消監(jiān)聽音頻因為系統(tǒng)占用而被中斷的開始事件
offAudioInterruptionBegin(){
my.offAudioInterruptionBegin();
console.log('innerAudioContext offAudioInterruptionBegin');
},
//取消監(jiān)聽音頻被中斷的結(jié)束事件
offAudioInterruptionEnd(){
my.onAudioInterruptionEnd();
console.log('innerAudioContext offAudioInterruptionEnd');
},
Object 類型,屬性如下:
屬性 | 類型 | 描述 |
---|---|---|
callback | Function | 音頻被中斷的結(jié)束事件的回調(diào)函數(shù)。 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: