Android: ¿cómo obtener algún evento de KeyPress con ejemplo?

Quiero obtener el valor clave cuando el usuario presiona cualquier tecla y también realizar la acción basada en la tecla presionada en android.

Por ejemplo, si el usuario pulsó la tecla "A", entonces quiero obtener ese valor, comparar, hacer algo.

La respuesta a esta pregunta debe ser doble. Se determina por la forma en que se generó la clave. Si se pulsa la tecla de hardware, ambos métodos descritos a continuación son válidos. Si se pulsa en la tecla de software, entonces depende del contexto real.

1.) Si la tecla era el resultado de presionar en el teclado suave que se obtuvo presionando largo sobre la tecla Menú:

Debe anular cuidadosamente la siguiente función:

@Override public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_A: { //your Action code return true; } } return super.onKeyDown(keyCode, event); } 

2.) Si su actividad contiene EditText y softkeyboard se obtuvo de él, entonces el primer enfoque no funciona porque el evento clave ya se consumió por EditText. Necesita usar el texto modificado Listener:

 mMyEditText.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable s) { } public void beforeTextChanged(CharSequence s, int start, int count, int after) { /*This method is called to notify you that, within s, the count characters beginning at start are about to be replaced by new text with length after. It is an error to attempt to make changes to s from this callback.*/ } public void onTextChanged(CharSequence s, int start, int before, int count) { } ); 

El código de Zelimir funciona si su versión de ssoo es hasta 2.3 Si usted tiene este código funcionando en 2.3 no funcionará en absoluto, la manera de controlar las llaves del acontecimiento en toda la versión del ssoo está con el dispatchKeyEvent ()

 @Override public boolean dispatchKeyEvent(KeyEvent event) { Log.d("hello", String.valueOf(event.getKeyCode())); return super.dispatchKeyEvent(event); } 

Con esto, puede controlar la tecla pulsada en una vista web o donde quiera que se encuentre. El único error es que no se puede controlar el "botón de acción" … no sé por qué.

Pruebe esto, esto funciona perfectamente bien.

 @Override public boolean onKeyUp (int keyCode, KeyEvent event){ char c = (char) event.getUnicodeChar(); //Do something.... return super.onKeyUp(keyCode, event); } 
  • Escucha los cambios de volumen en Android
  • Mejor manera de manejar eventos en Android
  • Interacción de ExpandableListAdapter.getChildView () con AbsListView.LayoutParams
  • Cómo detectar un evento TOUCH con otro dedo mientras un ACTION_MOVE está en proceso
  • Android: no puede ver ACTION_MOVE / UP en onTouchEvent de un RelativeLayout
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.