Android onKeyUp()和onKeyDown()有一些问题
我正试图通过外部键盘在android应用程序中调用ctrl+c或ctrl+d中的某个事件Android onKeyUp()和onKeyDown()有一些问题,android,keyboard-events,Android,Keyboard Events,我正试图通过外部键盘在android应用程序中调用ctrl+c或ctrl+d中的某个事件 @Override public boolean onKeyUp(int keyCode, KeyEvent event) { if( keyCode == KeyEvent.KEYCODE_CTRL_LEFT){ flag_sellreceipt=KeyEvent.isModifierKey(KeyEvent.KEYCODE_CTRL_LEFT);
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if( keyCode == KeyEvent.KEYCODE_CTRL_LEFT){
flag_sellreceipt=KeyEvent.isModifierKey(KeyEvent.KEYCODE_CTRL_LEFT);
}
if (keyCode == KeyEvent.KEYCODE_D && flag_sellreceipt) {
HotkeyForDone();
flag_sellreceipt = false;
}
if (keyCode == KeyEvent.KEYCODE_C && flag_sellreceipt) {
try {
cancelCart();
flag_sellreceipt = false;
} catch (Exception e) {
handleException(Present.this, e,"In some screen" + e.toString(),null);
e.printStackTrace();
flag_sellreceipt = false;
}
}
}
正如我所希望的那样,这很好,但是发生了一些不可取的事情。Ctrl+d或Ctrl+c一起工作正常,但发生的情况是假设用户只按Ctrl,一段时间后用户按d或c,然后Ctrl+d或Ctrl+c正在调用,这确实是不希望发生的事件。只有当ctrl和alphabet同时按下时,才会发生这种情况。有谁能帮我解决这个问题,或者请给我一些建议,让我摆脱这个问题。提前感谢大家为什么要这样编程?在你的电脑上试试键盘-如果你按住控制键2分钟,然后按c,它仍然是ctrl+c,因为你仍然按住控制键 如果你真的因为某种奇怪的原因想这样做,请保留按下控制键的时间。在onKeyUp中,如果控制键在X毫秒前按下,其中X是某个合理值,如200左右,则清除用于将控制标记为关闭的fllag。问题已解决
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if( keyCode == KeyEvent.KEYCODE_CTRL_LEFT){
flag_sellreceipt = false;
}
}
及
@加布…谢谢你的快速回复。是否有可能捕获提前几毫秒发生的事件?不可以。当第一个事件发生时,必须在变量中保存时间戳。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if( keyCode == KeyEvent.KEYCODE_CTRL_LEFT){
flag_sellreceipt=KeyEvent.isModifierKey(KeyEvent.KEYCODE_CTRL_LEFT);
int i = KeyEvent.META_CTRL_LEFT_ON;
System.out.println("ctrl is pressed");
}
return super.onKeyDown(keyCode, event);
}