内部音频上下文对象可以设置一些事件监听函数 。在音频播放过程,发生 特定事件会执行特定的回调函数。代码如下:
????//?监听音频进入可以播放状态的事件,但不保证后面可以流畅播放
????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()