根据android documentation,检测密钥释放应该如下:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
System.out.println("pressed");
event.startTracking();
return true;
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
System.out.println("released");
return true;
}
但是在尝试实现它时,它无法按预期工作。
我需要检测何时按下蓝牙键盘的按键,并在发生这种情况时只接收一次对onKeyDown的调用,并检测何时释放相同的按键。我做错了什么,或者有没有其他办法可以得到这个想要的结果?
当按住任何键时,我会在控制台上重复这个:
I/System.out: pressed
I/System.out: released
I/System.out: pressed
I/System.out: released
I/System.out: pressed
I/System.out: released
I/System.out: pressed
I/System.out: released
感谢。
答案 0 :(得分:0)
Use OnTouchListener instead of OnClickListener:
// this goes somewhere in your class:
long lastDown;
long lastDuration;
...
// this goes wherever you setup your button listener:
button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN) {
lastDown = System.currentTimeMillis();
} else if (event.getAction() == MotionEvent.ACTION_UP) {
lastDuration = System.currentTimeMillis() - lastDown;
}
}`enter code here`
});