【问题标题】:Android: Key Event from Android Box remote controllerAndroid:来自 Android Box 遥控器的按键事件
【发布时间】:2015-05-28 20:55:07
【问题描述】:

我很想知道如何从 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


    【解决方案1】:

    你应该在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 电视盒都相同),上面的代码将帮助您了解您在遥控器上按下的按键代码。例如,当我按下遥控器上的 BACK 按钮时,我得到了密钥代码 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;
    }
    

    【讨论】:

    • 啊哈,非常感谢。 OK 按钮,在中间的那个呢?我怎样才能抓住它?
    • 运行上面的代码并尝试按OK按钮,keycode将被打印到Logcat。
    • 好吧,这段代码考虑了智能手机的关键事件。我只想要遥控器。有什么解决办法吗?
    • @Tien 是的,应用兼容性也有问题。如果有人遇到同样的问题,有答案stackoverflow.com/a/29852304/2004305
    • @Tien:你能帮我解决我的问题吗?stackoverflow.com/questions/42975806/…
    猜你喜欢
    • 2017-01-21
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多