backgroundaudiomanager 概览
基础库 或更高版本; 且 支付宝客户端 10.1.32 或更高版本; 若版本较低,建议采取 兼容处理 。
小程序开发者工具: 不支持。请以真机的调试结果为准。
主体: 企业支付宝小程序 、 个人支付宝小程序
全局唯一的背景(后台)音频管理器。
可通过 my.getbackgroundaudiomanager 获取。
属性
名称 | 类型 | 只读 | 功能说明 | |
---|---|---|---|---|
duration | number | 是 | 当前音频的长度,单位为秒(s)。 |
|
paused | boolean | 是 | 当前是否是暂停或停止状态,true 表示暂停或停止,false 表示正在播放。 |
|
currenttime | number | 是 | 当前音频的播放位置,单位为秒(s)。 |
|
buffered | number | 是 | 音频缓冲的时间点,仅保证当前播放时间点到此时间点内容已缓冲。 |
|
src | string | 否 | 音频的数据源,默认为空字符串,当设置了新的 src 时,会自动开始播放。
|
|
starttime | number | 否 | 音频开始播放的位置,默认从 0 开始播放,单位为秒(s)。 |
|
playbackrate | number | 否 | 播放速度。范围 0.5 - 2.0,默认为 1。 |
|
title | string | 否 | 音频标题。 |
|
singer | string | 否 | 歌手名。 |
|
epname | string | 否 | 专辑名。 |
|
coverimgurl | string | 否 | 封面图 url,用于做原生音频播放器背景图。 |
|
weburl | string | 否 | 页面链接。 |
方法
<view>
<view>
<button type="primary" ontap="playbackaudio">开始播放背景音频button>
view>
<view>
<button type="primary" ontap="pausebackaudio">暂停播放背景音频button>
view>
<view>
<button type="primary" ontap="stopbackaudio">停止播放背景音频button>
view>
<view>
<button type="primary" ontap="seekbackaudio">背景音频播放进度跳转button>
view>
view>
page ({
onload () {
//获取背景音管理对象。
this.backgroundaudiomanager = my.getbackgroundaudiomanager ();
//来源于优酷的音频码,默认为空字符串,当设置了新的 src 时,会自动开始播放。目前支持的格式有 m4a, aac, mp3, wav。如果开发者不传入音频码,控制台不会报错,但无音频播放。
this.backgroundaudiomanager.src = 'xndy2nte2mje4na==';
//封面图 url。用于做原生音频播放器背景图。原生音频播放器中的分享功能,分享的卡片配图及背景也将使用该图。
this.backgroundaudiomanager.coverimgurl =
'https://gw.alipayobjects.com/zos/rmsportal/oiquntyxvlljriiortum.jpg';
//专辑名。原生音频播放器中的分享功能,分享出去的卡片简介,也将使用该值。
this.backgroundaudiomanager.epname = 'epname';
//音频标题。用于做原生音频播放器音频标题。原生音频播放器中的分享功能,分享的卡片标题,也将使用该值。
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 ('backgroundaudiomanager onseeking 跳转播放事件');
my.alert ({content: 'backgroundaudiomanager 背景音频跳转播放事件 onseeking'});
});
this.backgroundaudiomanager.onerror (res => {
console.log ('backgroundaudiomanager 背景音频播放错误事件 onerror ', res);
my.alert ({
content: 'backgroundaudiomanager 背景音频播放错误事件 onerror'
json.stringify (res),
});
});
},
playbackaudio () {
console.log ('backgroundaudiomanager.play 播放背景景音频');
this.backgroundaudiomanager.play ();
},
stopbackaudio () {
console.log ('backgroundaudiomanager.stop 停止播放背景音频');
this.backgroundaudiomanager.stop ();
},
pausebackaudio () {
console.log ('backgroundaudiomanager.pause 暂停播放背景音频');
this.backgroundaudiomanager.pause ();
},
seekbackaudio () {
console.log ('backgroundaudiomanager.seek 跳转到指定位置播放音频');
// 举例跳到 20 s
this.backgroundaudiomanager.seek (20);
},
});
page ({
onload () {
//获取背景音管理对象。
this.backgroundaudiomanager = my.getbackgroundaudiomanager ();
//来源于优酷的音频码,默认为空字符串,当设置了新的 src 时,会自动开始播放。目前支持的格式有 m4a, aac, mp3, wav。如果开发者不传入音频码,控制台不会报错,但无音频播放。
this.backgroundaudiomanager.src = 'xndy2nte2mje4na==';
// 注册监听事件
this.backgroundaudiomanager.onplay (() => {
console.log ('backgroundaudiomanager onplay');
});
this.backgroundaudiomanager.onstop (() => {
console.log ('backgroundaudiomanager onstop');
});
this.backgroundaudiomanager.ontimeupdate (() => {
console.log ('backgroundaudiomanager ontimeupdate ');
});
this.backgroundaudiomanager.onerror (res => {
console.log ('backgroundaudiomanager onerror ', res);
});
},
onunload () {
// 页面卸载时,卸载已监听的音频事件
this.backgroundaudiomanager.offplay ();
this.backgroundaudiomanager.offstop ();
this.backgroundaudiomanager.onerror ();
this.backgroundaudiomanager.offtimeupdate ();
},
});
-
tip支付宝提供了简单的快速示例,可以点此下载 。
-
bug支付宝客户端版本 10.5.50 之前,退出创建 backgroundaudiomanager 的页面时,如果存在任一音频事件监听没有取消,在页面退出这些事件监听函数后不会再被触发,并且后续在新的页面创建的 backgroundaudiomanager 实例上所有事件监听也都会无效。规避办法:在页面卸载时将已注册的音频监听事件全部都 off 掉,参考 示例代码。
q:如何实现循环播放?
可以借助定时器或者 onended() 事件实现循环播放。
例如借助 onended
事件实现循环播放,onended
事件会在背景音频自然播放结束时触发,可在 onended
方法中再次调用 play
方法。