Android:来自Android Box遥控器的关键事件

str*_*gos 6 android keyevent television box

我有兴趣知道如何从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);
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Tie*_*ien 4

您应该在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;
}
Run Code Online (Sandbox Code Playgroud)

编辑:首先,您应该知道遥控器的按键映射(所有类型的 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;
}
Run Code Online (Sandbox Code Playgroud)