支付寶小程序API音頻播放

2020-09-16 15:49 更新

my.createInnerAudioContext

簡介

my.createInnerAudioContext 是在小程序內(nèi)創(chuàng)建并返回內(nèi)部音頻(與背景音頻相對應(yīng)) innerAudioContext 對象的 API。又稱“前景音頻”,用戶離開頁面即停止播放。

使用限制

  • 基礎(chǔ)庫 1.23.4 或更高版本;支付寶客戶端 10.1.87 或更高版本,若版本較低,建議采取 兼容處理。
  • IDE 模擬器暫不支持調(diào)試,請以真機調(diào)試結(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');
},

返回值

返回值為 innerAudioContext。

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

innerAudioContext 方法列表
方法 參數(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 未知錯誤。

常見問題 FAQ

Q:進入頁面播放音頻,返回上一頁后重新進入播放頁面,為何 onTimeUpdate 等監(jiān)聽事件失效不執(zhí)行?

A:onTimeUpdate 等監(jiān)聽事件在再次進入頁面時失效不執(zhí)行,二次進入界面的時候消息沒辦法傳遞出去,導(dǎo)致頁面出錯沒有更新頁面數(shù)據(jù)。

所以建議把之前的音頻監(jiān)聽事件全部都 off 處理,然后再重新監(jiān)聽。

my.getAvailableAudioSources

簡介

my.getAvailableAudioSources 是獲取當(dāng)前支持的音頻輸入源的 API。

使用限制

  • 基礎(chǔ)庫 1.23.4 或更高版本;支付寶客戶端 10.1.87 或更高版本,若版本較低,建議采取 兼容處理。
  • IDE 模擬器暫不支持調(diào)試,請以真機調(diào)試結(jié)果為準。

示例代碼

<!--.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));
          }
        },
      }
    )
  }

入?yún)?/h4>
屬性 類型 必填 描述
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í)行)。

success 返回值
屬性 類型 描述
audioSources Array.<String> 音頻輸入源,每一項對應(yīng)一種音頻輸入源。

audioSource 有效值

說明 支持平臺
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

簡介

my.getBackgroundAudioManager 是獲取后臺音頻播放器的 API,與前景音頻相對應(yīng),可以在用戶離開當(dāng)前小程序后繼續(xù)播放音頻。

使用限制

  • 基礎(chǔ)庫 1.10.0 或更高版本;支付寶客戶端 10.1.32 或更高版本,若版本較低,建議采取 兼容處理。
  • IDE 模擬器暫不支持調(diào)試,請以真機調(diào)試結(jié)果為準。

示例代碼

第一步:開發(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。

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 地址進行傳參。

backgroundAudioManager 方法列表
方法 參數(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 未知錯誤。

常見問題 FAQ

Q:進入頁面播放音頻,返回上一頁后重新進入播放頁面,為何 onTimeUpdate 等監(jiān)聽事件失效不執(zhí)行?

A:onTimeUpdate 等監(jiān)聽事件在再次進入頁面時失效不執(zhí)行,二次進入界面的時候消息沒辦法傳遞出去,導(dǎo)致頁面出錯沒有更新頁面數(shù)據(jù)。

所以建議把之前的音頻監(jiān)聽事件全部都 off 處理,然后再重新監(jiān)聽。

my.offAudioInterruptionBegin

簡介

my.offAudioInterruptionBegin 是取消監(jiān)聽音頻因為系統(tǒng)占用而被中斷的開始事件。為異步接口。

使用限制

  • 基礎(chǔ)庫版本 1.23.4 或更高版本;支付寶客戶端 10.1.87 或更高版本,若版本較低,建議做 兼容處理。
  • IDE 模擬器暫不支持調(diào)試,請以真機調(diào)試結(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');
},

入?yún)?/h4>

Object 類型,屬性如下:

屬性 類型 描述
callback Function 音頻因為受到系統(tǒng)占用而被中斷的開始事件的回調(diào)函數(shù)。

my.offAudioInterruptionEnd

簡介

my.offAudioInterruptionEnd 是取消監(jiān)聽音頻被中斷的結(jié)束事件。為異步接口。

使用限制

  • 基礎(chǔ)庫 1.23.4 或更高版本;支付寶客戶端 10.1.87 或更高版本,若版本較低,建議采取 兼容處理。
  • IDE 模擬器暫不支持調(diào)試,請以真機調(diào)試結(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');
},

入?yún)?/h4>

Object 類型,屬性如下:

屬性 類型 描述
callback Function 音頻被中斷的結(jié)束事件的回調(diào)函數(shù)。

my.onAudioInterruptionBegin

簡介

my.onAudioInterruptionBegin 是監(jiān)聽音頻因為系統(tǒng)占用而被中斷的開始事件。為異步接口。

使用限制

  • 基礎(chǔ)庫 1.23.4 或更高版本;支付寶客戶端 10.1.87 或更高版本,若版本較低,建議采取 兼容處理。
  • IDE 模擬器暫不支持調(diào)試,請以真機調(diào)試結(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');
},

入?yún)?/h4>

Object 類型,屬性如下:

屬性 類型 描述
callback Function 音頻因為受到系統(tǒng)占用而被中斷的開始事件的回調(diào)函數(shù)。

my.onAudioInterruptionEnd

簡介

my.onAudioInterruptionEnd 是監(jiān)聽音頻被中斷的結(jié)束事件。在收到 onAudioInterruptionBegin 事件之后,小程序內(nèi)的所有音頻會暫停,收到此事件之后可再次播放成功。為異步接口。

使用限制

  • 基礎(chǔ)庫 1.23.4 或更高版本;支付寶客戶端 10.1.87 或更高版本,若版本較低,建議采取 兼容處理。
  • IDE 模擬器暫不支持調(diào)試,請以真機調(diào)試結(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');
},

入?yún)?/h4>

Object 類型,屬性如下:

屬性 類型 描述
callback Function 音頻被中斷的結(jié)束事件的回調(diào)函數(shù)。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號