Эмулятор 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.