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