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

问题描述 投票:0回答:2

我有兴趣知道如何从 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);
}

提前致谢。

android keyevent box television
2个回答
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;
}

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

0
投票

对 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;

}

© www.soinside.com 2019 - 2024. All rights reserved.