我需要为我的应用设置一个组合键,以便我可以调用我已经开始的stopLockTask()
。我怎样才能做到这一点?我可以使用以下代码使用Shift + Left Arrow
执行此操作。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
//Read the input and display its code
switch (keyCode) {
case KeyEvent.KEYCODE_HOME:
mTextView.setText("Home");
break;
case KeyEvent.KEYCODE_DPAD_LEFT:
if (event.isShiftPressed()) {
Toast.makeText(this, "You pressed left + Shift", Toast.LENGTH_SHORT).show();
stopLockTask();
}
break;
default:
char c = event.getDisplayLabel();
String code = String.valueOf(keyCode);
String displayText = c + " " + keyCode;
mTextView.setText(displayText);
mTextView.setBackgroundColor(mColor ^= Color.GREEN);
}
return true;
}
但是,如果没有Shift或Ctrl或Alt,我怎么能这样做,因为远程控制器上没有元键?我只有Android TV遥控器上的按键。有没有办法定义某个键序列(例如左+左+上+ OK)?
答案 0 :(得分:2)
您可以将按键的当前时间保存在变量中。
例如,要保持按下所有数字0,1和2,您可以执行以下操作:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_NUMPAD_0:
numpad0Time = Date.now();
break;
case KeyEvent.KEYCODE_NUMPAD_0:
numpad1Time = Date.now();
break;
case KeyEvent.KEYCODE_NUMPAD_0:
numpad2Time = Date.now();
break;
}
checkKeys();
return true;
}
private void checkKeys() {
long now = Date.now();
if(now - numpad0Time < 500 &&
now - numpad1Time < 500 &&
now - numpad2Time < 500) {
stopLockTask();
}
}
通过这种方式,您可以检查是否在500毫秒的时间戳中按下了所有键。