如何在安卓中检测使用物理键双击?(onKeyMultiple)

  • 本文关键字:双击 onKeyMultiple java android
  • 更新时间 :
  • 英文 :


我正在用物理键制作Android应用程序。 我制作了键码 24(可以更改为唯一键(在我的代码中做一些工作,并希望让它在单击两次时做其他事情。 我尝试了 keyMultiple,但它根本不起作用。 下面是我使用 onKeyMultiple 的代码

@Override
public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event) {
Log.d("KeyCode Multiple : ", Integer.toString(keyCode) + "," + Integer.toString(repeatCount));
Intent intent;
if (keyCode == 24 && event.getRepeatCount() == 2) { // original : 133
FindActivity.this.finish();
intent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent);
}
return false;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == 24) {
event.startTracking();
Log.d("Main Java Log", "keyevent count : " + Integer.toString(event.getRepeatCount()));
}
return super.onKeyDown(keyCode, event);
}

我首先尝试了 if (keyCode == 24 && repeatCount == 2(,但它不起作用,所以我做了 onKeyDown Tracking 24 的 down 并制作 if (keyCode == 24 && event.getRepeatCount(( == 2(,但它也不起作用。 加上 getReapeatCount(( 每当我单击键 24 一两次时都会返回 0。 我搜索了使用 onKeyMultiple 或使用多个物理 keyevent 的示例,但找不到任何示例。 请给我一些建议或更正我的代码。 真的提前感谢。

这有帮助吗:

private boolean clickedTwice = false;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == 24) {
if(clickedTwice){
//key was clicked twice
clickedTwice = false;
event.startTracking();
}else{
//key was clicked the first time
clickedTwice = true;
}
return true;
}
return super.onKeyDown(keyCode, event);
}

我已经尝试了@Hasan Bou Taam建议的代码。 对于那些找到快速双击事件的人,请检查这个:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == 24) {
if (!clickTwice) {
starttime = System.currentTimeMillis();
Log.d("Main Java Log", "Start time : " + String.valueOf(starttime));
clickTwice = true;
} else {
endtime = System.currentTimeMillis();
Log.d("Main Java Log", "End time : " + String.valueOf(endtime));
if (endtime - starttime <= 500) { // time interval for second click
clickTwice = false;
event.startTracking();
// do something for doubleclick keyevent
}
}
}
}
return super.onKeyDown(keyCode, event);
}

最新更新