收藏
回答

getBackgroundAudioManager在调用stop后重新播放无效

框架类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小程序 getBackgroundAudioManager 客户端 6.6.3 1.9.1
voice: function (event){
    var that = this;
    clearInterval(that.data.times)
    var arr = ['../../image/voice_001.png', '../../image/voice_011.png','../../image/voice_01.png']
     
    const backgroundAudioManager = wx.getBackgroundAudioManager()
    backgroundAudioManager.stop()
    backgroundAudioManager.onStop(function(){
      clearInterval(that.data.times)
      that.setData({
        bigPic: arr[2]
      })
      console.log("播放停止");
    })
    backgroundAudioManager.src = event.target.dataset.url // 设置了 src 之后会自动播放
    backgroundAudioManager.onPlay(function(){
      console.log("开始播放")
      util.play(arr, "bigPic", function (i, time) {
 
        that.setData({
          bigPic: arr[i],
          times: time
        })
      })
    })
    backgroundAudioManager.onEnded(function(){
      clearInterval(that.data.times)
      that.setData({
        bigPic: arr[2]
      })  
      console.log("播放完成");
    })
  }
现在是需要做一个点击把之前的播放停止然后重新播放的功能,现在点击之后停止了,但是重新播放无法生效,想知道有什么办法可以让重新播放生效
回答关注问题邀请回答
收藏

2 个回答

  • 哿尘雨
    哿尘雨
    12-12

    有个抖机灵的办法:

    不直接调用:backgroundAudioManager.stop()。

    而是先调用backgroundAudioManager.seek(0),将播放进度挪到第0秒,

    再调用暂停backgroundAudioManager.pause()

    这样下次调用播放的时候,音频就能从头开始播放了

    亲测有效

    12-12
    有用
    回复
  • 张轩与
    张轩与
    2018-02-24
    play:function(){
      var that = this
      const backgroundAudioManager = wx.getBackgroundAudioManager()
      backgroundAudioManager.title = '此时此刻'
      if(that.data.fg == 1){
        backgroundAudioManager.src = 'https://cos-bi-ppt-1252899312.cos.ap-shanghai.myqcloud.com/word/ci/1.mp3'
      }else{
        backgroundAudioManager.src = 'https://cos-bi-ppt-1252899312.cos.ap-shanghai.myqcloud.com/word/ci/2.mp3'
      }
       
      backgroundAudioManager.onStop(function(){
        console.log("停止")
      })
      backgroundAudioManager.onPlay(function(){
        console.log("开始")
        if (that.data.fg == 1){
          that.setData({
            fg: 2
          })
        }else{
          that.setData({
            fg: 1
          })
        }
         
      })
      backgroundAudioManager.onEnded(function(){
        if (that.data.fg == 1) {
          that.setData({
            fg: 2
          })
        } else {
          that.setData({
            fg: 1
          })
        }
      })
       
    }

    现在是多加了一个音频路径,在播放其中一个时,如果再次点击,就播放另一个音频。这样才能实现打断之前的播放并且立即重新播放的功能

    2018-02-24
    有用
    回复 1
    • 刘昕
      刘昕
      2019-02-12

      请问有别的办法么   音频文件很多 不可能都一个备份出来哇

      2019-02-12
      回复
登录 后发表内容