Можно ли имитировать касание от фонового приложения (или службы) или запустить sh script (который имитирует касание)?
Он необходим для тестирования системы Android без USB или другого подключения к ПК, поэтому я не могу (или не знаю, как) использовать обезьяны или другие средства автотеста.
Добавлена информация: Я нашел способ запуска команд оболочки с корнем (проверенные корневые устройства):
Невозможно выполнить команду sendevent shell через код Android (создать сенсорное моделирование). Запись файла в системный раздел (запуск команд с правами 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();
}
У меня нет никаких исключений, но это не касается имитации.
Помогает ли кто-нибудь решить эту проблему?
Если есть еще один способ сделать это с помощью андроида ndk или демона на C, сообщите мне об этом.
Спасибо.