收藏
回答

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

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

需求:

* 你希望有什么能力?

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


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


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

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


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

12 个回答

  • nomore
    nomore
    2018-03-09

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

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

    后面怎么实现的呢?各位大佬们

    2018-12-18
    赞同
    回复
  • 狗子-牧羊
    狗子-牧羊
    2018-05-28

    敢问楼主有没有新的解决思路,求分享,这个问题困了我好久,好人

    2018-05-28
    赞同
    回复 1
    • Ian
      Ian
      2018-06-14

      木有新思路。目前的解决方案就是调用屏幕长亮接口,来保证小程序不退出。但是没啥卵用,用户已经不用这个功能了。

      2018-06-14
      回复
  • 高先森
    高先森
    2018-05-08

    求分享

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

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

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

    目前我应该是独家

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

    加微信说吧

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

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

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

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

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

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

      2018-05-28
      回复
  • 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
    赞同
    回复

正在加载...