validar usar teclado tecla programacion keytyped eventos entre diferencia como java android keyboard android-input-method key-events

java - usar - Android-Presiona la tecla del teclado



tecla enter en java netbeans (4)

Con la insinuación de vasart puedo obtener el evento KeyPress. Para hacer que el código de clave sea ​​imprimible, he utilizado la función getUnicodeChar y le he pasado el estado del botón meta y luego solo un personaje ha resuelto el problema.

Este es el código de trabajo :

@Override public boolean dispatchKeyEvent(KeyEvent KEvent) { int keyaction = KEvent.getAction(); if(keyaction == KeyEvent.ACTION_DOWN) { int keycode = KEvent.getKeyCode(); int keyunicode = KEvent.getUnicodeChar(KEvent.getMetaState() ); char character = (char) keyunicode; System.out.println("DEBUG MESSAGE KEY=" + character + " KEYCODE=" + keycode); } return super.dispatchKeyEvent(KEvent); }

Por supuesto esto funciona solo con carácter ASCII.

Quiero coger la pulsación de cualquier tecla del softkeyboard. No quiero un EditView o TextView en mi actividad, el evento debe manejarse desde una vista extendida dentro de mi actividad.

Acabo de intentar esto:

1) Anular el método de actividad onKeyUp(int keyCode, KeyEvent event) . Esto no funciona con el softkeybord, solo atrapa pocos hardkeyboard.

2) Cree mi OnKeyListener y regístrelo en mi vista que contiene un OnTouchListener registrado y en funcionamiento. Esto no funciona en absoluto con softkeyboar.

3) onKeyUp(int keyCode, KeyEvent event) el onKeyUp(int keyCode, KeyEvent event) . Esto no funciona en absoluto ni siquiera si configuro mi OnKeyListener ni si no lo configuro.

4) Con el objeto InputMethodManager Llame al método showSoftInput y pasándolo a mi vista. Esto no funciona ni para levantar el teclado, de hecho tengo que llamar a toggleSoftInput ; Ni para atrapar los eventos clave.

He probado todo solo en el emulador pero creo que es suficiente. ¿Por qué es tan complicado tomar un simple evento clave desde un teclado?


Cuando el teclado se abre en actividad, su actividad se convierte en primer plano ... Todos los TextArea o TextFields tienen su propio mecanismo para presionar las teclas desde el teclado de la pantalla ... si desea usar onKeyDown () listner para el teclado virtual, asegúrese de configurar en AndroidManifest Archivo en tu actividad android: windowSoftInputMode = "stateAlwaysVisible" entonces onkeyDown () funcionará, funcionó para mí ...


Intente usar dispatchKeyEvent(KeyEvent event) en su Activity

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


No hay ninguna opción para manejar eventos de pulsación de tecla en el teclado virtual (un teclado en pantalla) solo desde un teclado de hardware.

Para más detalles: Manejo de acciones de teclado.