【发布时间】:2013-03-07 15:31:48
【问题描述】:
我目前正在开发一个模拟 d-pad(上、下、左和右)的应用程序。问题是我不知道如何将这些按键发送到其他应用程序。
目前,我正在使用 Instrumentation,它在我的应用程序的活动中运行良好。 下面是方向键左键的sn-p代码:
new Thread(new Runnable() {
@Override
public void run() {
new Instrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_LEFT);
}
}).start();
这个实现的问题是,由于 android 的安全功能,我无法将按键发送到其他应用程序。 在搜索了注入按键的不同方法后,我遇到了这个article。但是,在尝试了示例代码之后,它似乎不起作用。我四处寻找,发现android似乎没有键盘输入设备。当我扫描不同的输入设备时,我会得到诸如方向传感器之类的东西。这是我手机上所有输入设备的图片(T-959 Galaxy S)。
如您所见,这些设备都不是键盘。我有一种感觉,这是因为我的手机没有物理键盘。 (cypress是电容键,aries是音量键,mxt224是触屏控制器)
经过一番研究,我发现android中的accessibility api对注入事件有限制,但这些只是非常基本的东西,比如切换视图焦点等(AccessibilityNodeInfo)。不过,我觉得我可以扩展它以支持箭头键按下。
所以目前,我很困惑去哪里。有没有人做过这样的事情?由于 Android 中的安全功能,似乎简单地注入箭头键(仅此而已)非常令人沮丧。欢迎所有建议。
编辑:我可能不是很清楚,但我可以只为有根手机构建它。唯一的要求是这个应用程序必须在手机上独立运行,而不是通过 otg 或通过 adb 连接到任何外部键盘。
【问题讨论】:
标签: android key inject arrow-keys