语音录制 startRecord bug
发布于 5 年前 作者 na74 9917 次浏览 来自 问答

需求是做一个按住录音,松手会结束录音的功能。

代码逻辑如下:

touchstart=“startVoice”  touchend=“stopVoice”

startVoice:function(){

wx.startRecord();

};

stopVoice:function(){

wx.stopRecord();

}

问题:但当快速点击按钮的时候发现,stopRecord会优先startRecord执行,导致快速点击按钮的时候无法停止语音录制。

希望小程序能够解决这个问题,如果能给一个语音录制启动的状态也能解决我现在开发遇到的问题。

5 回复

这个问题是这样的,因为startRecord在iOS上执行会有较大的延迟(比如延迟3秒才开始录音),但是你的录音只按下去2秒,那么两秒之后,stopRecord的代码逻辑已经被执行了,3秒的时候才开始真正录音,这个时候已经没有stopRecord的逻辑来结束录音了。

可以给开始录音的事件加个延时,快速点的话就不触发录音

这是个BUG吗?

这个问题我也遇到了,不过我这边解释startRecord早于stopRecord执行,但是时间短的情况下也是没有触发stopRecord,感觉在stopRecord的时候startRecord还没有正在执行(应该是异步的),楼主还解决了么

再次询问下,语音录制调起是否是一个异步的操作。如果是这样的话,这个startRecord和stopRecord是不是存在些问题。startReocrd缺少一个语音调起成功的回调。 而且真正的收到录音文件应该是在stopRecord中吧。为什么要在startRecord的success获取录音文件路径,很不解。

回到顶部