获取全局唯一的背景音频管理器。 小程序切入后台,如果音频处于播放状态,可以继续播放。但是后台状态不能通过调用API操纵音频的播放状态。
名称 |
类型 |
描述 |
src |
string |
播放内容的URL |
title |
string |
播放内容的Title |
coverImageURL |
string |
封面图片地址 |
名称 |
功能描述 |
备注 |
play(startPosition = 0, useCache = false) |
播放内容 |
入参 startPosition?: number; // 开始播放的时间,单位毫秒 useCache?: boolean; // 是否使用缓存 |
resume() |
继续播放内容 |
|
pause() |
暂停播放内容 pause 后,全局的 AudioService 仍然存在,暂停后,Service 取消保活,允许系统杀死 |
|
stop() |
停止播放内容 stop 调用后,全局的 AudioService 会销毁 |
|
seek(position:number) |
控制播放进度 |
入参 position: number; // 控制播放的时间,单位毫秒 |
requestInfo(fn:Function) |
用于小程序等容器被销毁,页面恢复的场景 |
出参 { data:{ mediaInfo:{ src: string; // 播放内容的URL title: string; // 播放内容的Title coverImageURL: string; // 封面图片地址 }, statusInfo:{ isPlaying: boolean; // 是否正在播放 currentPosition: number; // 当前进度,毫秒 duration: number; // 音频总长,毫秒 } } } |
onError(fn:Function) |
监听背景音频播放错误事件 | |
onPlay(fn:Function) |
开始播放的回调 |
|
onResume(fn:Function) |
继续播放的回调 |
|
onPause(fn:Function) |
播放暂停的回调 |
|
onTimeUpdate(fn:Function) |
播放进度回调 |
|
onSeekComplete(fn:Function) |
监听控制播放进度完成 |
|
onEnd(fn:Function) |
播放结束回调 |
|
onStop(fn:Function) |
监听播放停止 |
|
onNext(fn:Function) |
监听用户在系统音乐播放面板点击下一曲事件 |
|
onPrev(fn:Function) |
监听用户在系统音乐播放面板点击上一曲事件 |
<view> <button size="default" type="primary" onTap="getBackgroundAudioManager" >getBackgroundAudioManager</button> <button a:for="{{methods}}" size="default" type="primary" onTap="play" data-method="{{item}}">{{item}}</button> <button size="default" type="primary" onTap="seek" >seek(60000)</button> <button size="default" type="primary" onTap="requestInfo" >requestInfo</button> <view class="block">{{textString}}</view> <view class="block">{{textString2}}</view> </view>
Page({ data: { textString: '123', textString2: '', methods: ['play', 'pause', 'stop', 'resume'] }, onLoad(query) { // 页面加载 console.info(`Page onLoad with query: ${JSON.stringify(query, null, 2)}`); }, onReady() { this.setData({ textString2: getApp().addBinary('101', '111') }) }, getBackgroundAudioManager() { this.mangeer = my.getBackgroundAudioManager(); this.mangeer.src = 'https://miniapp-assets.taobao.com/test/testAudio.MP3'; this.mangeer.title = 'test'; this.mangeer.coverImageURL = 'https://gw.alicdn.com/tfs/TB1SguUCuT2gK0jSZFvXXXnFXXa-240-240.png'; ['onPlay', 'onResume', 'onPause', 'onTimeUpdate', 'onSeekComplete', 'onEnd', 'onStop'].forEach(n=>{ this.mangeer[n](data=>this.setData({ textString2: n + ': ' + JSON.stringify(data, null, 2) })) }) this.setData({ textString: JSON.stringify(this.mangeer, null, 2) }) }, play(e) { console.log(e.target.dataset.method) const m = e.target.dataset.method; this.mangeer[m](res => this.setData({ textString2: m + JSON.stringify(res, null, 2) })) }, seek(){ this.mangeer.seek(60000) }, requestInfo(){ this.mangeer.requestInfo(data=> this.setData({ textString: 'requestInfo: ' + JSON.stringify(data, null, 2) })) } });
手淘版本≥10.29.0