需求:
* 你希望有什么能力?
小程序在后台运行的时候能够继续进行音频播放。
小程序的语音播放功能,当小程序在前台运行时没有任何问题,但是当小程序后台运行时,createInnerAudioContext语音播放功能就无法使用,使用背景音乐播放接口播放的话,就会报没有权限错误。
* 你需要这个能力的场景是 ?
使用小程序进行收款消息语音播报的功能。微信买单可以实现,小程序退出后仍能实现买单信息语音播报。但是我们的小程序后台运行后就无法进行音频播放,无法提示用户具体的收款金额。
框架类型 | API/组件名称 | 终端类型 | 微信版本 | 基础库版本 |
---|---|---|---|---|
小程序 | createInnerAudioContext | 工具 | 6.6.5.1280 | 1.9.92 |
后面怎么实现的呢?各位大佬们
敢问楼主有没有新的解决思路,求分享,这个问题困了我好久,好人
木有新思路。目前的解决方案就是调用屏幕长亮接口,来保证小程序不退出。但是没啥卵用,用户已经不用这个功能了。
求分享
请问语音播报的问题解决了吗?
目前我应该是独家
加微信说吧
@炒了个饭,你是怎么解决的?我试过用一段空白音频队列一直占用背景播放器,基本可以达到持续播放的效果,但不是很稳定,有时候会报权限错而停止。后来只能用音频播放接口,再开着屏幕长亮,让用户一直开着。
楼主,我遇上了和你一样的问题。我已经找到解决办法,想和你探讨一下有没有更好的办法。我微信459085
语音在后台播报的解决方法,这个问题困了我好久,借经验,好人。
在进入到后台继续播放之前设置的音乐是可以播放的。但是进入后台运行后,当播放完了,想重新设置新的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();
})
}
后台播放音乐请参考文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/getBackgroundAudioManager.html