当前位置: 首页 > 面试题库 >

测量Android中两个MotionEvent之间的经过时间

方祺
2023-03-14
问题内容

我是Android编程的新手,所以请您为我的问题提供帮助。我正在尝试以秒/毫秒为单位测量MouseEvent.ACTION_DOWN和MouseEvent.ACTION_UP之间的时间。

@Override
public boolean onTouchEvent(MotionEvent event) {
    long start=0;
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        // manage down press
        start=System.nanoTime();//START
        System.out.println("START");
    }
    else if (event.getAction() == MotionEvent.ACTION_MOVE) {
        // manage move
        System.out.println(event.getRawX()+","+event.getRawY());
    }
    else {
        // manage up
        long finish=System.nanoTime()//FINISH
        long seconds = (finish-start) / 1000000000;//for seconds
        Toast.makeText(this, "FINISH, duration: "+seconds, Toast.LENGTH_SHORT).show();
        System.out.println("FINISH, duration: "+seconds);
    }
    return true;
}




Logcat:
03-19 04:04:27.140: I/System.out(4348): START
03-19 04:04:27.160: I/System.out(4348): 517.0,280.0
03-19 04:04:27.190: I/System.out(4348): 517.0,280.0
03-19 04:04:27.200: I/System.out(4348): 517.0,280.0
03-19 04:04:27.220: I/System.out(4348): 517.0,280.0
03-19 04:04:27.250: I/System.out(4348): 517.0,280.0
03-19 04:04:27.260: I/System.out(4348): 517.0,280.0
03-19 04:04:27.300: I/System.out(4348): 517.0,280.0
03-19 04:04:27.310: I/System.out(4348): 517.0,280.0
03-19 04:04:27.330: I/System.out(4348): FINISH, duration: 16545

我的问题实际上是因为seconds变量没有显示我想要的内容,我什至不知道它的测量结果是否正确,对于上面的示例,持续时间为16545(???!?!?)
-3秒。我该怎么做才能在两个MotionEvent之间以秒或毫秒为单位正确测量时间,或者在我的示例中我错了什么?谢谢 !


问题答案:
long startTime;
public boolean onTouchEvent(MotionEvent event) {

    if (event.getAction() == MotionEvent.ACTION_DOWN) 
        startTime = System.nanoTime();

    else if (event.getAction() == MotionEvent.ACTION_UP) {
        long elapseTime = System.nanoTime() - startTime;
        //do whatever u want with elapseTime now, its in nanoseconds
    }
}


 类似资料:
  • 问题内容: 我有一个名为的按钮。我的目的是单击以更改文本并开始计算时间。计时器必须在下次单击时停止。它应给出两次单击之间的时间间隔。 问题答案: 在第一次单击上创建一个变量: 然后,在第二次单击上,您可以计算出差异: 将以秒为单位给您带来差异。希望这可以帮助。

  • 问题内容: 我想要的是开始在代码中的某个地方开始计时,然后获取经过的时间,以衡量执行少量功能所花费的时间。我认为我使用的timeit模块错了,但是文档对我来说很混乱。 问题答案: 使用代替。前者会自动在你的平台和Python版本上提供最佳时钟:

  • 问题内容: 我们如何衡量在Swift中运行一个函数所花费的时间?我试图以这种方式显示经过的时间:“经过的时间为.05秒”。看到在Java中,我们可以使用System.nanoTime(),Swift中有可用的等效方法来实现这一点吗? 请看一下示例程序: 问题答案: 这是我编写的用于测量Swift中的Euler问题的Swift函数 从Swift 3开始,Grand Central Dispatch现

  • 问题内容: 有没有一种简单的方法/模块可以 正确 测量python中的经过时间?我知道我可以简单地打电话两次并取差额,但是如果更改系统时间,那将产生错误的结果。当然,这种情况很少发生,但这确实表明我在衡量错误的事情。 考虑到持续时间时,使用它来衡量是难以置信的。您将两个绝对时间测量值的差值反过来由持续时间测量值(由计时器执行)和已知的绝对时间(手动设置或通过ntp设置)构成,而您根本不感兴趣。 因

  • 问题内容: 我想要这样的东西: 同样重要的是,例如,如果startTime为23:00,endTime为1:00,则持续时间为2:00。 为了在Java中完成此操作,应使用哪些类型? 问题答案: 不幸的是,到目前为止发布的十个答案中没有一个是正确的。 如果要测量经过的时间,并且希望它是正确的,则必须使用。你不能使用,除非你不介意结果错误。 的目的是测量经过的时间,目的是测量挂钟时间。你不能将一个用

  • 问题内容: 我有一个10和20问题游戏。我需要计算用户完成游戏需要花费多少时间。 我用它来停止计数器: 现在我需要两件事: 一种如何计算经过时间并将其存储在变量中的方法 我需要最终值是两倍,例如最终得分是:15.49秒。 问题答案: 游戏开始时: 游戏结束时: