O emulador do Android não aceita entrada do teclado - SDK tools rev 20

324

Atualizei as ferramentas do SDK para a revisão 20 (de 18) e, desde a atualização, o emulador parece não aceitar a entrada do teclado do laptop. Mas apenas usando o teclado 'soft' do emulador (que aparece quando um campo de entrada é focado).

Tentei reinstalar as ferramentas do SDK (e todo o SDK), desinstalar e reinstalar os plug-ins do Eclipse Android, recriar dispositivos emuladores. Mas nada disso parece ajudar e está me deixando louco. É inútil digitar usando o trackpad de um laptop.

Alguém já encontrou este problema?

epsilonpsi
fonte
Um efeito colateral disso parece ser que o botão de pesquisa no emulador também não parece funcionar. Felizmente, a mesma correção para o teclado também corrige o botão de pesquisa.
bmaupin
Descobri também que, para alguns aplicativos que eu tinha que ir para Extended Controls-> Send keyboard shortcuts to->s/Emulator controls (default)/Virtual device/
snapfractalpop

Respostas:

468

Atualizar

A partir do SDK rev 21, o Android Virtual Device Manager possui uma interface de usuário aprimorada que resolve esse problema. Destacamos algumas das configurações mais importantes abaixo:

insira a descrição da imagem aqui

Se você perceber que o soft (screen-based) chaves principais Back, Homeetc. estão faltando em seu emulador você pode definir hw.mainKeys=nopara habilitá-los.

insira a descrição da imagem aqui

Resposta original

Embora a documentação do desenvolvedor diga que o suporte ao teclado está ativado por padrão, não parece ser assim no SDK rev 20. Ativei explicitamente o suporte ao teclado no arquivo config.ini do meu emulador e funcionou!

Adicionar: hw.keyboard=yes

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

Da mesma forma, adicione hw.dPad=yesse você deseja usar as teclas de seta para navegar na lista de aplicativos.

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

No Mac OS e Linux, você pode editar todas as suas configurações de emulador com um comando Terminal:

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


Em uma nota relacionada, se o seu emulador de tablet estiver sem os botões BACK / HOME, tente selecionar WXGA800 como a capa Incorporada no editor AVD: insira a descrição da imagem aqui

Ou configurando manualmente a capa no config.ini:

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

(o exemplo é para API 16)

James Wald
fonte
1
Como as outras respostas mencionadas, você também pode usar a ferramenta AVD Manager, mas experimentei erros que impedem que ela salve as alterações de configuração.
21420 James James Wald
Existe alguma configuração global que afetará todo o meu avd existente? Eu não quero mudar cerca de 20 avd existentes.
Hoang Tran
@HoangTran Não há configuração global; no entanto, se você estiver usando o Mac OS, poderá usar o comando Terminal que eu adicionei à resposta para editar todos os AVDs existentes ao mesmo tempo.
James Wald
Infelizmente, essa solução não funcionou para mim. Depois de executar o comando, o teclado ainda não funciona no meu avd.
31412 Justin
1
A edição do arquivo de configuração funcionou para mim, mas estranhamente não vejo a interface do usuário mostrada na figura, apesar de ter a versão 21 do SDK.
offby1
112

Confirmado. Eu tive o mesmo problema depois de atualizar para o Tools versão 20. Eu tive que editar o AVD para adicionar uma opção da seguinte maneira:

  1. No Eclipse, vá para AVD Mananger.
  2. Selecione o AVD específico e clique em Editar
  3. Vá para a seção Hardware, clique em Novo.
  4. Selecione o nome da propriedade: Suporte de teclado
  5. Por padrão, é adicionado com um valor de 'não'. Basta clicar na coluna de valor e alterá-la para 'yes'.
  6. Clique em Editar AVD novamente.

Isso adicionará uma propriedade hw.keyboard = yes no arquivo config.ini para o AVD.

Você também precisa definir hw.mainKeys = yes

Romin
fonte
19
Verifique se a coluna de valor perde o foco antes de clicar em Editar AVD ou a alteração em 'yes' não será salva!
Nuthatch
1
Olá, segui as instruções acima, mas ainda não consigo inserir texto usando o teclado do meu PC. Quando clico duas vezes no AVD listado no AVD Manager, percebo que a edição foi bem-sucedida, pois indica hw.keyboard: yes. Estou esquecendo de algo???
JibW
3
Sugiro o seguinte: Exclua o AVD e crie um AVD completamente novo com o suporte do teclado.
Romin 6/07/12
59

No Android Studio, abra o AVD Manager (Ferramentas> Android> AVD Manager). Toque no botão Editar do emulador: insira a descrição da imagem aqui

Selecione "Mostrar configurações avançadas" insira a descrição da imagem aqui

Marque "Ativar entrada do teclado" insira a descrição da imagem aqui

Clique em Concluir e inicie o emulador para aproveitar a entrada do teclado.

Hong
fonte
Trabalhou para mim após ativar a configuração de entrada do teclado, mas imaginando como ele parou de funcionar por si só em primeiro lugar.
Justcurious
3
É tão frustrante que esta opção desmarca-se após cada atualização emulador :(
Misha Akopov
2
No meu caso, o teclado estava ativado, mas não funcionou no emulador. A correção é desativar o teclado, iniciar o emulador, encerrar o emulador, ativar o teclado.
beroal
15

Procure no AVD Manager, selecione o AVD e clique em Editar. Na seção Hardware: clique em "Novo" e procure por "Suporte ao teclado", adicione com o botão OK e defina o valor como "sim" e salve as alterações com "Editar AVD"

Joel Pelaez
fonte
estranho é, quando eu definir esse valor para sim, ele força o valor de volta para não, de qualquer maneira vai testar com um novo dispositivo novamente
epsilonpsi
Eu preferi essa resposta. Usar o gerenciador do AVD é uma solução mais memorável do que alterar o arquivo config.ini.
Seth
10

O Google queria dar um pouco mais de dor de cabeça aos desenvolvedores.

Então, o que você precisa fazer agora é editar o seu AVD e adicionar "Suporte ao Teclado" na seção Hardware e alterar o valor para "Sim"

Vincy
fonte
1
Não funcionou para mim, o valor de suporte do teclado avd de "yes" não permanece salvo, ele volta novamente a "no".
31412 Justin
Na verdade, o Google queria melhorar as coisas. Atualmente, a maioria dos dispositivos não possui teclados de hardware, portanto o padrão deve ser nenhum / desativado. Sim, é mais fácil trabalhar com o emulador com um, mas isso não reflete as condições do mundo real. A maneira correta é fazer com que os desenvolvedores o habilitem especificamente.
Charlie Collins12:
4

Na sua pasta pessoal /.android/avd//config.ini, adicione a linha hw.keyboard = yes

Amit Yaron
fonte
2

Apenas no caso de alguém achar útil.

Eu tive um problema com o KEYCODE_DPAD_UP que pertence ao trackBall. Para resolver essa alteração, avdfolder / config.ini hw.trackBall = yes e pressione DEL ou F6

PbxMan
fonte
2

Às vezes, reiniciar o emulador ajuda quando a digitação não está disponível - apesar da entrada do teclado estar ativada para o seu dispositivo virtual Android.

Zon
fonte
0

Procure a pasta .android oculta na pasta inicial do usuário. Você pode renomear ou excluir esta pasta, recriar seu AVD e reiniciar o emulador. Pode ser que exista um arquivo .ini nessa pasta que tenha essa configuração alterada.

Eric Cloninger
fonte
sim, eu excluí os arquivos .android e avd também .. não ajudou. Obrigado pela contribuição
epsilonpsi
0

Recriar um AVD com o Hardware Keyboard + definindo o valor booleano como true foi a única solução que funcionou para mim; as outras duas soluções principais (terminal ou edição de um AVD existente via GUI) resultaram em falhas de software / emulador no meu Mac. Criar um novo AVD resultou no funcionamento do teclado.

Davek804
fonte
0

Aqui está uma solução alternativa que realmente funcionou para mim: é a mesma solução da resposta mais popular - basta adicionar hw.keyboard = yes ao config.ini, mas como isso não funcionou para mim, adicionalmente

  1. renomeado config.ini (qualquer nome serve) para algo como consssssfig.ini
  2. emulador reiniciado (obviamente não foi iniciado)
  3. renomeado config.ini novamente
  4. (Não tenho certeza se relevante) Adicionei esse novo parâmetro (hw.keyboard = yes) no início do arquivo config.ini
Witold
fonte