【问题标题】:How to Disable Home Button on Android TV Remote如何禁用 Android TV 遥控器上的主页按钮
【发布时间】:2017-12-30 09:30:27
【问题描述】:

有几篇 SO 帖子已经讨论过类似的问题,但我发现它们的相关性不大或过于复杂。我正在使用带有遥控器的 Android TV,它应该在企业环境中使用。用户应该没有太多的控制权,所以我不得不限制遥控器上的一些可用功能。
我创建了一个简单的应用程序,它覆盖onKeyDown() 并使用以下代码显示按下的键:

@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;
        default:
            char c = event.getDisplayLabel();
            String code = String.valueOf(keyCode);
            String displayText = c + " " + keyCode;
            mTextView.setText(displayText);
            mTextView.setBackgroundColor(mColor^=Color.GREEN);

    }

    return true;
}

我能够捕获大多数键并覆盖它们的行为,最显着的是 131、132、133 和 134(分别用作遥控器上的媒体、电视、网络和应用程序快捷方式)。

唯一的问题是 AOSP 源代码 (KeyEvent.java) 所说的主页按钮是系统特定的:

* This key is handled by the framework and is never delivered to applications. */
    public static final int KEYCODE_HOME            = 3;

一个让我印象深刻的解决方案是扩展 KeyEvent 并覆盖方法 isSystem() 以在所选键为 KEYCODE_HOME 时返回 false。但是,这个方法是最终定义的,我不能覆盖它。有任何想法吗?

【问题讨论】:

  • “kiosk”模式是否合适:developer.android.com/work/cosu.html
  • 感谢@MorrisonChang 我正在阅读。看来锁定模式对我有用。
  • 能分享一下这款遥控器的安卓电视型号吗?我在找菜单按钮的键码

标签: android android-homebutton


【解决方案1】:

你需要使用

 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

在你的清单和

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    Toast.makeText(this, ""+event.getKeyCode(), Toast.LENGTH_SHORT).show();
    return false;

    return super.dispatchKeyEvent(event);
}

我认为控制主页键是 3

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2017-01-21
    • 2022-07-15
    • 2011-06-07
    • 2020-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-15
    • 1970-01-01
    相关资源
    最近更新 更多