Hi FE !
Ai
git
前端面试题
前端小tip
  • vite
  • webpack
npm
  • vue2
  • vue3
react
GitHub
Ai
git
前端面试题
前端小tip
  • vite
  • webpack
npm
  • vue2
  • vue3
react
GitHub
  • 小程序中背景音乐getBackgroundAudioManager使用问题

小程序中背景音乐getBackgroundAudioManager使用问题

1. 当你在 onPlay方法中写入计时器时候,计时器会没两秒或三秒更新一次

 var manager = wx.getBackgroundAudioManager();
      manager.title = that.data.audioList[that.data.audioIndex].trackCtitle || "音频标题";
      manager.epname = that.data.playlistName || "专辑名称";
      manager.singer = audio.author || "歌手名";

      // manager.coverImgUrl = audio.poster;
      // 设置了 src 之后会自动播放
      manager.src = audio;
      manager.currentTime = 0;

      manager.onPlay(function () {
        console.log("======onPlay======");
        that.setData({
          playStatus: true,
          pausedSwitch:true,
          currentUrl:res.data.data
        })

  });

解决方法是把计时器提出来在别的事件中写

eg:我在播放按钮时候启动计时器

//播放按钮
playOrpause: function () {
  let manager = wx.getBackgroundAudioManager();
  if (this.data.playStatus) {
    manager.pause();
    this.setData({
      playStatus: false,
    })
    clearInterval(timerLeft)
    // this.setData({
    //     num3:1
    // })
  } else {
    manager.play();
    this.setData({
      playStatus: true,
    })
    this.countTimeDownNew(manager)
  }
},

countTimeDownNew: function (manager, cancel) {
    let that = this;
      timerLeft =  setInterval(()=> {
           let num = this.data.num3 + 1
           this.setData({
             num3:num
           })
          if (that.data.playStatus) {
            console.log("that.formatTime(Math.ceil(manager.currentTime)",that.formatTime(Math.ceil(manager.currentTime)))
            that.setData({
              progress: Math.ceil(manager.currentTime),
              progressText: that.formatTime(Math.ceil(manager.currentTime)),
              progressText: that.formatTime(manager.currentTime),
              duration: Math.ceil(manager.duration),
              durationText: that.formatTime(Math.ceil(manager.duration))
            })
          }
       },1000)
  },

2.manager.onpause在暂停时候 会在手机上循环一直调用onpause方法,调试器上没事

在苹果11上表现是图标一直会闪

修复方案是在onPause方法里面加个 pausedSwitch属性开关

播放时候再打开

manager.onPause(function () {
          console.log("一致获取内容222")
          if(that.data.pausedSwitch) {
            that.setData({
              pausedSwitch:false,
            })
              console.log("一致获取内容2")
              console.log("that.data.progress1",that.data.progress)
              manager.seek(that.data.progress);
              that.setData({
                progressText: that.formatTime(that.data.progress),
                progress:Math.ceil(that.data.progress),
                playStatus: false
              })
              that.changeData()
              that.startSetInter2()
              console.log("开始 that.data.num2",that.data.num2)
              console.log("开始 that.data.isReload",that.data.isReload)
              console.log("======onPause 基础方法1======");
          }

        });
Edit this page
最近更新: 2025/12/2 01:46
Contributors: qdleader
qdleader
本站总访问量 129823次 | 本站访客数 12人