Page({ data: { recordingSrc: '', isRecording: false, isshowVoiceMask: true, //是否显示录音中 voiceTime: 2, //录音时长 gridConfig: { column: 3, width: 160, height: 160, }, originFiles: [{ url: 'https://tdesign.gtimg.com/mobile/demos/example4.png', name: 'uploaded1.png', type: 'image', }, { url: 'https://tdesign.gtimg.com/mobile/demos/example6.png', name: 'uploaded2.png', type: 'image', } ] }, onLoad() { this.recorderManager = wx.getRecorderManager(); this.recorderManager.onStart(() => { console.log('recorder start'); this.setData({ isRecording: true }); this.startWaveformDrawing(); }); this.recorderManager.onStop((res) => { console.log('recorder stop', res); const { tempFilePath } = res; this.setData({ recordingSrc: tempFilePath, isRecording: false }); this.stopWaveformDrawing(); }); this.recorderManager.onError((res) => { console.error(res); this.setData({ isRecording: false }); this.stopWaveformDrawing(); }); }, handleRemove(e) { console.log("handleRemove"); const { index } = e.detail; const { originFiles } = this.data; originFiles.splice(index, 1); this.setData({ originFiles, }); }, handleClick() { console.log("handleClick"); }, handleAdd(e) { console.log("handleAdd"); const { files } = e.detail; const { originFiles } = this.data; this.setData({ originFiles: [...originFiles, ...files], // 此时设置了 fileList 之后才会展示选择的图片 }); }, /** * 上传图片 */ onUpload() { wx.uploadFile({ url: 'https://example.weixin.qq.com/upload', // 仅为示例,非真实的接口地址 filePath: file.url, name: 'file', formData: { user: 'test' }, success: () => { this.setData({ [`fileList[${length}].status`]: 'done', }); }, }); }, //按住按钮 startHandel () { this.setData({ isShowVoiceMask:true }) console.log("开始录音") wx.getRecorderManager().start({ duration: 0 }) }, //松开按钮 endHandle () { this.setData({ isShowVoiceMask:false }) console.log("结束") const recorderManager = wx.getRecorderManager() //录音停止函数 var that = this; wx.getRecorderManager().onStop((res) => { const voiceTime = Math.floor(res.duration/1000) console.log('voiceTime',voiceTime); that.setData({ voiceTime }) console.log('res',res); const { tempFilePath } = res; //这里松开按钮 会返回录音本地路径 audio.src = tempFilePath console.log(tempFilePath); //上传录制的音频到服务器 // wx.uploadFile({ // url: '接口地址' + api.voice, //接口地址 // name: 'file', //上传文件名 // filePath: tempFilePath, // success: function (res) { //后台返回给前端识别后的文字 // var model = res.data // var modeljson = JSON.parse(model) // if (modeljson.status_code == 500) { // wx.showToast({ // title: '语音转换失败', // image: '/assets/image/icon/fail@2x.png' // }) // return false; // } // if (modeljson.meta.status_code === 200 && !modeljson.data.err_msg) { // var saymessage = modeljson.data.message; // wx.setStorageSync('sayinfo', saymessage) // that.setData({ // inpvalue: saymessage // }) // setTimeout(() =>{ // wx.navigateTo({ // url: '../loding/loding' // }) // },2000) // setTimeout(() => { // wx.hideLoading(); // }, 100) // } else if (modeljson.data.err_msg) { // wx.showToast({ // title: '请大声说话', // image: '/assets/image/icon/fail@2x.png' // }) // return false; // } // } // }) }) //触发录音停止 wx.getRecorderManager().stop() }, // 播放 handlePlay(e){ // 倒计时 let time = this.data.voiceTime audio.play() let timer1 = -1,timer2 = -1,timer3 = -1,timer4 = -1,timer5 = -1,timer6 = -1; // 第一次播放为0 第二次播放2秒钟 timer6 = setInterval(()=>{ console.log('时间',time); if(time <= 0){ this.setData({ line2Opcity: 1, line3Opcity: 1 }) clearInterval(timer6) clearTimeout(timer2) clearTimeout(timer3) clearTimeout(timer4) clearTimeout(timer5) return } timer2 = setTimeout(()=>{ console.log('timer2'); this.setData({ line2Opcity: 0, line3Opcity: 0 }) },300) timer3 = setTimeout(()=>{ console.log('timer3'); this.setData({ line2Opcity: 1, line3Opcity:0 }) },600) timer4 = setTimeout(()=>{ console.log('timer4'); this.setData({ line2Opcity: 1, line3Opcity: 1 }) },900) timer5 = setTimeout(()=>{ console.log('timer5'); this.setData({ line2Opcity: 0, line3Opcity: 0 }) },1200) },1200) // 倒计时 timer1 = setInterval(()=>{ time--; if(time <= 0){ clearInterval(timer1) return } },1000) } });