Эмулятор Android не принимает ввод с клавиатуры - SDK tools rev 20


324

Я обновил инструменты SDK до версии 20 (из 18), и после обновления эмулятор, похоже, не принимает ввод с клавиатуры ноутбука. Но только с использованием собственной «мягкой» клавиатуры эмулятора (которая появляется, когда поле ввода сфокусировано).

Я попытался переустановить инструменты SDK (и весь SDK в этом отношении), удалил и переустановил плагины Eclipse для Android, заново создал устройства эмулятора. Но ничто из этого, кажется, не помогает, и это сводит меня с ума. Это безнадежно, чтобы ввести с помощью трекпада ноутбука.

Кто-нибудь сталкивался с этой проблемой?


Побочным эффектом этого является то, что кнопка поиска в эмуляторе тоже не работает. К счастью, такое же исправление для клавиатуры исправляет и кнопку поиска.
bmaupin

Я также обнаружил, что для некоторых приложений я должен был перейти на Extended Controls-> Send keyboard shortcuts to->s/Emulator controls (default)/Virtual device/
snapfractalpop

Ответы:


468

Обновить

Начиная с SDK версии 21 в диспетчере виртуальных устройств Android появился улучшенный пользовательский интерфейс, который решает эту проблему. Я выделил некоторые из наиболее важных параметров конфигурации ниже:

введите описание изображения здесь

Если вы заметили , что мягкий (экран на основе) основные ключи Back, Homeи т.д. отсутствуют эмулятор вы можете установить , hw.mainKeys=noчтобы включить их.

введите описание изображения здесь

Оригинальный ответ

Несмотря на то, что в документации разработчика сказано, что поддержка клавиатуры включена по умолчанию, в SDK версии 20 это не так. Я явно включил поддержку клавиатуры в файле config.ini моего эмулятора, и это сработало!

Добавить: hw.keyboard=yes

Для того, чтобы: ~/.android/avd/<emulator-device-name>.avd/config.ini

Аналогичным образом добавьте, hw.dPad=yesесли вы хотите использовать клавиши со стрелками для навигации по списку приложений.

Ссылка: http://developer.android.com/tools/devices/managing-avds-cmdline.html#hardwareopts

В Mac OS и Linux вы можете редактировать все конфигурации вашего эмулятора с помощью одной команды терминала:

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


Что касается примечания, если в эмуляторе планшета отсутствуют кнопки BACK / HOME, попробуйте выбрать WXGA800 в качестве встроенного скина в редакторе AVD: введите описание изображения здесь

Или вручную установив скин в config.ini:

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

(пример для API 16)


1
Как уже упоминалось в других ответах, вы также можете использовать инструмент AVD Manager, но у меня есть ошибки, которые не позволяют сохранить изменения конфигурации.
Джеймс Уолд

Есть ли какие-либо глобальные настройки, которые будут влиять на все мои существующие AVD? Я не хочу менять около 20 существующих AVD.
Хоанг Тран

@HoangTran Глобальной конфигурации не существует, однако, если вы используете Mac OS, вы можете использовать команду Terminal, которую я добавил в ответ, чтобы редактировать все существующие AVD одновременно.
Джеймс Уолд

К сожалению, это решение не сработало для меня. После запуска команды клавиатура все еще не работает в моем AVD.
Джастин

1
Редактирование файла конфигурации работало для меня, но, как ни странно, я не вижу UI, показанный на рисунке, несмотря на наличие версии 21 SDK.
offby1 10.12.12

112

Подтверждено. У меня была такая же проблема после обновления до Tools version 20. Мне пришлось отредактировать AVD, чтобы добавить параметр следующим образом:

  1. От Eclipse, перейдите к AVD Mananger.
  2. Выберите конкретный AVD и нажмите «Изменить».
  3. Перейдите в раздел «Оборудование», нажмите «Новый».
  4. Выберите имя свойства: поддержка клавиатуры
  5. По умолчанию он добавляется со значением «нет». Просто щелкните по столбцу значений и измените его на «да».
  6. Нажмите на Edit AVD еще раз.

Это добавит свойство hw.keyboard = yes в файл config.ini для AVD.

Вы также должны установить hw.mainKeys = yes


19
Убедитесь, что столбец значений теряет фокус, прежде чем нажать «Изменить AVD», иначе изменение «да» не будет сохранено!
Поползень

1
Привет, я следовал приведенным выше инструкциям, но все еще не могу вставить текст с клавиатуры компьютера. Когда я дважды щелкаю по AVD, указанному в AVD Manager, я обнаруживаю, что редактирование прошло успешно, так как оно указывает на hw.keyboard: yes. Я что-то упускаю???
JibW

3
Я предлагаю следующее: Удалите AVD и создайте совершенно новый AVD с поддержкой клавиатуры.
Ромин

59

В Android Studio откройте AVD Manager (Инструменты> Android> AVD Manager). Нажмите кнопку «Редактировать» эмулятора: введите описание изображения здесь

Выберите «Показать дополнительные настройки» введите описание изображения здесь

Проверьте «Включить ввод с клавиатуры» введите описание изображения здесь

Нажмите Finish и запустите эмулятор, чтобы насладиться вводом с клавиатуры.


У меня сработало после настройки ввода с клавиатуры enablinh, но интересно, как она перестала работать сама по себе?
Justcurious

3
Это так расстраивает, что этот флажок снимает сам себя после каждого обновления эмулятора :(
Миша Акопов

2
В моем случае клавиатура была включена, но не работала в эмуляторе. Исправление - отключить клавиатуру, запустить эмулятор, завершить эмулятор, включить клавиатуру.
Beroal

15

Посмотрите в AVD Manager, выберите AVD и нажмите «Изменить». В разделе «Оборудование»: нажмите «Создать» и найдите «Поддержка клавиатуры», добавьте с помощью кнопки «ОК», установите значение «Да» и сохраните изменения с помощью «Редактировать AVD».


Странно то, что, когда я устанавливаю это значение в yes, оно возвращает значение no, в любом случае снова протестирую с новым устройством
epsilonpsi

Я предпочел этот ответ. Использование диспетчера AVD является более запоминающимся решением, чем изменение файла config.ini.
Сет

10

Google хотел доставить еще больше головной боли разработчикам.

Итак, теперь вам нужно отредактировать AVD, добавить для него «Поддержка клавиатуры» в разделе «Оборудование» и изменить значение на «Да».


1
У меня не сработало, значение поддержки «av» для клавиатуры avd не сохраняется, оно снова возвращается к «no».
Джастин

На самом деле Google хотел улучшить вещи. Большинство устройств теперь не имеют аппаратных клавиатур, поэтому по умолчанию должно быть нет / отключено. Да, с эмулятором легче работать с одним, но это не отражает реальные условия. Правильный способ - сделать так, чтобы разработчики специально включили его.
Чарли Коллинз


2

На всякий случай, если кто-нибудь найдет это полезным.

У меня была проблема с KEYCODE_DPAD_UP, он принадлежит trackBall. Чтобы решить эту проблему, измените avdfolder / config.ini hw.trackBall = yes и нажмите DEL или F6


2

Перезапуск эмулятора помогает иногда, когда набор текста недоступен - несмотря на то, что ввод с клавиатуры включен для вашего виртуального устройства Android.


0

Найдите скрытую папку .android в домашней папке пользователя. Вы можете переименовать или удалить эту папку, воссоздать AVD и перезапустить эмулятор. Это может быть файл .ini в этой папке, в котором есть этот параметр.


да я тоже удалил .android и avd файлы .. не помогло хотя. спасибо за вклад
epsilonpsi

0

Воссоздание AVD с аппаратной клавиатурой + установка логического значения в true было единственным решением, которое работало для меня; два других основных решения (терминал или редактирование существующего AVD через GUI) привели к сбоям программного обеспечения / эмулятора на моем Mac. Создание нового AVD привело к тому, что клавиатура работала просто отлично.


0

Вот некоторый обходной путь, который на самом деле работал для меня, это то же решение, что и в самом популярном ответе - просто добавьте hw.keyboard = yes в config.ini, но так как это не сработало для меня, я дополнительно

  1. переименован в config.ini (подойдет любое имя), например, consssssfig.ini
  2. перезапустил эмулятор (очевидно, он не запустился)
  3. переименовал config.ini обратно
  4. (Я не уверен, если уместно) я добавил этот новый параметр (hw.keyboard = yes) в начале файла config.ini
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.