El emulador de Android no toma entrada de teclado - SDK tools rev 20

324

He actualizado las herramientas del SDK a la revisión 20 (de 18) y desde la actualización, el emulador no parece aceptar la entrada del teclado de la computadora portátil. Pero solo usando el teclado 'soft' propio del emulador (que aparece cuando se enfoca un campo de entrada).

He intentado reinstalar las herramientas del SDK (y todo el SDK para el caso), desinstalé y reinstalé los complementos de Android Eclipse, recreé los dispositivos emuladores. Pero nada de eso parece ayudar y me está volviendo loco. Es imposible ingresar usando el trackpad de una computadora portátil.

¿Alguien ha encontrado este problema?

epsilonpsi
fuente
Un efecto secundario de esto parece ser que el botón de búsqueda en el emulador tampoco parece funcionar. Afortunadamente, la misma solución para el teclado también corrige el botón de búsqueda.
bmaupin
También descubrí que para algunas aplicaciones tenía que ir a Extended Controls-> Send keyboard shortcuts to->s/Emulator controls (default)/Virtual device/
snapfractalpop el

Respuestas:

468

Actualizar

A partir del SDK rev 21, el Administrador de dispositivo virtual de Android tiene una interfaz de usuario mejorada que resuelve este problema. He destacado algunos de los ajustes de configuración más importantes a continuación:

ingrese la descripción de la imagen aquí

Si nota que el blando (screen-based) teclas principales Back, Homeetc. faltan de su emulador puede configurar hw.mainKeys=nopara que puedan.

ingrese la descripción de la imagen aquí

Respuesta original

Aunque la documentación del desarrollador dice que la compatibilidad con el teclado está habilitada por defecto, no parece ser así en SDK rev 20. ¡Habilité explícitamente la compatibilidad con el teclado en el archivo config.ini de mi emulador y funcionó!

Añadir: hw.keyboard=yes

A: ~/.android/avd/<emulator-device-name>.avd/config.ini

Del mismo modo, agregue hw.dPad=yessi desea utilizar las teclas de flecha para navegar por la lista de aplicaciones.

Referencia: http://developer.android.com/tools/devices/managing-avds-cmdline.html#hardwareopts

En Mac OS y Linux puede editar todas las configuraciones de su emulador con un comando de Terminal:

for f in ~/.android/avd/*.avd/config.ini; do echo 'hw.keyboard=yes' >> "$f"; done


En una nota relacionada, si a su emulador de tableta le faltan los botones ATRÁS / INICIO, intente seleccionar WXGA800 como la máscara incorporada en el editor AVD: ingrese la descripción de la imagen aquí

O configurando manualmente el skin en config.ini:

skin.name=WXGA800
skin.path=platforms/android-16/skins/WXGA800

(ejemplo es para API 16)

James Wald
fuente
1
Como se mencionó en las otras respuestas, también puede usar la herramienta AVD Manager, pero he experimentado errores que evitan que guarde los cambios de configuración.
James Wald
¿Hay alguna configuración global que afectará a todos mis AVD existentes? No quiero cambiar alrededor de 20 avd existentes.
Hoang Tran
@HoangTran No hay una configuración global, sin embargo, si está utilizando Mac OS, puede usar el comando Terminal que agregué a la respuesta para editar todos los AVD existentes a la vez.
James Wald
Lamentablemente, esta solución no funcionó para mí. Después de ejecutar el comando, el teclado todavía no funciona en mi avd.
Justin
1
La edición del archivo de configuración funcionó para mí, pero extrañamente no veo la interfaz de usuario que se muestra en la imagen, a pesar de tener la versión 21 del SDK.
offby1
112

Confirmado. Tuve el mismo problema después de actualizar a Herramientas versión 20. Tuve que editar el AVD para agregar una opción de la siguiente manera:

  1. Desde Eclipse, vaya a AVD Mananger.
  2. Seleccione el AVD particular y haga clic en Editar
  3. Vaya a la sección Hardware, haga clic en Nuevo.
  4. Seleccione el nombre de la propiedad: Soporte de teclado
  5. Por defecto, se agrega con un valor de 'no'. Simplemente haga clic en la columna de valor y cámbiela a 'sí'.
  6. Haga clic en Editar AVD nuevamente.

Esto agregará una propiedad hw.keyboard = yes en el archivo config.ini para el AVD.

También debe configurar hw.mainKeys = yes

Romin
fuente
19
¡Asegúrese de que la columna de valor pierda el foco antes de hacer clic en Editar AVD o el cambio a 'sí' no se guardará!
Trepatroncos
1
Hola, seguí las instrucciones anteriores, pero aún no puedo insertar ningún texto usando el teclado de mi PC. Cuando hago doble clic en el AVD que aparece en el Administrador de AVD, encuentro que la edición es exitosa, ya que indica hw.keyboard: sí. ¿¿¿Me estoy perdiendo de algo???
JibW
3
Sugiero lo siguiente: elimine el AVD y cree un AVD completamente nuevo con el soporte del teclado.
Romin
59

En Android Studio, abra el Administrador de AVD (Herramientas> Android> Administrador de AVD). Toque el botón Editar del emulador: ingrese la descripción de la imagen aquí

Seleccione "Mostrar configuración avanzada" ingrese la descripción de la imagen aquí

Marque "Habilitar entrada de teclado" ingrese la descripción de la imagen aquí

Haga clic en Finalizar e inicie el emulador para disfrutar de la entrada del teclado.

Hong
fuente
Funcionó para mí después de la configuración de entrada del teclado enablinh, pero me preguntaba cómo dejó de funcionar por sí solo en primer lugar.
Justcurious
3
Es tan frustrante que esta casilla de verificación se desmarca después de cada actualización del emulador :(
Misha Akopov
2
En mi caso, el teclado estaba habilitado, pero no funcionaba en el emulador. La solución es deshabilitar el teclado, iniciar el emulador, finalizar el emulador, habilitar el teclado.
Beroal
15

Mire en AVD Manager, seleccione el AVD y haga clic en Editar. En la sección Hardware: haga clic en "Nuevo" y busque "Soporte de teclado" y agregue con el botón Aceptar y establezca el valor en "sí" y guarde los cambios con "Editar AVD"

Joel Peláez
fuente
Lo extraño es que, cuando configuro este valor en sí, fuerza el valor de nuevo a no, de todos modos volverá a probar con un nuevo dispositivo
epsilonpsi
Preferí esta respuesta. Usar el administrador AVD es una solución más memorable que cambiar el archivo config.ini.
Seth
10

Google quería dar más dolor de cabeza a los desarrolladores.

Entonces, lo que tiene que hacer ahora es editar su AVD y agregar "Soporte de teclado" en la sección Hardware y cambiar el valor a "Sí"

Vincy
fuente
1
No funcionó para mí, el valor de soporte de teclado avd de "sí" no permanece guardado, sigue volviendo a "no".
Justin
En realidad Google quería mejorar las cosas. La mayoría de los dispositivos ahora no tienen teclados de hardware, por lo que el valor predeterminado debería ser ninguno / deshabilitado. Sí, es más fácil trabajar con el emulador con uno, pero eso no refleja las condiciones del mundo real. La forma correcta es hacer que los desarrolladores lo habiliten específicamente.
Charlie Collins
4

En su carpeta de inicio /.android/avd//config.ini agregue la línea hw.keyboard = yes

Amit Yaron
fuente
2

Por si alguien lo encuentra útil.

Tuve un problema con KEYCODE_DPAD_UP , pertenece al trackBall. para resolver este cambio, avdfolder / config.ini hw.trackBall = yes y presione DEL o F6

PbxMan
fuente
2

Reiniciar el emulador ayuda a veces cuando la escritura no está disponible, a pesar de que la entrada de teclado está habilitada para su dispositivo virtual Android.

Zon
fuente
0

Busque la carpeta .android oculta en la carpeta de inicio de su usuario. Puede cambiar el nombre o eliminar esta carpeta, volver a crear su AVD y reiniciar el emulador. Podría ser que haya un archivo .ini en esa carpeta que tenga esa configuración modificada.

Eric Cloninger
fuente
sí, también eliminé los archivos .android y avd ... aunque no ayudó. gracias por la entrada
epsilonpsi
0

Volver a crear un AVD con el teclado de hardware + establecer el valor booleano en verdadero fue la única solución que me funcionó; las otras dos soluciones principales (terminal o edición de un AVD existente a través de GUI) resultaron en fallas de software / emulador en mi Mac. Hacer un nuevo AVD dio como resultado que el teclado funcionara bien.

Davek804
fuente
0

Aquí hay una solución que realmente funcionó para mí, es la misma solución que en la respuesta más popular: solo agregue hw.keyboard = yes a config.ini, pero como esto no funcionó para mí, adicionalmente

  1. renombrado config.ini (cualquier nombre servirá) a algo como consssssfig.ini
  2. emulador reiniciado (obviamente no comenzó)
  3. renombrado config.ini de nuevo
  4. (No estoy seguro si es relevante) Agregué este nuevo parámetro (hw.keyboard = yes) al comienzo del archivo config.ini
Witold
fuente