2014-10-28 46 views
0

我正在构建像藤一样的摄像机应用程序,只要您将手指放在屏幕上,就可以录制视频。保护连续触摸事件的视图

我的问题:如果有人在屏幕上快速连续拍照,相机逻辑会收到太多事件。它不断尝试写入文件,关闭记录器,打开新的连接等。

当它必须在太短的时间内开始和停止频繁记录时,相机看起来非常脆弱。

我试着设置一个标志,防止新的动作事件访问摄像头,同时它仍然忙于上一个操作。这是丑陋的,但它的工作原理。主要的问题是,这些动作事件似乎会提示并相互激发,引发太多事件。

我使用动作事件ACTION_UPACTION_DOWN来检测用户是否将手指放在屏幕上或释放它。

在照相机处理准备和发布期间,是否有一种很好的方法来禁用caputuring动作事件?

+0

做你尝试给一个500毫秒到1000毫秒定时器一旦你点击在人如果只需轻按所以would'nt开始录制和'ACTION_UP'您可以重置定时器 – BackStabber 2014-10-28 14:42:28

+0

在最初的'MotionEvent.ACTION_DOWN'事件之后,所有后续的触摸事件(用户保持在屏幕上)将成为'MotionEvent.ACTION_MOVE'事件,直到用户将他们的手指抬离屏幕,该屏幕将被注册为' MotionEvent.ACTION_UP'事件。因此请检查'MotionEvent.ACTION_MOVE'是否是初始并开始记录。 – 2014-10-28 14:44:24

+0

丑陋,但这可能是一种选择。看起来像摄像头周围的很多东西只能用于丑陋的解决方法,比如定时器和滥用try {} catch {}: -/ – j7nn7k 2014-10-28 14:45:25

回答

1

试试这个:

//Class Variable 
Timer timer; 

public boolean onTouch(View view, MotionEvent event) { 
     // Check event type 

     switch (event.getAction()) { 

     // Finger down 
     case MotionEvent.ACTION_DOWN: 
       timer = new Timer(); 
       timer.schedule(recordingfunc(),1000); 
       break; 
     case MotionEvent.ACTION_UP: 
      if(timer!=null){ 
        timer.cancel(); 
} 
         break; 
    } 
}