La configuración del teclado en el emulador se revierte al reiniciar

Mi emulador de Android 2.3.3 tiene cuatro teclados diferentes:

  1. Teclado japonés
  2. teclado chino
  3. teclado Android
  4. Ejemplo de teclado virtual

Los desmarco todos para poder usar el teclado de hardware. Después de unos segundos, da un mensaje de error diciendo que el proceso com.android.inputmethod.latinno responde, con un Force Closebotón. ¡Además, cierro y reinicio mi emulador para encontrar todos los teclados marcados!

La razón por la que quiero que todo esté desmarcado es la siguiente:

Cuando hago clic con el cursor en una posición en la que quiero insertar texto (al menos en Whatsapp, me enfrento a este problema), el cursor permanece allí durante 3 a 10 segundos (!!) y luego aparece el teclado en la pantalla y el cursor vuelve a donde estaba! Este no es el caso cuando todos los teclados en pantalla están deshabilitados.

¿Cómo hago que la configuración de desactivación del teclado sea permanente?

ACTUALIZACIÓN: Esto estaba más allá de mi imaginación y muy molesto. ¡Los métodos de entrada que no sean el teclado virtual están de regreso e incluso habilitados una vez que reinicié el emulador! ¿Por qué el SDK simplemente se niega a conservar la configuración?

Respuestas (1)

HECHO: Hice una copia de seguridad de todo el contenido de mi antiguo emulador, creé un nuevo emulador usando

android create avd -t <TargetID> -n <EmulatorName> -a --abi <CPU/ABI-Used>

Para ayudar a encontrar el valor correcto <TargetID>y los valores admisibles <CPU/ABI-Used>correspondientes al mismo según su elección del nivel de API, utilicé

android list targets

Luego encontrará que la opción Instantánea está disponible cuando edita el mismo AVD desde el Administrador de dispositivos virtuales de Android. Así que revisa la instantánea. Y cuando inicie, asegúrese de haber marcado las opciones "Iniciar desde instantánea" y "Guardar en instantánea". Ahora use los rmcomandos en adb shellpara eliminar los IME. (Aclararé pronto cómo se hace eso) Cierra y la próxima vez que lo abres a través de un emulatorcomando, se carga desde la instantánea y se logra la permanencia de la configuración de IME (o cualquier configuración del sistema).

(PD: solo cuando cambie la configuración del hardware necesitará reiniciar, en cuyo caso no puede iniciar desde la instantánea ya que se guardó para una configuración de hardware diferente).

Como indica la pregunta, todo lo que quiero es que mi teclado de hardware esté activo y realmente no me importan los 4 métodos de entrada allí. Nunca se me ocurrió que simplemente podría eliminar todos los IME: así es como se hace:

Monte la /systemcarpeta. Recupere los nombres de apk de los IME ingresando /system/appy mostrando su contenido:

aneesh@nb-14:~$ adb shell mount -rw -o remount /dev/block/mtdblock0 /system
aneesh@nb-14:~$ adb shell
# cd /system/app
# ls
Phone.apk
Development.apk
Email.apk
Calculator.apk
...
..
etc.

A continuación, solo haz

rm <IMEapkname>.apk

Por ejemplo, en el caso del IME japonés, se ejecuta

rm /system/app/PinyinIME.apk

Dado que este truco, para mí, no funcionó hasta ahora para el teclado virtual de muestra:

Salí del shell adb e hice:

adb uninstall com.example.android.softkeyboard

ACTUALIZACIÓN: una vez que se asegure de que la instantánea se guardó correctamente (intente iniciar desde la instantánea a través de la terminal/Administrador de AVD, no debe producir errores) y no desea realizar más cambios en las aplicaciones del sistema o configuraciones de hardware, inicie el emulador con la -no-snapshot-saveopción:

emulator -no-snapshot-save -avd Andreud

para que pueda iniciar desde la instantánea como antes y evitar las aberraciones que ocurren al guardar en la instantánea (para que no produzca un error que diga que se guardó para una configuración de hardware diferente). Además, puede ahorrar algunos segundos valiosos que se necesitan para guardar la instantánea. ¡Así que de esta manera tu experiencia general con el emulador de Android mejora!