Permitir entrada desde el teclado bluetooth incluso si la pantalla está bloqueada

Estoy desarrollando una aplicación que permite al usuario escanear códigos de barras utilizando un escáner de código de barras externo conectado mediante bluetooth. El escáner de código de barras actúa como un teclado, es decir, Android piensa que los códigos de barras escaneados se han escrito en un teclado.

La aplicación está funcionando bien, ya que es, siempre y cuando la pantalla permanece encendida.

Una vez que la pantalla se apaga, puedo seguir escaneando códigos de barras, pero el texto escaneado no llega a la aplicación, sino que invoca acciones en la pantalla de bloqueo.

¿Hay una manera de permitir la entrada de un teclado externo a la aplicación, aunque la pantalla se ha desactivado?

Como alternativa tendré que forzar la pantalla para permanecer encendida, pero esto no es a prueba de balas, ya que el usuario podría accidentalmente bloquear la pantalla.

ACTUALIZAR

He dado un pequeño paso en la dirección correcta usando:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); 

Esto mostrará la aplicación sin la pantalla de bloqueo (no seguro) cuando se procesa una nueva entrada del teclado. Desafortunadamente, falta la primera letra. Esto tiene que ser causado por la primera letra que despierta la pantalla y el resto de la entrada que alcanza realmente el EditText .

Esto funciona para mí en una situación similar. Simplemente mantén la pantalla encendida mientras tu aplicación está en primer plano.

 getWindow().addFlags( WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON ); 

Si sólo está perdiendo el primer número, entonces usted puede … recuperar que mediante el dígito de control .

Sé que es un hack pero debe resolver este problema.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.