需求是做一个按住录音,松手会结束录音的功能。
代码逻辑如下:
touchstart="startVoice" touchend="stopVoice"
startVoice:function(){
wx.startRecord();
};
stopVoice:function(){
wx.stopRecord();
}
问题:但当快速点击按钮的时候发现,stopRecord会优先startRecord执行,导致快速点击按钮的时候无法停止语音录制。
希望小程序能够解决这个问题,如果能给一个语音录制启动的状态也能解决我现在开发遇到的问题。
这个问题是这样的,因为startRecord在iOS上执行会有较大的延迟(比如延迟3秒才开始录音),但是你的录音只按下去2秒,那么两秒之后,stopRecord的代码逻辑已经被执行了,3秒的时候才开始真正录音,这个时候已经没有stopRecord的逻辑来结束录音了。
这个问题我也遇到了,不过我这边解释startRecord早于stopRecord执行,但是时间短的情况下也是没有触发stopRecord,感觉在stopRecord的时候startRecord还没有正在执行(应该是异步的),楼主还解决了么
可以给开始录音的事件加个延时,快速点的话就不触发录音
这是个BUG吗?
再次询问下,语音录制调起是否是一个异步的操作。如果是这样的话,这个startRecord和stopRecord是不是存在些问题。startReocrd缺少一个语音调起成功的回调。 而且真正的收到录音文件应该是在stopRecord中吧。为什么要在startRecord的success获取录音文件路径,很不解。