Mehdi Haghgoo
Mehdi Haghgoo

Reputation: 3484

How to Disable Home Button on Android TV Remote

There are a couple of SO posts that have already discussed similar issues, but I find them not much relevant or too complex. I am working with an Android TV which has a remote controller, and it is supposed to be used in an enterprise environment. Users should not be able to have much control, so I have to restrict some of the functions available on the remote.
I created a simple app that overrides onKeyDown() and displays pressed keys using the following code:

@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;
}

I am able to capture most of the keys and override their behaviors most notably 131, 132, 133, and 134 (used as Media, TV, Web, and App shortcuts respectively on the remote).
enter image description here
enter image description here

The only problem is the Home button which AOSP source code (KeyEvent.java) says is system-specific:

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

A solution that struck me was to extend KeyEvent and override the method isSystem() to return false when the selected key is KEYCODE_HOME. But, this method is defined final and I cannot override it. Any ideas?

Upvotes: 0

Views: 3800

Answers (1)

alireza rajaei
alireza rajaei

Reputation: 187

you need to use

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

in your manifest and

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

    return super.dispatchKeyEvent(event);
}

i think control home key is 3

i hope was helpful

Upvotes: 1

Related Questions