codecamp

支付宝小程序API音频播放

my.createInnerAudioContext

简介

my.createInnerAudioContext 是在小程序内创建并返回内部音频(与背景音频相对应) innerAudioContext 对象的 API。又称“前景音频”,用户离开页面即停止播放。

使用限制

  • 基础库 1.23.4 或更高版本;支付宝客户端 10.1.87 或更高版本,若版本较低,建议采取 兼容处理
  • IDE 模拟器暂不支持调试,请以真机调试结果为准。

示例代码

第一步:开发者可以在 .axml 文件中写入相关的组件(如 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">播放进度跳转</view>
<view class="operation-item" onTap="offAudioInterruptionBegin">取消监听音频因为系统占用而被中断的开始事件</view>
<view class="operation-item" onTap="offAudioInterruptionEnd">取消监听音频被中断的结束事件</view>

第二步:开发者获取前景音乐 innerAudioContext 对象后,添加属性并注册对应监听事件。

//.js
onLoad(){


//创建前景音频上下文对象。
this.innerAudioContext = my.createInnerAudioContext(); 


//来源于优酷的音频码,用于直接播放。支持音频格式:AAC,MP3。如果开发者不传入音频码,控制台不会报错,但无音频播放。
this.innerAudioContext.src = '音频src'; 


//是否自动开始播放,默认为 false。
this.innerAudioContext.autoplay = false;


//是否循环播放,默认为 false。
this.innerAudioContext.loop = false;


//是否遵循系统静音开关,当此参数为 false 时,即使用户打开了静音开关,也能继续发出声音,默认值为 true (注意:此参数仅 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 跳转播放事件")
   my.alert({ content:'innerAudioContext 前景音频跳转播放事件 onSeeking' });
});
this.innerAudioContext.onError(() => {
   console.log("innerAudioContext onError 前景音频播放错误事件")
   my.alert({ content:'innerAudioContext 前景音频播放错误事件 onError' });
});


//监听音频因为系统占用而被中断的开始事件
my.onAudioInterruptionBegin(() => {
  console.log('innerAudioContext onAudioInterruptionBegin');
});


//监听音频被中断的结束事件
my.onAudioInterruptionEnd(() => {
  console.log('innerAudioContext onAudioInterruptionEnd');
});
},

第三步:开发者在 .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" });
  },


//播放进度调整
seek(){
   this.innerAudioContext.seek(3.333);
   console.log("call innerAudioContext.seek");
   my.alert({ content: "innerAudioContext.seek" });
},


//取消监听音频因为系统占用而被中断的开始事件。
offAudioInterruptionBegin(){
  my.offAudioInterruptionBegin();
  console.log('innerAudioContext offAudioInterruptionBegin');
},


//取消监听音频被中断的结束事件。
offAudioInterruptionEnd(){
  my.onAudioInterruptionEnd();
  console.log('innerAudioContext offAudioInterruptionEnd');
},

返回值

返回值为 innerAudioContext。

innerAudioContext 属性列表

属性 类型 是否只读 说明
src String 音频码,用于直接播放。支持音频格式:AAC,MP3。如果开发者不传入音频码,控制台不会报错,但无音频播放。注意:只支持来源于优酷的音频码。
startTime Number 开始播放的位置,单位为秒(s),默认从 0 开始播放。
autoplay Boolean 是否自动开始播放,默认为 false。
loop Boolean 是否循环播放,默认为 false。
obeyMuteSwitch Boolean 是否遵循系统静音开关,当此参数为 false 时,即使用户打开了静音开关,也能继续发出声音,默认值为 true (注意:此参数仅 iOS 支持)。
duration Number 当前音频的长度,单位为秒(s),只有在当前有合法的 src 时返回。
currentTime Number 当前音频的播放位置,单位为秒(s),只有在当前有合法的 src 时返回,时间不取整。
paused Boolean 当前是否为暂停或停止状态,true 表示暂停或停止,false 表示正在播放。
buffered Number 音频缓冲的时间点,仅保证当前播放时间点到此时间点内容已缓冲。
volume Number 音量。范围 0~1。例如:this.innerAudioContext.volump = 0.5

innerAudioContext 方法列表
方法 参数 说明
play 播放。
pause 暂停。
stop 停止。
seek position 跳转到指定位置,单位为秒(s)。精确到小数点后 3 位,即支持 毫秒(ms) 级别精确度。
destroy 销毁当前实例。
onCanplay Function callback 监听前景音频进入可以播放状态,但不保证后面可以流畅播放。
onPlay Function callback 监听前景音频播放事件。
onPause Function callback 监听前景音频暂停事件。
onStop Function callback 监听前景音频停止事件。
onEnded Function callback 监听前景音频自然播放结束事件。
onTimeUpdate Function callback 监听前景音频播放进度更新事件。
onError Function callback 监听前景音频播放错误事件。
onWaiting Function callback 监听前景音频加载中事件,当音频因为数据不足,需要停下来加载时会触发。
onSeeking Function callback 监听前景音频开始播放进度跳转的操作事件。
onSeeked Function callback 监听前景音频完成播放进度跳转的操作事件。
offCanplay Function callback 取消监听 onCanplay 事件。
offPlay Function callback 取消监听 onPlay 事件。
offPause Function callback 取消监听 onPause 事件。
offStop Function callback 取消监听 onStop 事件。
offEnded Function callback 取消监听 onEnded 事件。
offTimeUpdate Function callback 取消监听 onTimeUpdate 事件。
offError Function callback 取消监听 onError 事件。
offWaiting Function callback 取消监听 onWaiting 事件。
offSeeking Function callback 取消监听 onSeeking 事件。
offSeeked Function callback 取消监听 onSeeked 事件。

错误码

错误码 描述 解决方案
10001 系统错误。 请检查手机系统,并重试。
10002 网络错误。 请检查网络设置,并重试。
10003 文件错误。 请检查文件,并重试。
10004 格式错误。 请检查格式问题,并重试。
-1 未知错误。

常见问题 FAQ

Q:进入页面播放音频,返回上一页后重新进入播放页面,为何 onTimeUpdate 等监听事件失效不执行?

A:onTimeUpdate 等监听事件在再次进入页面时失效不执行,二次进入界面的时候消息没办法传递出去,导致页面出错没有更新页面数据。

所以建议把之前的音频监听事件全部都 off 处理,然后再重新监听。

my.getAvailableAudioSources

简介

my.getAvailableAudioSources 是获取当前支持的音频输入源的 API。

使用限制

  • 基础库 1.23.4 或更高版本;支付宝客户端 10.1.87 或更高版本,若版本较低,建议采取 兼容处理
  • IDE 模拟器暂不支持调试,请以真机调试结果为准。

示例代码

<!--.axml-->
<view class="btn-area">
  <button type="primary" onTap="getAvailableAudioSources">获取当前支持的音频输入源</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 接口调用成功的回调函数。
fail Function 接口调用失败的回调函数。
complete Function 接口调用结束的回调函数(调用成功、失败都会执行)。

success 返回值
属性 类型 描述
audioSources Array.<String> 音频输入源,每一项对应一种音频输入源。

audioSource 有效值

说明 支持平台
auto 自动设置,默认使用手机麦克风,插上耳麦后自动切换使用耳机麦克风。 iOS/Android/devtools
buildInMic 手机麦克风。 iOS
headsetMic 耳机麦克风。 iOS
mic 麦克风(没插耳麦时是手机麦克风,插耳麦时是耳机麦克风)。 Android
camcorder 摄像头的麦克风。 Android

my.getBackgroundAudioManager

简介

my.getBackgroundAudioManager 是获取后台音频播放器的 API,与前景音频相对应,可以在用户离开当前小程序后继续播放音频。

使用限制

  • 基础库 1.10.0 或更高版本;支付宝客户端 10.1.32 或更高版本,若版本较低,建议采取 兼容处理
  • IDE 模拟器暂不支持调试,请以真机调试结果为准。

示例代码

第一步:开发者可以在 .axml 文件中写入相关的组件来控制音乐的播放和暂停等,以下示例代码仅供参考:

<!--.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">背景音频播放进度跳转</button>
</view>

第二步:获取背景音乐播放 backgroundAudioManager 后,添加属性并注册对应监听事件。

//.js
onLoad(){


//获取背景音管理对象。
this.backgroundAudioManager = my.getBackgroundAudioManager();


//来源于优酷的音频码,默认为空字符串,当设置了新的 src 时,会自动开始播放。目前支持的格式有 m4a, aac, mp3, wav。如果开发者不传入音频码,控制台不会报错,但无音频播放。
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 跳转播放事件")
   my.alert({ content:'backgroundAudioManager 背景音频跳转播放事件 onSeeking' });
});
this.backgroundAudioManager.onError((res)=>{
    console.log('backgroundAudioManager 背景音频播放错误事件 onError ')
    my.alert({ content: 'backgroundAudioManager 背景音频播放错误事件 onError' + JSON.stringify(res) });
});
},

第三步:开发者在 .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" });
  },


//播放进度调整
audioSeek(){
   this.backgroundAudioManager.seek(3.333);
   console.log("call backgroundAudioManager.seek");
   my.alert({ content: "backgroundAudioManager.seek" });
}

返回值

返回值为 backgroundAudioManager。

backgroundAudioManager 属性列表
属性 类型 是否只读 描述
duration Number 当前音频的长度,单位为秒(s),只有在当前有合法的 src 时返回。
currentTime Number 当前音频的播放位置,单位为秒(s),只有在当前有合法的 src 时返回。
paused Boolean 当前是是否暂停或停止状态,true 表示暂停或停止,false 表示正在播放。
src String 音频码,默认为空字符串,当设置了新的 src 时,会自动开始播放 ,目前支持的格式有 m4a, AAC, MP3, WAV。如果开发者不传入音频码,控制台不会报错,但无音频播放。注意:只支持来源于优酷的音频码。
startTime Number 音频开始播放的位置,单位为秒(s)。默认从 0 开始播放。
buffered Number 音频缓冲的时间点,仅保证当前播放时间点到此时间点内容已缓冲。
title String 专辑名。原生音频播放器中的分享功能,分享的卡片标题,也将使用该值。
singer String 歌手名。原生音频播放器中的分享功能,分享的卡片简介,也将使用该值。
coverImgUrl String 封面图 URL,用于做原生音频播放器背景图。原生音频播放器中的分享功能,分享的卡片配图及背景也将使用该图。以 URL 地址进行传参。
webUrl String 页面链接,原生音频播放器中的分享功能,分享的卡片简介,也将使用该值。以 URL 地址进行传参。

backgroundAudioManager 方法列表
方法 参数 描述
play 播放。
pause 暂停。
stop 停止。
seek position 跳转到指定位置,单位为秒(s)。精确到小数点后 3 位,即支持毫秒(ms)级别精确度。
onCanplay Function callback 监听背景音频进入可以播放状态。但不保证后面可以流畅播放。
onWaiting Function callback 监听音频加载中事件。当音频因为数据不足,需要停下来加载时会触发。
onError Function callback 监听背景音频播放错误事件。
onPlay Function callback 监听背景音频播放事件。
onPause Function callback 监听背景音频暂停事件。
onSeeking Function callback 监听背景音频开始播放进度跳转事件。
onSeeked Function callback 监听背景音频完成播放进度跳转操作。
onEnded Function callback 监听背景音频自然播放结束事件。
onStop Function callback 监听背景音频停止事件。
onTimeUpdate Function callback 监听背景音频播放进度更新事件。
onNext Function callback 监听用户在系统音乐播放面板点击下一曲事件。
onPrev Function callback 监听用户在系统音乐播放面板点击上一曲事件。

错误码

错误码 描述 解决方案
10001 系统错误。 请检查手机系统,并重试。
10002 网络错误。 请检查网络设置,并重试。
10003 文件错误。 请检查文件,并重试。
10004 格式错误。 请检查格式问题,并重试。
-1 未知错误。

常见问题 FAQ

Q:进入页面播放音频,返回上一页后重新进入播放页面,为何 onTimeUpdate 等监听事件失效不执行?

A:onTimeUpdate 等监听事件在再次进入页面时失效不执行,二次进入界面的时候消息没办法传递出去,导致页面出错没有更新页面数据。

所以建议把之前的音频监听事件全部都 off 处理,然后再重新监听。

my.offAudioInterruptionBegin

简介

my.offAudioInterruptionBegin 是取消监听音频因为系统占用而被中断的开始事件。为异步接口。

使用限制

  • 基础库版本 1.23.4 或更高版本;支付宝客户端 10.1.87 或更高版本,若版本较低,建议做 兼容处理
  • IDE 模拟器暂不支持调试,请以真机调试结果为准。

示例代码

第一步:开发者可以在 .axml 文件中写入相关的组件(如 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">播放进度跳转</view>
<view class="operation-item" onTap="offAudioInterruptionBegin">取消监听音频因为系统占用而被中断的开始事件</view>
<view class="operation-item" onTap="offAudioInterruptionEnd">取消监听音频被中断的结束事件</view>

第二步:开发者获取前景音乐 innerAudioContext 对象后,添加属性并注册对应监听事件。

//.js
onLoad(){


//创建前景音上下文对象
this.innerAudioContext = my.createInnerAudioContext();


//来源于优酷的音频码,用于直接播放。支持音频格式:AAC,MP3。如果开发者不传入音频码,控制台不会报错,但无音频播放。
this.innerAudioContext.src = '音频src';


//是否自动开始播放,默认为 false
this.innerAudioContext.autoplay = false; 


//是否循环播放,默认为 false
this.innerAudioContext.loop = false;


//是否遵循系统静音开关,当此参数为 false 时,即使用户打开了静音开关,也能继续发出声音,默认值 true(注意:此参数仅 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 跳转播放事件")
   my.alert({ content:'innerAudioContext 前景音频跳转播放事件 onSeeking' });
});
this.innerAudioContext.onError(() => {
   console.log("innerAudioContext onError 前景音频播放错误事件")
   my.alert({ content:'innerAudioContext 前景音频播放错误事件 onError' });
});


//监听音频因为系统占用而被中断的开始事件
my.onAudioInterruptionBegin(() => {
  console.log('innerAudioContext onAudioInterruptionBegin');
});


//监听音频被中断的结束事件
my.onAudioInterruptionEnd(() => {
  console.log('innerAudioContext onAudioInterruptionEnd');
});
},

第三步:开发者在 .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" });
  },


//播放进度调整
seek(){
   this.innerAudioContext.seek(3.333);
   console.log("call innerAudioContext.seek");
   my.alert({ content: "innerAudioContext.seek" });
},


//取消监听音频因为系统占用而被中断的开始事件
offAudioInterruptionBegin(){
  my.offAudioInterruptionBegin();
  console.log('innerAudioContext offAudioInterruptionBegin');
},


//取消监听音频被中断的结束事件
offAudioInterruptionEnd(){
  my.onAudioInterruptionEnd();
  console.log('innerAudioContext offAudioInterruptionEnd');
},

入参

Object 类型,属性如下:

属性 类型 描述
callback Function 音频因为受到系统占用而被中断的开始事件的回调函数。

my.offAudioInterruptionEnd

简介

my.offAudioInterruptionEnd 是取消监听音频被中断的结束事件。为异步接口。

使用限制

  • 基础库 1.23.4 或更高版本;支付宝客户端 10.1.87 或更高版本,若版本较低,建议采取 兼容处理
  • IDE 模拟器暂不支持调试,请以真机调试结果为准。

示例代码

第一步:开发者可以在 .axml 文件中写入相关的组件(如 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">播放进度跳转</view>
<view class="operation-item" onTap="offAudioInterruptionBegin">取消监听音频因为系统占用而被中断的开始事件</view>
<view class="operation-item" onTap="offAudioInterruptionEnd">取消监听音频被中断的结束事件</view>

第二步:开发者获取前景音乐 innerAudioContext 对象后,添加属性并注册对应监听事件。

//.js
onLoad(){


//创建前景音上下文对象
this.innerAudioContext = my.createInnerAudioContext();


//来源于优酷的音频码,用于直接播放。支持音频格式:AAC,MP3。如果开发者不传入音频码,控制台不会报错,但无音频播放。
this.innerAudioContext.src = '音频src';


//是否自动开始播放,默认为 false
this.innerAudioContext.autoplay = false; 


//是否循环播放,默认为 false
this.innerAudioContext.loop = false;


//是否遵循系统静音开关,当此参数为 false 时,即使用户打开了静音开关,也能继续发出声音,默认值 true(注意:此参数仅 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 跳转播放事件")
   my.alert({ content:'innerAudioContext 前景音频跳转播放事件 onSeeking' });
});
this.innerAudioContext.onError(() => {
   console.log("innerAudioContext onError 前景音频播放错误事件")
   my.alert({ content:'innerAudioContext 前景音频播放错误事件 onError' });
});


//监听音频因为系统占用而被中断的开始事件
my.onAudioInterruptionBegin(() => {
  console.log('innerAudioContext onAudioInterruptionBegin');
});


//监听音频被中断的结束事件
my.onAudioInterruptionEnd(() => {
  console.log('innerAudioContext onAudioInterruptionEnd');
});
},

第三步:开发者在 .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" });
  },


//播放进度调整
seek(){
   this.innerAudioContext.seek(3.333);
   console.log("call innerAudioContext.seek");
   my.alert({ content: "innerAudioContext.seek" });
},


//取消监听音频因为系统占用而被中断的开始事件
offAudioInterruptionBegin(){
  my.offAudioInterruptionBegin();
  console.log('innerAudioContext offAudioInterruptionBegin');
},


//取消监听音频被中断的结束事件
offAudioInterruptionEnd(){
  my.onAudioInterruptionEnd();
  console.log('innerAudioContext offAudioInterruptionEnd');
},

入参

Object 类型,属性如下:

属性 类型 描述
callback Function 音频被中断的结束事件的回调函数。

my.onAudioInterruptionBegin

简介

my.onAudioInterruptionBegin 是监听音频因为系统占用而被中断的开始事件。为异步接口。

使用限制

  • 基础库 1.23.4 或更高版本;支付宝客户端 10.1.87 或更高版本,若版本较低,建议采取 兼容处理
  • IDE 模拟器暂不支持调试,请以真机调试结果为准。

示例代码

第一步:开发者可以在 .axml 文件中写入相关的组件(如 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">播放进度跳转</view>
<view class="operation-item" onTap="offAudioInterruptionBegin">取消监听音频因为系统占用而被中断的开始事件</view>
<view class="operation-item" onTap="offAudioInterruptionEnd">取消监听音频被中断的结束事件</view>

第二步:开发者获取前景音乐 innerAudioContext 对象后,添加属性并注册对应监听事件。

//.js
onLoad(){


//创建前景音上下文对象
this.innerAudioContext = my.createInnerAudioContext();


//来源于优酷的音频码,用于直接播放。支持音频格式:AAC,MP3。如果开发者不传入音频码,控制台不会报错,但无音频播放。
this.innerAudioContext.src = '音频src'; 


//是否自动开始播放,默认为 false
this.innerAudioContext.autoplay = false;


//是否循环播放,默认为 false
this.innerAudioContext.loop = false;


//是否遵循系统静音开关,当此参数为 false 时,即使用户打开了静音开关,也能继续发出声音,默认值 true(注意:此参数仅 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 跳转播放事件")
   my.alert({ content:'innerAudioContext 前景音频跳转播放事件 onSeeking' });
});
this.innerAudioContext.onError(() => {
   console.log("innerAudioContext onError 前景音频播放错误事件")
   my.alert({ content:'innerAudioContext 前景音频播放错误事件 onError' });
});


//监听音频因为系统占用而被中断的开始事件
my.onAudioInterruptionBegin(() => {
  console.log('innerAudioContext onAudioInterruptionBegin');
});


//监听音频被中断的结束事件
my.onAudioInterruptionEnd(() => {
  console.log('innerAudioContext onAudioInterruptionEnd');
});
},

第三步:开发者在 .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" });
  },


//播放进度调整
seek(){
   this.innerAudioContext.seek(3.333);
   console.log("call innerAudioContext.seek");
   my.alert({ content: "innerAudioContext.seek" });
},


//取消监听音频因为系统占用而被中断的开始事件
offAudioInterruptionBegin(){
  my.offAudioInterruptionBegin();
  console.log('innerAudioContext offAudioInterruptionBegin');
},


//取消监听音频被中断的结束事件
offAudioInterruptionEnd(){
  my.onAudioInterruptionEnd();
  console.log('innerAudioContext offAudioInterruptionEnd');
},

入参

Object 类型,属性如下:

属性 类型 描述
callback Function 音频因为受到系统占用而被中断的开始事件的回调函数。

my.onAudioInterruptionEnd

简介

my.onAudioInterruptionEnd 是监听音频被中断的结束事件。在收到 onAudioInterruptionBegin 事件之后,小程序内的所有音频会暂停,收到此事件之后可再次播放成功。为异步接口。

使用限制

  • 基础库 1.23.4 或更高版本;支付宝客户端 10.1.87 或更高版本,若版本较低,建议采取 兼容处理
  • IDE 模拟器暂不支持调试,请以真机调试结果为准。

示例代码

第一步:开发者可以在 .axml 文件中写入相关的组件(如 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">播放进度跳转</view>
<view class="operation-item" onTap="offAudioInterruptionBegin">取消监听音频因为系统占用而被中断的开始事件</view>
<view class="operation-item" onTap="offAudioInterruptionEnd">取消监听音频被中断的结束事件</view>

第二步:开发者获取前景音乐 innerAudioContext 对象后,添加属性并注册对应监听事件。

//.js
onLoad(){


//创建前景音上下文对象
this.innerAudioContext = my.createInnerAudioContext();


//来源于优酷的音频码,用于直接播放。支持音频格式:AAC,MP3。如果开发者不传入音频码,控制台不会报错,但无音频播放。
this.innerAudioContext.src = '音频src'; 


//是否自动开始播放,默认为 false
this.innerAudioContext.autoplay = false;


//是否循环播放,默认为 false
this.innerAudioContext.loop = false;


//是否遵循系统静音开关,当此参数为 false 时,即使用户打开了静音开关,也能继续发出声音,默认值 true(注意:此参数仅 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 跳转播放事件")
   my.alert({ content:'innerAudioContext 前景音频跳转播放事件 onSeeking' });
});
this.innerAudioContext.onError(() => {
   console.log("innerAudioContext onError 前景音频播放错误事件")
   my.alert({ content:'innerAudioContext 前景音频播放错误事件 onError' });
});


//监听音频因为系统占用而被中断的开始事件
my.onAudioInterruptionBegin(() => {
  console.log('innerAudioContext onAudioInterruptionBegin');
});


//监听音频被中断的结束事件
my.onAudioInterruptionEnd(() => {
  console.log('innerAudioContext onAudioInterruptionEnd');
});
},

第三步:开发者在 .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" });
  },


//播放进度调整
seek(){
   this.innerAudioContext.seek(3.333);
   console.log("call innerAudioContext.seek");
   my.alert({ content: "innerAudioContext.seek" });
},


//取消监听音频因为系统占用而被中断的开始事件
offAudioInterruptionBegin(){
  my.offAudioInterruptionBegin();
  console.log('innerAudioContext offAudioInterruptionBegin');
},


//取消监听音频被中断的结束事件
offAudioInterruptionEnd(){
  my.onAudioInterruptionEnd();
  console.log('innerAudioContext offAudioInterruptionEnd');
},

入参

Object 类型,属性如下:

属性 类型 描述
callback Function 音频被中断的结束事件的回调函数。
支付宝小程序API 视频播放
支付宝小程序API 缓存
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

支付宝小程序开发文档

支付宝小程序 快速示例

支付宝小程序 小程序快速示例

支付宝小程序 框架

支付宝小程序 组件

支付宝小程序组件 基础组件

支付宝小程序组件 无障碍访问

支付宝小程序 扩展组件

支付宝小程序扩展组件 UI组件

支付宝小程序 API

支付宝小程序 开发工具

支付宝小程序 云服务

支付宝小程序 Serverless

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }