Example usage for android.view KeyEvent KEYCODE_A

List of usage examples for android.view KeyEvent KEYCODE_A

Introduction

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

Prototype

int KEYCODE_A

To view the source code for android.view KeyEvent KEYCODE_A.

Click Source Link

Document

Key code constant: 'A' key.

Usage

From source file:Main.java

/**
 * Get an unaccepted key code./*from w ww  .j av  a  2s .c  o  m*/
 *
 * @param acceptedChars accepted chars array.
 * @return return key code if we find unaccepted one, or return -1.
 */
public static int getUnacceptedKeyCode(char[] acceptedChars) {
    for (int keyCode = KeyEvent.KEYCODE_A; keyCode <= KeyEvent.KEYCODE_Z; keyCode++) {
        KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, keyCode);
        if ('\0' == event.getMatch(acceptedChars)) {
            return keyCode;
        }
    }
    return -1;
}

From source file:Main.java

public static int lookupKeycode(boolean shiftDown, int keycode) {
    switch (keycode) {
    // case KeyEvent.KEYCODE_SHIFT_LEFT: return 0x00;
    // case KeyEvent.KEYCODE_SHIFT_RIGHT: return 0x00;
    case KeyEvent.KEYCODE_0:
        return shiftDown ? 0x126 : 0x27;
    case KeyEvent.KEYCODE_1:
        return 0x30;
    case KeyEvent.KEYCODE_2:
        return 0x31;
    case KeyEvent.KEYCODE_3:
        return 0x11;
    case KeyEvent.KEYCODE_4:
        return 0x12;
    case KeyEvent.KEYCODE_5:
        return 0x13;
    case KeyEvent.KEYCODE_6:
        return 0x34;
    case KeyEvent.KEYCODE_7:
        return shiftDown ? 0x134 : 0x24;
    case KeyEvent.KEYCODE_8:
        return 0x15;
    case KeyEvent.KEYCODE_9:
        return shiftDown ? 0x115 : 0x26;
    case KeyEvent.KEYCODE_A:
        return 0x41;
    case KeyEvent.KEYCODE_B:
        return 0x64;
    case KeyEvent.KEYCODE_C:
        return 0x52;
    case KeyEvent.KEYCODE_D:
        return 0x32;
    case KeyEvent.KEYCODE_E:
        return 0x22;
    case KeyEvent.KEYCODE_F:
        return 0x43;
    case KeyEvent.KEYCODE_G:
        return 0x53;
    case KeyEvent.KEYCODE_H:
        return 0x54;
    case KeyEvent.KEYCODE_I:
        return 0x25;
    case KeyEvent.KEYCODE_J:
        return 0x45;
    case KeyEvent.KEYCODE_K:
        return 0x46;
    case KeyEvent.KEYCODE_L:
        return 0x56;
    case KeyEvent.KEYCODE_M:
        return 0x65;
    case KeyEvent.KEYCODE_N:
        return 0x55;
    case KeyEvent.KEYCODE_O:
        return 0x36;
    case KeyEvent.KEYCODE_P:
        return 0x37;
    case KeyEvent.KEYCODE_Q:
        return 0x10;
    case KeyEvent.KEYCODE_R:
        return 0x33;
    case KeyEvent.KEYCODE_S:
        return 0x51;
    case KeyEvent.KEYCODE_T:
        return 0x23;
    case KeyEvent.KEYCODE_U:
        return 0x35;
    case KeyEvent.KEYCODE_V:
        return 0x63;
    case KeyEvent.KEYCODE_W:
        return 0x21;
    case KeyEvent.KEYCODE_X:
        return 0x42;
    case KeyEvent.KEYCODE_Y:
        return 0x44;
    case KeyEvent.KEYCODE_Z:
        return 0x61;
    case KeyEvent.KEYCODE_SPACE:
        return 0x62;
    case KeyEvent.KEYCODE_ENTER:
        return 0x49;
    case KeyEvent.KEYCODE_DEL:
        return 0x59;
    case KeyEvent.KEYCODE_APOSTROPHE:
        return shiftDown ? 0x31 : 0x124;
    case KeyEvent.KEYCODE_POUND:
        return 0x111; // '#' is Shift+3
    case KeyEvent.KEYCODE_MINUS:
        return shiftDown ? 0x238 : 0x17;
    case KeyEvent.KEYCODE_EQUALS:
        return 0x117;
    case KeyEvent.KEYCODE_AT:
        return 0x47;
    case KeyEvent.KEYCODE_STAR:
        return 0x148;
    case KeyEvent.KEYCODE_PERIOD:
        return shiftDown ? 0x248 : 0x67;
    case KeyEvent.KEYCODE_SEMICOLON:
        return 0x57;
    case KeyEvent.KEYCODE_SLASH:
        return 0x68;
    case KeyEvent.KEYCODE_PLUS:
        return 0x157;
    case KeyEvent.KEYCODE_COMMA:
        return 0x66;
    // case KeyEvent.KEYCODE_GRAVE: return 0x??;
    // case KeyEvent.KEYCODE_LEFT_BRACKET: return 0x??;
    // case KeyEvent.KEYCODE_RIGHT_BRACKET: return 0x??;
    }/*from ww  w.  j a  v  a2s. c  o m*/
    return 0xaa;
}

From source file:Main.java

public static String getChar(int keyCode) {
    switch (keyCode) {
    case KeyEvent.KEYCODE_0:
        return "0";
    case KeyEvent.KEYCODE_1:
        return "1";
    case KeyEvent.KEYCODE_2:
        return "2";
    case KeyEvent.KEYCODE_3:
        return "3";
    case KeyEvent.KEYCODE_4:
        return "4";
    case KeyEvent.KEYCODE_5:
        return "5";
    case KeyEvent.KEYCODE_6:
        return "6";
    case KeyEvent.KEYCODE_7:
        return "7";
    case KeyEvent.KEYCODE_8:
        return "8";
    case KeyEvent.KEYCODE_9:
        return "9";
    case KeyEvent.KEYCODE_A:
        return "a";
    case KeyEvent.KEYCODE_B:
        return "b";
    case KeyEvent.KEYCODE_C:
        return "c";
    case KeyEvent.KEYCODE_D:
        return "d";
    case KeyEvent.KEYCODE_E:
        return "e";
    case KeyEvent.KEYCODE_F:
        return "f";
    case KeyEvent.KEYCODE_G:
        return "g";
    case KeyEvent.KEYCODE_H:
        return "h";
    case KeyEvent.KEYCODE_I:
        return "i";
    case KeyEvent.KEYCODE_J:
        return "j";
    case KeyEvent.KEYCODE_K:
        return "k";
    case KeyEvent.KEYCODE_L:
        return "l";
    case KeyEvent.KEYCODE_M:
        return "m";
    case KeyEvent.KEYCODE_N:
        return "n";
    case KeyEvent.KEYCODE_O:
        return "o";
    case KeyEvent.KEYCODE_P:
        return "p";
    case KeyEvent.KEYCODE_Q:
        return "q";
    case KeyEvent.KEYCODE_R:
        return "r";
    case KeyEvent.KEYCODE_S:
        return "s";
    case KeyEvent.KEYCODE_T:
        return "t";
    case KeyEvent.KEYCODE_U:
        return "u";
    case KeyEvent.KEYCODE_V:
        return "v";
    case KeyEvent.KEYCODE_W:
        return "w";
    case KeyEvent.KEYCODE_X:
        return "x";
    case KeyEvent.KEYCODE_Y:
        return "y";
    case KeyEvent.KEYCODE_Z:
        return "z";
    case KeyEvent.KEYCODE_DEL:
        return "{BKSP}";
    case KeyEvent.KEYCODE_ENTER:
    case KeyEvent.KEYCODE_DPAD_CENTER:
        return "{ENTER}";
    case KeyEvent.KEYCODE_SPACE:
        return " ";
    case KeyEvent.KEYCODE_DPAD_DOWN:
        return "{DOWN}";
    case KeyEvent.KEYCODE_DPAD_UP:
        return "{UP}";
    case KeyEvent.KEYCODE_DPAD_LEFT:
        return "{LEFT}";
    case KeyEvent.KEYCODE_DPAD_RIGHT:
        return "{RIGHT}";
    }/*  w w w.  jav  a 2 s.  c  o m*/
    return null;
}

From source file:Main.java

public static String getKeyNameByCode(int code) {
    switch (code) {
    case KeyEvent.KEYCODE_0:
        return "<0>";
    case KeyEvent.KEYCODE_1:
        return "<1>";
    case KeyEvent.KEYCODE_2:
        return "<2>";
    case KeyEvent.KEYCODE_3:
        return "<3>";
    case KeyEvent.KEYCODE_4:
        return "<4>";
    case KeyEvent.KEYCODE_5:
        return "<5>";
    case KeyEvent.KEYCODE_6:
        return "<6>";
    case KeyEvent.KEYCODE_7:
        return "<7>";
    case KeyEvent.KEYCODE_8:
        return "<8>";
    case KeyEvent.KEYCODE_9:
        return "<9>";
    case KeyEvent.KEYCODE_A:
        return "<A>";
    case KeyEvent.KEYCODE_B:
        return "<B>";
    case KeyEvent.KEYCODE_C:
        return "<C>";
    case KeyEvent.KEYCODE_D:
        return "<D>";
    case KeyEvent.KEYCODE_E:
        return "<E>";
    case KeyEvent.KEYCODE_F:
        return "<F>";
    case KeyEvent.KEYCODE_G:
        return "<G>";
    case KeyEvent.KEYCODE_H:
        return "<H>";
    case KeyEvent.KEYCODE_I:
        return "<I>";
    case KeyEvent.KEYCODE_J:
        return "<J>";
    case KeyEvent.KEYCODE_K:
        return "<K>";
    case KeyEvent.KEYCODE_L:
        return "<L>";
    case KeyEvent.KEYCODE_M:
        return "<M>";
    case KeyEvent.KEYCODE_N:
        return "<N>";
    case KeyEvent.KEYCODE_O:
        return "<O>";
    case KeyEvent.KEYCODE_P:
        return "<P>";
    case KeyEvent.KEYCODE_Q:
        return "<Q>";
    case KeyEvent.KEYCODE_R:
        return "<R>";
    case KeyEvent.KEYCODE_S:
        return "<S>";
    case KeyEvent.KEYCODE_T:
        return "<T>";
    case KeyEvent.KEYCODE_U:
        return "<U>";
    case KeyEvent.KEYCODE_V:
        return "<V>";
    case KeyEvent.KEYCODE_W:
        return "<W>";
    case KeyEvent.KEYCODE_X:
        return "<X>";
    case KeyEvent.KEYCODE_Y:
        return "<Y>";
    case KeyEvent.KEYCODE_Z:
        return "<Z>";
    case KeyEvent.KEYCODE_APOSTROPHE:
        return "<'>";
    case KeyEvent.KEYCODE_AT:
        return "<@>";
    case KeyEvent.KEYCODE_BACK:
        return "<Back>";
    case KeyEvent.KEYCODE_BACKSLASH:
        return "<\\>";
    case KeyEvent.KEYCODE_CALL:
        return "<Call>";
    case KeyEvent.KEYCODE_CAMERA:
        return "<Camera>";
    case KeyEvent.KEYCODE_CLEAR:
        return "<Clear>";
    case KeyEvent.KEYCODE_COMMA:
        return "<,>";
    case KeyEvent.KEYCODE_DEL:
        return "<Del>";
    case KeyEvent.KEYCODE_DPAD_CENTER:
        return "<PadCenter>";
    case KeyEvent.KEYCODE_DPAD_DOWN:
        return "<PadDown>";
    case KeyEvent.KEYCODE_DPAD_LEFT:
        return "<PadLeft>";
    case KeyEvent.KEYCODE_DPAD_RIGHT:
        return "<PadRight>";
    case KeyEvent.KEYCODE_DPAD_UP:
        return "<PadUp>";
    case KeyEvent.KEYCODE_ENDCALL:
        return "<EndCall>";
    case KeyEvent.KEYCODE_ENTER:
        return "<Enter>";
    case KeyEvent.KEYCODE_ENVELOPE:
        return "<Envelope>";
    case KeyEvent.KEYCODE_EQUALS:
        return "<=>";
    case KeyEvent.KEYCODE_EXPLORER:
        return "<Explorer>";
    case KeyEvent.KEYCODE_FOCUS:
        return "<??? 0>";
    case KeyEvent.KEYCODE_GRAVE:
        return "<??? 1>";
    case KeyEvent.KEYCODE_HEADSETHOOK:
        return "<??? 2>";
    case KeyEvent.KEYCODE_HOME:
        return "<Home>";
    case KeyEvent.KEYCODE_LEFT_BRACKET:
        return "<(>";
    case KeyEvent.KEYCODE_MENU:
        return "<Menu>";
    case KeyEvent.KEYCODE_MINUS:
        return "<->";
    case KeyEvent.KEYCODE_NOTIFICATION:
        return "<??? 3>";
    case KeyEvent.KEYCODE_NUM:
        return "<Num>";
    case KeyEvent.KEYCODE_PERIOD:
        return "<??? 4>";
    case KeyEvent.KEYCODE_PLUS:
        return "<+>";
    case KeyEvent.KEYCODE_POUND:
        return "<??? 5>";
    case KeyEvent.KEYCODE_POWER:
        return "<Power>";
    case KeyEvent.KEYCODE_RIGHT_BRACKET:
        return "<)>";
    case KeyEvent.KEYCODE_SEMICOLON:
        return "<;>";
    case KeyEvent.KEYCODE_SLASH:
        return "</>";
    case KeyEvent.KEYCODE_SOFT_LEFT:
        return "<??? 6>";
    case KeyEvent.KEYCODE_SOFT_RIGHT:
        return "<??? 7>";
    case KeyEvent.KEYCODE_SPACE:
        return "<Space>";
    case KeyEvent.KEYCODE_STAR:
        return "<*>";
    case KeyEvent.KEYCODE_SYM:
        return "<Sym>";
    case KeyEvent.KEYCODE_TAB:
        return "<Tab>";
    case KeyEvent.KEYCODE_VOLUME_DOWN:
        return "<VolumeDown>";
    case KeyEvent.KEYCODE_VOLUME_UP:
        return "<VolumeUp>";
    case KeyEvent.KEYCODE_UNKNOWN:
    default://w  w  w . j  a  v a2 s .  c o  m
        return "<Unknown>";
    }
}

From source file:com.entertailion.android.slideshow.utils.Utils.java

public static final char keyCodeToLetter(int keyCode) {
    return ALPHABET[keyCode - KeyEvent.KEYCODE_A];
}

From source file:org.brandroid.openmanager.fragments.DialogHandler.java

private static void fillShortcutsTable(TableLayout table) {
    final Context context = table.getContext();
    for (int sc : MenuUtils.getMenuShortcuts(context)) {
        TableRow tr = new TableRow(context);
        TextView tv1 = new TextView(context);
        tv1.setGravity(Gravity.RIGHT);/*from  w  w w. j a v  a  2 s .  c  o  m*/
        tv1.setPadding(20, 0, 20, 0);
        char scc = (char) (sc + ('a' - KeyEvent.KEYCODE_A));
        tv1.setText("" + scc);
        TextView tv2 = new TextView(context);
        MenuItem item = MenuUtils.getMenuShortcut(sc);
        tv2.setText(item.getTitle());
        tr.addView(tv1);
        tr.addView(tv2);
        table.addView(tr);
    }
}

From source file:research.sg.edu.edapp.kb.KbSoftKeyboard.java

/**
 * Use this to monitor key events being delivered to the application.
 * We get first crack at them, and can either resume them or let them
 * continue to the app./*  ww  w.ja  v  a 2 s . c  o  m*/
 */
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    String s = "" + event.getUnicodeChar();
    Log.d("CAME HERE", "CAME HERE");
    switch (keyCode) {
    case KeyEvent.KEYCODE_BACK:
        // The InputMethodService already takes care of the back
        // key for us, to dismiss the input method if it is shown.
        // However, our keyboard could be showing a pop-up window
        // that back should dismiss, so we first allow it to do that.

        if (event.getRepeatCount() == 0 && mInputView != null) {
            if (mInputView.handleBack()) {
                return true;
            }
        }
        break;

    case KeyEvent.KEYCODE_DEL:
        // Special handling of the delete key: if we currently are
        // composing text for the user, we want to modify that instead
        // of let the application to the delete itself.
        if (mComposing.length() > 0) {
            onKey(Keyboard.KEYCODE_DELETE, null);
            return true;
        }
        break;

    case KeyEvent.KEYCODE_ENTER:
        // Let the underlying text editor always handle these.
        return false;

    default:
        // For all other keys, if we want to do transformations on
        // text being entered with a hard keyboard, we need to process
        // it and do the appropriate action.

        if (PROCESS_HARD_KEYS) {
            //*********added changes here
            if (event.getAction() == KeyEvent.ACTION_DOWN) {
                swipe += (char) event.getUnicodeChar();
                Log.d("msg", swipe);
                System.out.println(swipe);
                // keyDownUp(keyCode);
                //   return true;
            }
            //*********done
            if (keyCode == KeyEvent.KEYCODE_SPACE && (event.getMetaState() & KeyEvent.META_ALT_ON) != 0) {
                // A silly example: in our input method, Alt+Space
                // is a shortcut for 'android' in lower case.
                InputConnection ic = getCurrentInputConnection();
                if (ic != null) {
                    // First, tell the editor that it is no longer in the
                    // shift state, since we are consuming this.
                    ic.clearMetaKeyStates(KeyEvent.META_ALT_ON);
                    keyDownUp(KeyEvent.KEYCODE_A);
                    keyDownUp(KeyEvent.KEYCODE_N);
                    keyDownUp(KeyEvent.KEYCODE_D);
                    keyDownUp(KeyEvent.KEYCODE_R);
                    keyDownUp(KeyEvent.KEYCODE_O);
                    keyDownUp(KeyEvent.KEYCODE_I);
                    keyDownUp(KeyEvent.KEYCODE_D);
                    // And we consume this event.
                    return true;
                }

            }

            if (mPredictionOn && translateKeyDown(keyCode, event)) {
                return true;
            }

        }
    }

    return super.onKeyDown(keyCode, event);
}

From source file:com.google.android.apps.mytracks.TrackListActivity.java

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    // T,B, Space are already mapped by BB on Q10!
    Intent intent;// www  .j  a  v  a2 s . c  o  m
    boolean isRecording = recordingTrackId != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT;
    switch (keyCode) {
    case KeyEvent.KEYCODE_SEARCH:
        if (ApiAdapterFactory.getApiAdapter().handleSearchKey(searchMenuItem)) {
            return true;
        }
        break;
    case KeyEvent.KEYCODE_H:
        // Help
        intent = IntentUtils.newIntent(TrackListActivity.this, HelpActivity.class);
        startActivity(intent);
        break;
    case KeyEvent.KEYCODE_N:
        if (!isRecording) {
            // Not recording -> Recording
            AnalyticsUtils.sendPageViews(TrackListActivity.this, "/action/record_track");
            startGps = false;
            handleStartGps();
            updateMenuItems(true);
            startRecording();
        }
        break;
    case KeyEvent.KEYCODE_P:
        if (isRecording) {
            if (recordingTrackPaused) {
                // Paused -> Resume
                AnalyticsUtils.sendPageViews(TrackListActivity.this, "/action/resume_track");
                updateMenuItems(true);
                TrackRecordingServiceConnectionUtils.resumeTrack(trackRecordingServiceConnection);
                trackController.update(true, false);
            } else {
                // Recording -> Paused
                AnalyticsUtils.sendPageViews(TrackListActivity.this, "/action/pause_track");
                updateMenuItems(true);
                TrackRecordingServiceConnectionUtils.pauseTrack(trackRecordingServiceConnection);
                trackController.update(true, true);
            }
        } else {
            Toast.makeText(getApplicationContext(), "Cannot pause track that is not recorded.",
                    Toast.LENGTH_LONG).show();
        }
        break;
    case KeyEvent.KEYCODE_S:
        if (isRecording) {

            // Stop Recording
            updateMenuItems(false);
            TrackRecordingServiceConnectionUtils.stopRecording(TrackListActivity.this,
                    trackRecordingServiceConnection, true);
        } else {
            // Search
            ApiAdapterFactory.getApiAdapter().handleSearchMenuSelection(this);
        }
        break;
    case KeyEvent.KEYCODE_A:
        intent = IntentUtils.newIntent(this, SettingsActivity.class);
        startActivity(intent);
        break;

    }

    return super.onKeyUp(keyCode, event);
}

From source file:nl.sogeti.android.gpstracker.viewer.LoggerMap.java

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    boolean propagate = true;
    switch (keyCode) {
    case KeyEvent.KEYCODE_T:
        propagate = this.mMapView.getController().zoomIn();
        break;/*from  www  .j ava2  s .  c  om*/
    case KeyEvent.KEYCODE_G:
        propagate = this.mMapView.getController().zoomOut();
        break;
    case KeyEvent.KEYCODE_S:
        setSatelliteOverlay(!this.mMapView.isSatellite());
        propagate = false;
        break;
    case KeyEvent.KEYCODE_A:
        setTrafficOverlay(!this.mMapView.isTraffic());
        propagate = false;
        break;
    case KeyEvent.KEYCODE_F:
        mAverageSpeed = 0.0;
        moveToTrack(this.mTrackId - 1, true);
        propagate = false;
        break;
    case KeyEvent.KEYCODE_H:
        mAverageSpeed = 0.0;
        moveToTrack(this.mTrackId + 1, true);
        propagate = false;
        break;
    default:
        propagate = super.onKeyDown(keyCode, event);
        break;
    }
    return propagate;
}

From source file:com.google.android.apps.mytracks.TrackDetailActivity.java

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    switch (keyCode) {
    case KeyEvent.KEYCODE_M:
        if (trackId == recordingTrackId) {
            // Recording
            insertMarkerAction();//from www  .  j a  v  a  2  s . c o m
        }
        break;
    case KeyEvent.KEYCODE_H:
        if (tabHost.getCurrentTab() == 1) {
            ChartFragment f = (ChartFragment) tabManager.getCurrentFragment();
            f.scrollLeft();
        }
        break;
    case KeyEvent.KEYCODE_K:
        if (tabHost.getCurrentTab() == 1) {
            ChartFragment f = (ChartFragment) tabManager.getCurrentFragment();
            f.scrollRight();
        }
        break;
    case KeyEvent.KEYCODE_0:
        if (tabHost.getCurrentTab() == 2) {
            MapFragment f = (MapFragment) tabManager.getCurrentFragment();
            f.showMyLocation();
        }
        break;

    case KeyEvent.KEYCODE_Q:
        tabHost.setCurrentTab(0);
        break;

    case KeyEvent.KEYCODE_SPACE:
        if ((tabHost.getCurrentTab() == 1)
                && PreferencesUtils.getBoolean(this, R.string.settings_mapsprovider, true)) {
            // Use nogago Maps
        } else {
            tabHost.setCurrentTab(tabHost.getCurrentTab() + 1);
        }
        break;

    case KeyEvent.KEYCODE_I:
    case KeyEvent.KEYCODE_VOLUME_DOWN:
        if (tabHost.getCurrentTab() == 0) {
            Toast.makeText(getApplicationContext(), "Cannot zoom in on statistics", Toast.LENGTH_SHORT).show();
        } else if (tabHost.getCurrentTab() == 1) {
            ChartFragment f = (ChartFragment) tabManager.getCurrentFragment();
            f.zoomIn();
            // Toast.makeText(getApplicationContext(), "Currently at " +
            // f.getClass().toString(), Toast.LENGTH_SHORT).show();
        } else if (tabHost.getCurrentTab() == 2) {
            MapFragment f = (MapFragment) tabManager.getCurrentFragment();
            f.zoomIn();
            // Toast.makeText(getApplicationContext(), "Currently at " +
            // f.getClass().toString(), Toast.LENGTH_SHORT).show();
        }
        break;
    case KeyEvent.KEYCODE_O:
    case KeyEvent.KEYCODE_VOLUME_UP:
        if (tabHost.getCurrentTab() == 0) {
            Toast.makeText(getApplicationContext(), "Cannot zoom in on statistics", Toast.LENGTH_SHORT).show();
        } else if (tabHost.getCurrentTab() == 1) {
            ChartFragment f = (ChartFragment) tabManager.getCurrentFragment();
            f.zoomOut();
            // Toast.makeText(getApplicationContext(), "Currently at " +
            // f.getClass().toString(), Toast.LENGTH_SHORT).show();
        } else if (tabHost.getCurrentTab() == 2) {
            MapFragment f = (MapFragment) tabManager.getCurrentFragment();
            f.zoomOut();
            // Toast.makeText(getApplicationContext(), "Currently at " +
            // f.getClass().toString(), Toast.LENGTH_SHORT).show();
        }
        break;
    case KeyEvent.KEYCODE_P:
        if (recordingTrackId != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT) {
            if (recordingTrackPaused) {
                // Paused -> Resume
                Toast.makeText(getApplicationContext(), "Resumed Recording", Toast.LENGTH_LONG).show();
                AnalyticsUtils.sendPageViews(TrackDetailActivity.this, "/action/detail/resume_track");
                updateMenuItems(true, false);
                TrackRecordingServiceConnectionUtils.resumeTrack(trackRecordingServiceConnection);
                trackController.update(true, false);
            } else {
                // Recording -> Paused
                Toast.makeText(getApplicationContext(), "Paused Recording", Toast.LENGTH_LONG).show();
                AnalyticsUtils.sendPageViews(TrackDetailActivity.this, "/action/detail/pause_track");
                updateMenuItems(true, true);
                TrackRecordingServiceConnectionUtils.pauseTrack(trackRecordingServiceConnection);
                trackController.update(true, true);
            }
        } else {
            Toast.makeText(getApplicationContext(), "Cannot pause track that is not recorded.",
                    Toast.LENGTH_LONG).show();
        }
        break;

    case KeyEvent.KEYCODE_S:
        AnalyticsUtils.sendPageViews(TrackDetailActivity.this, "/action/detail/stop_recording");
        updateMenuItems(false, true);
        TrackRecordingServiceConnectionUtils.stopRecording(TrackDetailActivity.this,
                trackRecordingServiceConnection, true);
        break;

    case KeyEvent.KEYCODE_A:
        Intent intent = IntentUtils.newIntent(this, SettingsActivity.class);
        startActivity(intent);
        break;

    }

    return super.onKeyUp(keyCode, event);
}