Java 如何在android中识别在指定时间段内按音量按钮

Java 如何在android中识别在指定时间段内按音量按钮,java,android,onkeydown,Java,Android,Onkeydown,使用这个android应用程序,我想确定是否有人按下了音量上升按钮或音量下降按钮超过2秒。这就是我到目前为止已经实现的 MainActivity.java文件 package com.example.hardwarebuttton2; import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.view.KeyEvent; import android.view.M

使用这个android应用程序,我想确定是否有人按下了音量上升按钮或音量下降按钮超过2秒。这就是我到目前为止已经实现的

MainActivity.java文件

package com.example.hardwarebuttton2;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.widget.Toast;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}



@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) {

    if(keyCode==KeyEvent.KEYCODE_VOLUME_DOWN && event.getEventTime()>2000){
        Toast.makeText(getBaseContext(), "volume down button pressed for 2 seconds", Toast.LENGTH_SHORT).show();
        return true;

    }

    if(keyCode==KeyEvent.KEYCODE_VOLUME_UP && event.getEventTime()>2000){
        Toast.makeText(getBaseContext(), "volume up button pressed for 2 seconds", Toast.LENGTH_SHORT).show();
        return true;
    }


    return super.onKeyDown(keyCode, event);
}


}

这段代码的作用是不计算2秒,只要我按下音量上升或下降按钮,它就会给出输出。那么,这段代码有什么问题呢。如果有人能告诉我如何解决这个问题,我将不胜感激。

event.getEventTime返回上升或下降的时间,而不是自上次事件以来的时间。您要做的是,当您看到向下时存储事件时间,当您看到向上时,从事件时间中减去存储的值。这将为您提供经过的时间。如果经过的时间超过2秒,则执行您想执行的任何操作。

谢谢。使用,long-time=event.getEventTime();我可以确定事件的开始时间。那么如何确定事件完成时间。事件开始时间是在onKeyDown中看到键时。完成时间是在onKeyUp中看到的。看到这个了吗