收藏
回答

小程序播放音频后台运行无法播放

问题模块 框架类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 createInnerAudioContext 工具 6.6.5.1280 1.9.92

需求:

* 你希望有什么能力?

小程序在后台运行的时候能够继续进行音频播放。


小程序的语音播放功能,当小程序在前台运行时没有任何问题,但是当小程序后台运行时,createInnerAudioContext语音播放功能就无法使用,使用背景音乐播放接口播放的话,就会报没有权限错误。


* 你需要这个能力的场景是 ?

使用小程序进行收款消息语音播报的功能。微信买单可以实现,小程序退出后仍能实现买单信息语音播报。但是我们的小程序后台运行后就无法进行音频播放,无法提示用户具体的收款金额。


最后一次编辑于  2018-03-07  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏关注问题回答

19 个回答

  • Ian
    Ian
    2018-03-08

    当进入后台运行时,再调背景音乐播放时会报如下错误,是不是权限没有开放给我们?



    2018-03-08
    赞同
    回复
  • 战斗
    战斗
    2018-03-08

    我也遇到类似问题,官方有解决办法吗?

    2018-03-08
    赞同
    回复 5
    • 战斗
      战斗
      2018-06-06

      我找到方法解决这个问题,迂回解决。首先这个问题的出现是在播放后,退出小程序或者锁屏,然后后台调用播放就出现,如果实在播放中退出或者锁屏,之后的后台调用是正常的播放。所以只要搞清楚问题就能迎刃而解了

      2018-06-06
      赞同
      回复
    • Ian
      Ian
      2018-06-14

      你说的是一直占用播放器是吧?我试过,不稳定,有时候log显示会报错退出。我是循环用一段空白音频占用播放器的,有新消息再加入新消息的播报。

      2018-06-14
      赞同
      回复
    • 战斗
      战斗
      2018-06-14回复Ian

      不用长时间占用,只要退出或者关闭时正在播放,就可以继续播放其他的音频,且可以被其他音频通道打断,也可以继续播放自己的音频

      2018-06-14
      赞同
      回复
    • Ian
      Ian
      2018-06-20

      那有可能是微信机制更新了吧,我当时测试的,退到后台后,只要不占用播放器,再调用播放组件就调不成功了,除非一直占用,而且还不稳定,有时即使一直占用也会报错。

      我们的这个功能目前已成鸡肋了,没人用了,我们也不更新了。

      2018-06-20
      赞同
      回复
    • 旭
      2018-12-18回复战斗

      具体怎么实现呢?

      2018-12-18
      赞同
      回复
  • nomore
    nomore
    2018-03-09

    后台播放音乐请参考文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/getBackgroundAudioManager.html

    2018-03-09
    赞同
    回复
  • Ian
    Ian
    2018-03-09

    在进入到后台继续播放之前设置的音乐是可以播放的。但是进入后台运行后,当播放完了,想重新设置新的src的时候,就会报上面截图中的错误,请问这个有办法解决吗?我们的业务是当有新订单时会调用playBackAudio方法,部分代码如下:


    const playBackAudio =(url) => {

        console.log('set play', url);

        return new Promise((resolve, reject) => {

            const audio = wx.getBackgroundAudioManager();

            audio.title = "收款语音播报";

            audio.epname = "";

            audio.singer = "";

            // audio.onPlay(()=>{console.log('play',audio.src)});

            var ok = false;

            audio.onEnded(() => {

                console.log('end', audio.src);

                ok=true;

                resolve();

            })

            audio.onError((res) => {

                console.log('eeeee', res.errMsg)

                ok=true;

                reject();

            })

            audio.onNext((res) => {

                console.log('next', res)

                ok=true;

                resolve();

            })

            audio.onStop((res) => {

                console.log('stop', res)

                resolve();

            });

            audio.src = url;

            audio.play();

        })

    }


    2018-03-09
    赞同
    回复
  • 炒了个饭
    炒了个饭
    2018-03-28

    楼主,我遇上了和你一样的问题。我已经找到解决办法,想和你探讨一下有没有更好的办法。我微信459085

    2018-03-28
    赞同
    回复 1
    • 狗子-牧羊
      狗子-牧羊
      2018-05-28

      语音在后台播报的解决方法,这个问题困了我好久,借经验,好人。

      2018-05-28
      赞同
      回复
  • Ian
    Ian
    2018-04-03

    @炒了个饭,你是怎么解决的?我试过用一段空白音频队列一直占用背景播放器,基本可以达到持续播放的效果,但不是很稳定,有时候会报权限错而停止。后来只能用音频播放接口,再开着屏幕长亮,让用户一直开着。

    2018-04-03
    赞同
    回复
  • 炒了个饭
    炒了个饭
    2018-04-03

    加微信说吧

    2018-04-03
    赞同
    回复
  • 炒了个饭
    炒了个饭
    2018-04-03

    目前我应该是独家

    2018-04-03
    赞同
    回复
  • %004A%004F%0045
    %004A%004F%0045
    2018-05-04

    请问语音播报的问题解决了吗?

    2018-05-04
    赞同
    回复
  • 高先森
    高先森
    2018-05-08

    求分享

    2018-05-08
    赞同
    回复