android - tactil - Cómo deshabilitar el teclado físico en el código(use el teclado virtual todo el tiempo)
desactivar teclado en pantalla windows 7 (5)
Usted podría preguntar por qué quiero eso. Aquí está la razón:
Utilicé un escáner de código de barras para la pantalla de inicio de sesión de mi aplicación. Sin embargo, conectar el escáner de código de barras forzará a mi tableta a usar el teclado físico (piensa que el escáner es el teclado) y eso evita que el teclado virtual se abra (lo que quiero para algunas otras pantallas). Tengo que hacer clic manualmente en la barra del sistema para deshabilitar el teclado físico para que aparezca el teclado virtual.
Entonces, ¿hay alguna forma de desactivar el teclado físico en el código o hacer que el teclado virtual aparezca incluso si hay algún "teclado" conectado?
Creo que puede especificar en su archivo de manifiesto para usar en softinputmode y manejar un cambio de configuración para teclado | keyboard_hidden
Esto parece tener alguna revelación para su caso. De la documentación de la clase de Configuration .
public int hardKeyboardHidden --- Agregado en el nivel API 3
Una bandera que indica si el teclado duro ha sido escondido. Esto se configurará en un dispositivo con un mecanismo para ocultar el teclado al usuario, cuando ese mecanismo esté cerrado. Uno de: HARDKEYBOARDHIDDEN_NO, HARDKEYBOARDHIDDEN_YES.
Puede tomar alguna acción en este cambio de configuración. Pero creo que no hay manera de deshabilitar el teclado físico en Android.
Actualizar
There mHardKeyboardSwitch
es un miembro privado que tiene una referencia a SwitchView
que se usa para reflejar las preferencias de teclado del hardware del usuario. No se puede usar para deshabilitar el teclado de hardware porque no se puede acceder fuera de esa clase.
Intenta lo siguiente
Settings
> Language & Input
> Bajo el Keyboard and input methods
haga clic en Default
. ¿Hay una opción para desmarcar o deshabilitar Hardware / Teclado físico?
Es contra intuitivo, pero después de hacer eso, puedo usar un teclado físico y el teclado virtual en mi dispositivo (Android 4.2)
Puedes modificar y reconstruir AFS. Abra WindowManagerService.java que se encuentra en mydroid / frameworks / base / services / java / com / android / server / wm
Encuentra líneas como esta:
if (hardKeyboardAvailable != mHardKeyboardAvailable) {
mHardKeyboardAvailable = hardKeyboardAvailable;
mHardKeyboardEnabled = hardKeyboardAvailable;
mH.removeMessages(H.REPORT_HARD_KEYBOARD_STATUS_CHANGE);
mH.sendEmptyMessage(H.REPORT_HARD_KEYBOARD_STATUS_CHANGE);
}
Y reemplace 3 líneas a mHardKeyboardEnabled = false;
Sí, el escáner de código de barras se detecta como un teclado físico. Cuando se conecta un teclado al dispositivo, el teclado virtual está desactivado de manera predeterminada. Para habilitarlo, necesitamos desactivar el teclado de hardware a través de:
Ajustes> Idioma y entrada> Seleccionar método de entrada
El nombre de la opción puede diferir de un dispositivo a otro. Podremos usar el escáner junto con el teclado suave aunque lo apagemos.
Y NO, no hay forma actualmente de lograr esto mediante programación. Lo más que podemos hacer es detectar cuando un escáner / teclado está conectado y redirigir al usuario a la ventana de selección del Método de entrada, al anular el método onConfigurationChanged
esta manera:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if(newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO) {
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE))
.showInputMethodPicker();
Toast.makeText(this, "Barcode Scanner detected. Please turn OFF Hardware/Physical keyboard to enable softkeyboard to function.", Toast.LENGTH_LONG).show();
}
}