收藏
回答

语音录制 startRecord bug

问题模块
API和组件

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

代码逻辑如下:


touchstart="startVoice"  touchend="stopVoice"


startVoice:function(){

wx.startRecord();

};


stopVoice:function(){

wx.stopRecord();

}


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


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

最后一次编辑于  2017-09-10  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

5 个回答

  • Lee
    Lee
    2017-11-16

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

    2017-11-16
    赞同
    回复
  • 尼古不拉斯
    尼古不拉斯
    2017-11-06

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

    2017-11-06
    赞同
    回复
  • 一天两觉
    一天两觉
    2017-11-02

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

    2017-11-02
    赞同
    回复
  • 翰
    2017-09-11

    这是个BUG吗?

    2017-09-11
    赞同
    回复
  • 翰
    2017-09-10

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

    2017-09-10
    赞同
    回复