小程序播放音频的方式有两种:内部音频和背景音频。内部音频支持用户使用小程序时播放音频;背景音频支持用户离开小程序后继续播放音频。
使用wx.createInnerAudioContext接口创建内部音频上下文对象。在上下文对象设置些属性值。代码如下:
????const?innerAudioContext?=?wx.createInnerAudioContext()
????//?设置为自动开始播放
????innerAudioContext.autoplay?=?true
????//?设置音频资源地址
????innerAudioContext.src?=?'http://xxx.mp3'
在内部音频上下文对象中,可设置其他很多属性。名称和功能如下所示:
src:音频资源的地址,基础库2.2.3开始支持云文件ID
startTime:从音频的第几秒开始播放,默认0
autoplay:是否自动开始播放,默认false
loop:是否循环博美,默认false
obeyMuteSwitch:是否遵循系统静音开关。当参数为false时,即使用户手机设置为静音,也能继续发出声音。从基础库2.3.0版本开始此参数不生效,需要使用wx.setInnerAudioOption接口进行设置,默认true
volume:音量,范围0~1
? ?
? ? 内部音频上下文对象的一些属性可以读取到关于内部音频的信息。它们是只读属性,只能查询它们的值,但不可以修改。这些属性如下所示:
duration:当前音频的长度,单位秒。只有设置了合法src可才生效
currentTime:当前音频的播放位置,单位秒,精确到小数点后6位置。只有设置了合法src可才生效
paused:当前是否为暂停或停止状态
buffered:音频缓冲的时间点,保证当前播放时间点到该时间点的内容已缓冲
? ?
内部音频上下文对象还可使用一些函数控制音频的播放行为。示例代码如下:
????innerAudioContext.play()
????//?暂停音频,再次播放时会从暂停出开始播放
????innerAudioContext.pause()
????//?跳转到音频文件的3.1秒处。跳转事件单位为秒,精确到小数点后3位
????innerAudioContext.seek()
????//?停止音频,再次播放时会从头开始播放
????innerAudioContext.stop()
????//?销毁音频上下文,上下文对象将失效
????innerAudioContext.destroy()