Android模拟器无法接收键盘输入-SDK工具版本20。

337

我已升级SDK工具至20版(从18版),自升级以来,模拟器似乎无法接受来自笔记本电脑键盘的输入。只有使用模拟器自带的“软”键盘(当输入字段聚焦时出现)才能进行输入。

我尝试重新安装SDK工具(以及整个SDK),卸载并重新安装Eclipse Android插件,重新创建模拟器设备。但是这些方法都没有帮助,让我感到非常苦恼。使用笔记本电脑的触摸板输入是无望的。

有人遇到过这个问题吗?


这似乎会导致模拟器中的搜索按钮也无法正常工作。幸运的是,键盘的同样修复方法也可以修复搜索按钮。 - bmaupin
我还发现对于某些应用,我不得不进入“扩展控件”->“发送键盘快捷键到” -> “s/模拟器控制(默认)/虚拟设备/”。 - snapfractalpop
13个回答

482

更新

从SDK rev 21起,Android虚拟设备管理器具有改进的UI,解决了此问题。以下是一些更重要的配置设置:

enter image description here

如果注意到模拟器中软件(基于屏幕)的主按键返回主页等丢失了,可以设置hw.mainKeys=no以启用它们。

enter image description here

原始回答

尽管开发者文档说默认启用键盘支持,但在SDK rev 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


另外,如果你的平板电脑模拟器缺少返回/主页按钮,请尝试在AVD编辑器中选择 WXGA800作为内置皮肤: enter image description here

或者通过手动设置config.ini中的皮肤来解决此问题:

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

(示例适用于API 16)

1
正如其他答案所提到的,您也可以使用AVD管理器工具,但我曾经遇到过一些错误,阻止它保存配置更改。 - James Wald
这解决了问题,但现在软键盘不再弹出。 - Urban
1
编辑配置文件对我有用,但奇怪的是,尽管我有SDK 21版本,但我没有看到图片中显示的UI界面。 - offby1
1
又发生了。我之前有一个可以工作的模拟器硬件键盘,然后从SDK 25.0.3升级到26.0.x,硬件键盘就停止工作了。不过,同样的答案可以解决问题。但是,我希望知道为什么/如何更改了模拟器设置。 - Les
1
您可以通过命令行键入 android avd 打开 AVD 管理器工具。详见 http://www.androiddocs.com/tools/devices/managing-avds.html - Harry Moreno
显示剩余7条评论

113

确认。在升级到工具版本20后,我遇到了同样的问题。我必须编辑AVD以添加以下选项:

  1. 从Eclipse转至AVD管理器。
  2. 选择特定的AVD并单击“编辑”。
  3. 进入硬件部分,单击“新建”。
  4. 选择属性名称:键盘支持
  5. 默认情况下,它是带有“no”的值添加的。只需单击值列并将其更改为“yes”即可。
  6. 再次单击“编辑AVD”。

这将在config.ini文件中为AVD添加一个属性hw.keyboard=yes。

您还必须设置hw.mainKeys = yes。


19
在点击“编辑 AVD”之前,确保数值列失去焦点,否则更改为“是”将不会被保存! - Nuthatch
1
嗨,我按照上述说明操作了,但仍然无法使用我的PC键盘插入任何文本。当我双击AVD管理器下列出的AVD时,我发现编辑成功了,因为它显示hw.keyboard:yes。我是不是漏掉了什么??? - JibW
3
我建议如下操作:删除当前的AVD,重新创建一个带有键盘支持的全新AVD。 - Romin

61
在Android Studio中,打开AVD Manager(工具> Android> AVD Manager)。 点击模拟器的编辑按钮: 输入图像说明 选择“显示高级设置” 输入图像说明 勾选“启用键盘输入” 输入图像说明 单击完成并启动模拟器以享受键盘输入。

在启用键盘输入设置后,它对我起作用了,但我想知道它为什么会自己停止工作。 - Justcurious
3
每次模拟器更新后,这个复选框自动取消选择真是让人沮丧 :( - Misha Akopov
2
在我的情况下,键盘是启用的,但在模拟器中无法工作。解决方法是禁用键盘,启动模拟器,终止模拟器,然后启用键盘。 - beroal

15

在 AVD 管理器中查找 AVD 并点击 "编辑"。在硬件部分:点击 "新建",搜索 "键盘支持" 并添加,然后用 "确定" 按钮设置值为 "yes",最后使用 "编辑 AVD" 保存更改。


奇怪的是,当我将这个值设置为“是”时,它会强制将值返回到“否”,无论如何,我会再次使用新设备进行测试。 - epsilonpsi
我更喜欢这个答案。使用AVD管理器比更改config.ini文件更易记。 - Seth

10

Google想让开发人员头疼一下。

现在你需要编辑虚拟设备(AVD),在硬件部分添加“键盘支持”,并将值更改为“Yes”。


1
对我没用,AVD键盘支持值为“yes”无法保存,它一直恢复为“no”。 - Justin
实际上,Google 希望改进事物。现在大多数设备都没有硬件键盘,因此默认应该是无/禁用。是的,使用模拟器更容易,但这并不反映真实世界的情况。正确的方法是让开发人员专门启用它。 - Charlie Collins

9
请在您的AVD配置文件~/.android/avd/<avd_folder>/config.ini中添加以下行hw.keyboard=yes

3

重新启动模拟器有时可以帮助解决无法输入的问题,即使您的安卓虚拟设备启用了键盘输入。


2

以防有人觉得有用。

我遇到了一个问题,与KEYCODE_DPAD_UP有关,它属于轨迹球。要解决这个问题,请更改您的avdfolder / config.ini hw.trackBall = yes ,然后按DEL或F6。


1
这是一个对我实际有效的解决方法,与最受欢迎的答案中的解决方案相同 - 只需将hw.keyboard=yes添加到config.ini中,但由于这对我没有用,因此我另外执行以下操作:
  1. 将config.ini(任何名称均可)重命名为类似consssssfig.ini的内容
  2. 重新启动模拟器(显然它没有启动)
  3. 再次将config.ini重命名回来
  4. (我不确定是否相关)在config.ini文件开头添加了这个新参数(hw.keyboard=yes)

1
有时候计算机键盘在安卓模拟器上会停止工作。今天我注意到,在按下我用红箭头标出的按钮后,键盘又开始工作了(看起来是模拟器窗口焦点的问题)。

screenshot


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接