è possibile gestire gli eventi chiave da una vista o in generale per tutta la vostra applicazione:
maniglia OnKey da un Vista:
public boolean onKey(View v, int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_ENTER:
/* This is a sample for handling the Enter button */
return true;
}
return false;
}
Ricordati di implementare OnKeyListener e per impostare il vostro ascoltatore YourView.setOnKeyListener(this);
La seconda possibilità potrebbe essere:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_MENU:
/* Sample for handling the Menu button globally */
return true;
}
return false;
}
Puoi anche dare un'occhiata a onKeyUp
.
risorse: http://developer.android.com/reference/android/view/View.html
E qui potete vedere una lista con tutti i KeyEvents
fonte
2010-02-14 17:34:43
Si noti che questo non funziona per tutte le chiavi. HOME sicuramente non può essere catturato in questo modo, e END_CALL potrebbe non esserlo - me ne dimentico. Inoltre, se si desidera intercettare il pulsante INDIETRO, è meglio implementare suBackPressed() nei nuovi SDK Android, sebbene ciò non funzioni su telefoni meno recenti. – CommonsWare
END_CALL inoltre non può essere intercettato dall'app. Nota anche che il poster originale sembra voler intercettare le chiavi prima che vengano consegnate a un'altra app, che non è possibile per nessuna chiave. – hackbod
Inoltre, non è che il pulsante END_CALL dell'hardware non esiste nemmeno su alcuni telefoni, come il Motorola Droid e il Nexus One, quindi fare qualcosa di speciale con questo pulsante probabilmente non è una grande idea. –