收藏
回答

关于背景音乐不能循环播放引出的体验问题。

问题模块
API和组件

我们有一个需要在后台播放音乐并且需要具有循环播放的能力。


针对此功能我们做了如下尝试:


最初,我们在设计这个场景时,采用了 audio 组件,虽然满足了循环播放功能,但是在锁屏之后,音乐立刻停止,故而无法满足背景播放功能。


然后,想到了API 中的 playBackgroundAudio 方法,虽然解决了锁屏后的背景音乐播放问题,但是问题又来了,playBackgroundAudio  方法不能循环播放音乐,该方法还是无法满足最初的设想。


接着,我们想到了 监听音乐停止,然后重新启动播放,我们采用了 stopBackgroundAudio 来实现,可是这样虽然满足了手动循环播放的功能,但是由于监听停止播放和重新播放这中间有一定的时差,故而中间有那么一小段时间的停顿,体验感极差。


当然,我们还想到了 背景音乐管理器,即:getBackgroundAudioManager 的 seek 方法 和 startTime 属性,但是在手机上测试,要么就是没有效果,要么就是延迟特别严重,seekBackgroundAudio 方法也是同样的原理,总之还是无法达到最好的体验。


目前,我们是采用的 stopBackgroundAudio 来暂时实现,虽然有停顿,但是起码能够持续播放,不知道各位 朋友有没有更好的实现方法,也真诚的希望微信官方能够提供一个比较合理的实现方案。在此拜谢!






最后一次编辑于  2017-08-23  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

3 个回答

  • 阿杰
    阿杰
    2018-06-28

    如果是同一首音频的话,在onEnded事件监听里面重新给src赋值就可以实现循环播放

    2018-06-28
    赞同 1
    回复 7
    • H-bing纯
      H-bing纯
      01-17

      在哪个函数里面监听这个onEnded?

      01-17
      回复
    • 阿杰
      阿杰
      01-17回复H-bing纯

      给wx.createInnerAudioContext()创建的InnerAudioContext 对象添加onEnded监听事件就可以


      01-17
      1
      回复
    • H-bing纯
      H-bing纯
      01-17回复阿杰

      好的,感谢

      01-17
      回复
    • H-bing纯
      H-bing纯
      01-17回复阿杰

      再请问下有遇到,分享之后出来,直接 .play() 不行?


      01-17
      回复
    • 阿杰
      阿杰
      01-17回复H-bing纯

      分享的时候有暂停吗?

      01-17
      回复
    查看更多(2)
  • 呆呆熊
    呆呆熊
    2017-12-08

    楼上正解+1

    2017-12-08
    赞同
    回复
  • 吴必胜
    吴必胜
    2017-09-29

    我再做音频连续播放的时候,

    首先你play一个音频的时候 加一个事件监听,onEnded 当前播放完了你再onEnded里面继续再调用play方法去播放你想要播放的音频即可,希望对你有帮助~

    2017-09-29
    赞同
    回复