具有自定义构建的 Android 模拟器不接受键盘输入

Posted

技术标签:

【中文标题】具有自定义构建的 Android 模拟器不接受键盘输入【英文标题】:Android emulator with custom build does not accept keyboard entry 【发布时间】:2012-08-30 14:24:51 【问题描述】:

我有一个使用自定义构建的金鱼内核的自定义 android 映像。我一直在使用模拟器进行软件开发。

emulator -kernel out/target/product/atom/kernel

当我升级到 SDK 20 后,我不再从主机或图形键盘获得键盘输入。这曾经奏效。我已经看到有关设置 hw.keyboard 属性=yes 的 cmets。我找不到有效的操作序列。

a) 尝试启动模拟器并强制我的硬件配置

emulator -verbose -kernel out/target/product/atom/kernel -qemu -android-hw /home/jgrecco/work/ics-4.0.4/out/target/product/atom/hardware-qemu.ini

hardware-qemu 被覆盖,hw.keyboard 选项为 no。

b) 创建一个 AVD 并让它加载我的自定义内核和映像

ex: android create avd --force -b x86 -n aal_emul -t 3

emulator -kernel out/target/product/atom/kernel -show-kernel  @aal_emul

但无法让 AVD 启动我的自定义映像。它似乎启动了一个默认映像。我尝试过复制 img 文件,但没有成功

c) 尝试修改默认的 hardware.ini 设置 ics-4.0.4/external/qemu/android/avd/hardware-properties.ini 无效。

许多其他变体。

如果有人可以使上述任何解决方案起作用或告诉我一个,我将不胜感激。顺便说一句,这是针对 x86 atom 的。

TIA

【问题讨论】:

【参考方案1】:

经过大量的实验、谷歌搜索、大量诅咒不准确(过时)的文档和更新我所有的源(与 repo 同步挂起 - 咆哮),我想出了一个解决方法。我想我会为了他人的利益而发布这个。

基本问题是升级到 SDK 20 后,我无法再使用任何方式(真实或仿真键盘)输入应用程序。这仅在加载我自己的自定义图像“lunch #; emulator -kernel out/target/product/...”时发生。上面描述的覆盖 hw.keyboard 属性的尝试都没有对我有用。

我发现的解决方法是在运行时更改模拟器中的设置。设置->语言和输入->default_Hardware 物理键盘(关闭)。虽然我不能使用主机键盘,但现在可以使用模拟器键盘进行输入。

【讨论】:

【参考方案2】:

尝试在hardware-qemu.ini 旁边的文件config.ini 中设置'hw.keyboard=true'。 这会覆盖hardware-qemu.ini 中的默认值,不应被覆盖。

【讨论】:

以上是关于具有自定义构建的 Android 模拟器不接受键盘输入的主要内容,如果未能解决你的问题,请参考以下文章

iOS7 模拟器中的 UITextField 不接受来自 mac 键盘的任何输入

播放声音的 iOS 8 自定义键盘

具有 Material Design 风格的自定义 Android 键盘

虚拟键盘激活时的屏幕样式

Android创建自定义键盘

与 Host App 的自定义键盘扩展通信在设备中不工作但在模拟器中工作