java - Cambiar el idioma de entrada del teclado mediante programación
android keyboard (2)
Estoy desarrollando una aplicación en la que necesito permitir que el usuario cambie las teclas de entrada que se muestran en el teclado predeterminado, a pedido o por defecto, por ejemplo, puedo pedirle al usuario al principio que seleccione el idioma predeterminado y después de eso, cada vez que se usa el teclado predeterminado, la aplicación siempre muestra las teclas del teclado, el idioma seleccionado,
Sé que esto es posible, porque en la aplicación de teclado predeterminada, cuando se seleccionan varios métodos de entrada, presionar prolongadamente la barra espaciadora permite cambiar los métodos de entrada en tiempo de ejecución, si esto es posible, entonces mi requisito también es posible ...
No quiero solicitar un teclado predeterminado como el siguiente:
InputMethodManager imeManager = (InputMethodManager) getApplicationContext().getSystemService(INPUT_METHOD_SERVICE);
imeManager.showInputMethodPicker();
No quiero cambiar la configuración regional y reiniciar mi actividad todo el tiempo como:
Resources res = getBaseContext().getResources();
// Change locale settings in the app.
DisplayMetrics dm = res.getDisplayMetrics();
android.content.res.Configuration conf = res.getConfiguration();
conf.locale = new Locale("ru".toLowerCase());
res.updateConfiguration(conf, dm);
Log.i("inside onStart","after ever");
setContentView(R.layout.activity_main);
Solo quiero mostrar la entrada del teclado en mi idioma deseado.
Después de investigar un poco aquí y allá, encontramos la respuesta, antes que nada, debe crear una Vista de teclado personalizada que extienda la Vista de teclado y en ella crear una variable de valor de clave estática como
static final int KEYCODE_LANGUAGE_SWITCH_ENG = -102;
static final int KEYCODE_LANGUAGE_SWITCH_URDU = -103;
después de eso en su clase IME donde ha implementado inputMethodService, cree los teclados dentro de la función de anulación onInitializeInterface. me gusta
mSymbolsKeyboard = new Keyboard(this, R.xml.qwerty2);
mEngQwertyKeyboard = new Keyboard(this, R.xml.eng_qwerty);
después de esto, agregue estas teclas estáticas finales en la función de anulación de onKey como casos de cambio, y en los casos configure los teclados en consecuencia:
setKeyboard(mEngQwertyKeyboard);
Puede cambiar el teclado solo sin notificación del usuario y solo si su aplicación se está ejecutando como una aplicación del Sistema por razones de seguridad.
Primero debe otorgar permiso a Android en el AndroidManifest.xml de su aplicación
"android.permission.WRITE_SECURE_SETTINGS"
Luego debe determinar la identificación de su teclado.
-> Para conocer la identificación, debe mantener el teclado predeterminado del menú de configuración manualmente y luego colocar esta impresión en algún lugar,
System.out.println(Settings.Secure.getString(getContentResolver(),Settings.Secure.DEFAULT_INPUT_METHOD));
Una vez que imprime la identificación y conoce la identificación de su teclado, puede hacer lo que se indica a continuación (he cambiado mi teclado predeterminado a japonés)
InputMethodManager imeManager = (InputMethodManager) getApplicationContext().getSystemService(INPUT_METHOD_SERVICE);
//imeManager.showInputMethodPicker(); //This is to see available keyboards.
imeManager.setInputMethod(null,"jp.co.omronsoft.openwnn/.OpenWnnJAJP");
Disfruta !!