官网上明确说的是全局唯一并且只是获取对象,所以会导致一个问题就是,当你多个页面要用到这个对象的时候,会发现 onStop 方法会被覆盖,导致调用结果不是自己想要的
解决办法也简单粗暴,在需要用到的界面重新覆盖onStop 方法就好,我是放在了 onShow 方法里
onShow() {
this.recorderManager = uni.getRecorderManager();
//监听录音开始事件
this.recorderManager.onStart(() => {
console.log('录音开始');
this.isRecording = true;
this.startvoice = true;
// 开启定时器来记录录音时长
this.timer = setInterval(() => {
if (this.recordTime >= 30) {
// 如果达到30秒,停止录音
this.stopRecord();
} else {
this.recordTime++;
}
}, 1000);
});
//监听录音结束事件
this.recorderManager.onStop((res) => {
console.log('录音结束', res);
this.isRecording = false;
this.startvoice = false;
clearInterval(this.timer);
this.recordTime = 0;
this.audioFilePath = res.tempFilePath;
this.uploadAudioFile();
});
},