是否可以从后台应用程序(或服务)模拟触摸或运行 sh 脚本(模拟触摸)?
在没有 USB 或其他连接到 PC 的情况下测试 android 系统需要它,这就是为什么我不能(或不知道如何)使用 Monkey 或其他自动测试工具。
补充信息:我找到了用 root 运行 shell 命令的方法(测试的设备 root):
无法通过 android 代码执行 sendevent shell 命令(创建触摸模拟)。 在系统分区上写入文件(以 root 权限运行命令)
我也得到了模拟触摸的事件。
结果我有:
//sendevent commands to simulate touch (verify it work from cmd)
String[] touchEvent = { "sendevent /dev/input/event0 0 0 0\n",
"sendevent /dev/input/event6 3 53 499\n",
"sendevent /dev/input/event6 3 54 680\n",
"sendevent /dev/input/event6 3 58 40\n",
"sendevent /dev/input/event6 3 48 3\n",
"sendevent /dev/input/event6 3 57 0\n",
"sendevent /dev/input/event6 0 2 0\n",
"sendevent /dev/input/event6 0 0 0\n",
"sendevent /dev/input/event6 0 2 0\n",
"sendevent /dev/input/event6 0 0 0\n",
"sendevent /dev/input/event0 3 0 2\n",
"sendevent /dev/input/event0 0 0 0\n"};
try{
Thread.sleep(2000);
Process root = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(root.getOutputStream());
for(int i = 0; i < touchEvent.length; i++){
Log.i(TAG, touchEvent[i]);
os.writeBytes(touchEvent[i]);
os.flush();
}
root.waitFor();
} catch (IOException e) {
Log.e(TAG, "Runtime problems\n");
e.printStackTrace();
} catch (SecurityException se){
se.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
我没有任何例外,但它不是触摸模拟。
任何人都可以帮助解决这个问题吗?
如果有另一种方法可以使用 C 上的 android ndk 或守护进程来实现,请告诉我。
谢谢。