文档中心 > 店铺动态卡片-开发指引

my.getBackgroundAudioManager()

更新时间:2024/01/29 访问次数:1740

获取全局唯一的背景音频管理器。 小程序切入后台,如果音频处于播放状态,可以继续播放。但是后台状态不能通过调用API操纵音频的播放状态。


BackgroundAudioManager

1. 属性

名称

类型

描述

src

string

播放内容的URL

title

string

播放内容的Title

coverImageURL

string

封面图片地址


2. 方法

名称

功能描述

备注

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)
    }))
  }
});


版本支持


image.png

手淘版本≥10.29.0


FAQ

关于此文档暂时还没有FAQ
返回
顶部