Example usage for android.view KeyEvent isGamepadButton

List of usage examples for android.view KeyEvent isGamepadButton

Introduction

In this page you can find the example usage for android.view KeyEvent isGamepadButton.

Prototype

public static final boolean isGamepadButton(int keyCode) 

Source Link

Document

Returns true if the specified keycode is a gamepad button.

Usage

From source file:Main.java

/**
 * Any gamepad button + the spacebar or DPAD_CENTER will be used as the fire
 * key.//  w w w  . j a  v a 2 s  .c  o m
 *
 * @param keyCode
 * @return true of it's a fire key.
 */
private static boolean isFireKey(int keyCode) {
    return KeyEvent.isGamepadButton(keyCode) || keyCode == KeyEvent.KEYCODE_DPAD_CENTER
            || keyCode == KeyEvent.KEYCODE_SPACE;
}

From source file:com.android.tv.MainActivity.java

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    if (SystemProperties.LOG_KEYEVENT.getValue())
        Log.d(TAG, "dispatchKeyEvent(" + event + ")");
    // If an activity is closed on a back key down event, back key down events with none zero
    // repeat count or a back key up event can be happened without the first back key down
    // event which should be ignored in this activity.
    if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
        if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {
            mBackKeyPressed = true;//w w  w.  jav  a 2s .com
        }
        if (!mBackKeyPressed) {
            return true;
        }
        if (event.getAction() == KeyEvent.ACTION_UP) {
            mBackKeyPressed = false;
        }
    }

    // When side panel is closing, it has the focus.
    // Keep the focus, but just don't deliver the key events.
    if ((mOverlayRootView.hasFocusable() && !mOverlayManager.getSideFragmentManager().isHiding())
            || mOverlayManager.getSideFragmentManager().isActive()) {
        return super.dispatchKeyEvent(event);
    }
    if (BLACKLIST_KEYCODE_TO_TIS.contains(event.getKeyCode()) || KeyEvent.isGamepadButton(event.getKeyCode())) {
        // If the event is in blacklisted or gamepad key, do not pass it to session.
        // Gamepad keys are blacklisted to support TV UIs and here's the detail.
        // If there's a TIS granted RECEIVE_INPUT_EVENT, TIF sends key events to TIS
        // and return immediately saying that the event is handled.
        // In this case, fallback key will be injected but with FLAG_CANCELED
        // while gamepads support DPAD_CENTER and BACK by fallback.
        // Since we don't expect that TIS want to handle gamepad buttons now,
        // blacklist gamepad buttons and wait for next fallback keys.
        // TODO) Need to consider other fallback keys (e.g. ESCAPE)
        return super.dispatchKeyEvent(event);
    }
    return dispatchKeyEventToSession(event) || super.dispatchKeyEvent(event);
}