内部音频上下文对象可以设置一些事件监听函数 。在音频播放过程,发生 特定事件会执行特定的回调函数。代码如下:
// 监听音频进入可以播放状态的事件,但不保证后面可以流畅播放
innerAudioContext.onCanPlay(() => {
// do something
})
// 监听音频播放事件
innerAudioContext.onPlay(() => {
// do something
})
// 监听音频加载中事件(当音频因为数据不足,需要停下来加载时会触发)
innerAudioContext. onWaiting(() => {
// do something
})
// 监听音频播放进度更新事件
innerAudioContext.onTimeUpdate(() => {
// do something
})
// 监听音频暂停事件
innerAudioContext.onPause(() => {
// do something
})
// 监听音频进行跳转操作的事件
innerAudioContext.onSeeking(() => {
// do something
})
// 监听音频完成跳转操作的事件
innerAudioContext.onSeeked(() => {
// do something
})
// 监听音频停止事件
innerAudioContext.onStop(() => {
// do something
})
// 监听音频自然播放至结束事件
innerAudioContext.onEnded(() => {
// do something
})
// 监听音频播放错误事件
innerAudioContext.onError(res => {
//10001 系统错误,10002 网络错误,10003 文件错误,10004 格式错误,-1 未知错误、
console.log(res.errCode)
})
背景音频API支持用户离开小程序后继续播放音乐 ,即当小程序切入后台时,音频如果处于播放状态,就可继续播放。但在后台状态下不能通过调用API操纵音频的播放状态。
微信客户端6.7.2起,需要在小程序切入后台继续播放音频,需在app.json中配置 requiredBackgroundModes属性。设置方式如下:
{
"requiredBackgroundModes": ["audio"]
}
开发版和体验版可直接生效,正式版需通过审核
小程序使用背景音频管理器实现背景音频的相关操作,需要先获取全局唯一的背景音频管理器,代码如下:
const backgroundAudioManager = wx.getBackgroundAudioManager()
背景音频管理器可设置或读取一些属性值。示例代码如下:
// 设置音频必填(必填)。原生音频播放器中的分享功能,分享出去的卡片标题,也将使用该值
backgroundAudioManager.title = 'Music Title'
// 设置音频专辑名。原生音频播放器中的分享功能,分享出去的卡片简介,也将使用该值
backgroundAudioManager.epname = 'Episode Name'
// 设置音频歌手名。原生音频播放器中的分享功能,分享出去的卡片简介,也将使用该值
backgroundAudioManager.singer = 'Singer'
// 设置封面图URL。用于原生音频播放器背景图,原生音频播放器中的分享功能,分享出去的卡片配图及背景也将使用该图
backgroundAudioManager.coverImgUrl = 'http://xx.jpg'
// 设置页面链接。原生音频播放器中的分享功能,分享出去的卡片简介,也将使用该值
backgroundAudioManager.webUrl = 'http://xx.jpg'
// 设置音频协议。基础库1.9.94版本开始支持。默认为http,设置hls可以播放HLS协议的
backgroundAudioManager.protocol = 'hls'
// 设置音频开始播放的位置为30秒处
backgroundAudioManager.startTime = 30
// 设置音频链接,基础库2.2.3版本开始支持云文件ID,设置了src后会自动播放
backgroundAudioManager.src = 'http://xx.mp3'
// 当前音频的长度,单位为秒
console.log(backgroundAudioManager.duration)
// 当前音频播放的位置,单位为秒
console.log(backgroundAudioManager.currentTime)
// 当前音频是否暂停或停止
console.log(backgroundAudioManager.paused)
// 音频已缓冲时间
console.log(backgroundAudioManager.buffered)
背景音频管理器可使用一些函数控制音频的播放行为。示例代码如下:
// 播放音频
backgroundAudioManager.play()
// 暂停音频,再次播放时会从暂停处开始播放
backgroundAudioManager.pause()
// 跳转到音频3.1秒处。跳转时间单位为秒,精确到小数点后3位
backgroundAudioManager.seek(3.1)
// 暂停音频,再次播放时会从头开始播放
backgroundAudioManager.stop()