如何在Android TV遥控器上禁用主页按钮

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

[有几个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(分别用作遥控器上的Media,TV,Web和App快捷键)。enter image description hereenter image description here

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

* 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。但是,此方法是最终定义的,我无法覆盖它。有任何想法吗?

android android-homebutton
1个回答
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

希望对您有所帮助

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