Androidシステム全体でタッチイベントを送信します。バックグラウンドサービスからイベントを送信しています。私のデバイスはrootで、私のアプリケーションは/ system/appに保存されています。touchイベントを/ dev/input/eventに直接送信する方法は?
私はinstrumentation and system/bin/input tab
を試しましたが、計測はアプリの外では機能しませんでした。もう1つはエラーを生成しませんが、何もしません。私は/ dev/input/event2に直接注入しようとしましたが、何の効果もありません。ここで
コードです:https://yhcting.wordpress.com/2010/11/29/linux-writing-input-event-directly/が、私はそれを正しく適用してるかどうかはわからない:
Thread t = new Thread(new Runnable() {
@Override
public void run() {
try {
Process process = Runtime.getRuntime().exec("su");//supolicy --live \"allow appdomain input_device dir { ioctl read getattr search open }\" \"allow appdomain input_device chr_file { ioctl read write getattr lock append open }\"");
Runtime.getRuntime().exec ("su chmod 666 /dev/input/event2");
DataOutputStream os = new DataOutputStream(process.getOutputStream());
String cmd = "su /dev/input/event2 ABS_X "+ xPos + " ABS_Y "+ yPos+ "\n";
Runtime.getRuntime().exec(cmd);
}
catch (IOException e) {
e.printStackTrace();
}
}
});
t.start();
私はリファレンスとして、このウェブサイトを使用していました。/dev/input/event2にどのようにイベントを注入できますか?
また、/ dev/input/eventXとは何ですか?私はいつもそれを見ていますが、それが入力ノードであるのか、それともイベントノードの一般的な表示であるのかは明確ではありません。最後に、どのイベントノード(event1、event2など)にイベントを送信すべきかをどのように知ることができますか?
EDIT:私はsuコマンドの/ dev /入力しようとした/イベント2 ABS_X XPOS ABS_Y YPOS adbのシェルを経由して、私が言って行なった:不明なユーザー名またはUIDを、それが何を意味するのでしょうか?
ありがとうございました。
おかげで多くのことを、私はwのイベントを注入するAndroidアプリ自体をしたいので、私はLinuxコマンドを探していますそれをPCに接続する必要はありませんが、これは可能ですか?または、アプリケーション内でadbコマンドを実行するライブラリがありますか? – Dania