支付宝小程序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 | 音频被中断的结束事件的回调函数。 |