我有兴趣知道如何从 Android TV Box 遥控器捕获按键/按钮事件?
例如,我希望当我从遥控器上单击“确定”按钮时显示一个弹出菜单。我想从遥控器捕获下一个/后退键事件。
我应该使用 Android 中的 Key Event 类吗?如果是,我应该如何实现它?
我遇到了这个函数,但我无法真正理解它。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_A:
{
//your Action code
return true;
}
}
return super.onKeyDown(keyCode, event);
}
提前致谢。
您应该在 dispatchKeyEvent
上捕获按键事件@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
Log.e(TAG, "Key down, code " + event.getKeyCode());
} else if (event.getAction() == KeyEvent.ACTION_UP) {
Log.e(TAG, "Key up, code " + event.getKeyCode());
}
return true;
}
编辑: 首先,您应该知道遥控器的按键映射(对于所有类型的 Android 电视盒来说都不相同),上面的代码将帮助您了解您在遥控器上按下的按键的代码。例如,当我按下遥控器上的“返回”按钮时,我得到了键码 3。 然后,我希望当按下返回键时,会显示一条 Toast 消息:
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
// You should make a constant instead of hard code number 3.
if (event.getAction() == KeyEvent.ACTION_UP && event.getKeyCode == 3) {
Toast.makeText(this, "Hello, you just press BACK", Toast.LENG_LONG).show();
}
return true;
}
对 Tien 的答案进行小修正。 event.getKeyCode 缺少 () 且 Toast.LENG_LONG 缺少 TH。更正代码如下:
@覆盖 公共布尔dispatchKeyEvent(KeyEvent事件){
// You should make a constant instead of hard code number 3.
if (event.getAction() == KeyEvent.ACTION_UP && event.getKeyCode() == 3) {
Toast.makeText(this, "Hello, you just press BACK", Toast.LENGTH_LONG).show();
}
return true;
}