我要实现的是小程序内播放音频,并且支持退出小程序后仍能保持播放状态
音频播放
只在小程序内部播放,小程序关闭语音也就关闭。它有两种播放API:
wx.createInnerAudioContext()
wx.playVoice()
注:这个API已经停止更新,被放弃了。如果你用了,那就注意下面的坑。 playVoice不能播放网络上的音频,只能播放本地路径的音频文件🤦♀️ ,想用网络的音频,需要提前调用wx.downloadFile来下载资源文件,然后再播放。
/** 下载音频文件并播放*/
wx.downloadFile({
url: this.data.voicePath,
success(res) {
if (res.statusCode === 200) {
console.log('语音下载成功:' + JSON.stringify(res));
//播放语音文件
wx.playVoice({
filePath: res.tempFilePath,
success: () => {
console.log('语音播放success');
},
fail: (error) => {
console.log('语音播放失败' + JSON.stringify(error));
}
})
}
}
})
//暂停
wx.pauseVoice({
fail: (error) => {
console.log('语音暂停失败' + error);
}
})
//停止
wx.stopVoice({
fail: (error) => {
console.log('语音停止失败' + error);
}
})
后台音频播放
- 要支持后台音频播放,就要申明后台运行的能力,需要在 app.json 中配置
requiredBackgroundModes
属性,如:
{
"pages": ["pages/index/index"],
"requiredBackgroundModes": ["audio"]
}
2.调用 wx.getBackgroundAudioManager()方法,获取全局唯一的背景音频管理器# BackgroundAudioManager。然后看根据官网文章就够用了
const audioManager = wx.getBackgroundAudioManager()
//--------------播放,暂停和中止----------------
startBackAudioPlay: function(e) {
let title = "小半"; //音频名称
//音频网络地址
let srcAudio = "https://ae.weixin.qq.com/cgi-bin/mmasrai-bin/getmedia?filename=1564467852_4710b11419fa5b6b7c60aa9e3a95d6b7&filekey=691834331&source=miniapp_plugin";
//音频封面
let coverImgUrl = 'http://qukufile2.qianqian.com/data2/pic/fbdc54f53cb43ca47596053632dc5e0a/268582589/268582589.jpg@s_2,w_150,h_150';//
audioManager.title = title;
audioManager.src = srcAudio;
audioManager.coverImgUrl = coverImgUrl;
audioManager.play();
},
pauseBackAudioPlay: function(e) {
audioManager.pause();
},
stopBackAudioPlay: function(e){
audioManager.stop();
},
个人开发笔记,如果有问题,可以留言讨论
网友评论