最新进展: 在切后台时(包括分享、熄屏等),recordManager会回调onPause,故不在onHide中进行操作,直接根据回调切换界面状态。 但是后台调用pause/stop后报错无法再次录音的问题,请微信的同学尽快给个答复吧。
wx.getRecorderManager熄屏后报错再也无法继续录音通过基础库1.6.0以后提供的wx.getRecordManager接口返回的recordManager对象进行录音。 当用户手机熄屏或者通过分享切到其他页面(非当前小程序)时, 1、如果我们在页面的onHide里调用了recordManager的pause或stop方法,微信会立即报错,operateRecorder:fail:access denied。后面只要不重启小程序,即使再次通过wx.getRecordManager获取recordManager对象调用其start方法,也会立即报错,无法录音。 2、如果在页面的onHide里不去调stop方法,不会报错,回来后继续录音。但是等到最后调用stop时,在onStop里返回的录音文件发现,第一次onHide后录的所有内容,都没有保存。 我们现在真的有点纠结,是继续用微信新的wx.getRecordManager还是回去用来老的wx.startRecord与wx.stopRecord呢? 请尽快给个答复吧。 报错截图如下 [图片]
2018-07-06的确,必现,按Home键,然后去下拉通知栏里点×关掉音乐,没有回调onStop
wx.getBackgroundAudioManager()可能存在问题我用的是小米5(安卓) 使用背景音频播放,然后按home键返回手机桌面,再关闭背景音乐,onStop事件没有调用。 注: 1.我周围人用的都是苹果,苹果貌似没有关闭按钮,所以问题没有复现。 2.因为我们有音频播放列表,我还需要把单个的语音封装成一个语音播放组件,也就是得同步语音播放(上一个停止再开始下一个),希望给个解决方案。
2018-06-12我们在Android上也遇到了同样的问题,而且至少有两种情况: 小程序播放音乐,切后台 1、在下拉通知栏的控制组件中点击×结束播放,这时候会回调onStop 2、在微信的全屏音乐播放里点暂停,会回调onPause,然后返回微信,这时候虽然只是暂停,但是微信会自动把下拉通知栏里的控制条去掉,类似于模拟执行了stop 上述两种情况下,进入小程序直接调用backgroundAudioManager的play方法,都无效,虽然其src等属性都存在(就像正常暂停了一样)。 而如果小程序在前台,点击下拉通知栏中的×,回调后去查backgroundAudioManager的src,会被正确清除。 为了规避这个问题,我们只能在后台暂停的情况下,都认为是已经停止,再播放均重新设置src。导致了用户在通知栏暂停后,进小程序没法继续播放,只能重头播。因为我们没办法从任何一个属性里判断之前的暂停是从哪里点的。
BackgroundAudioManager 后台暂停后无法再次播放使用BackgroundAudioManager 在背景播放后, 把小程序关掉, 在微信把这个音乐暂停, 再打开小程序, playContext.src还是能取到正确的链接, 但是play无法继续播放
2018-06-12