2016-04-02 102 views
2

touchイベントを/ dev/input/eventXに送信する必要があるandroidアプリを開発しています。私はそのようなことを行うにはCコードの構造は次のようである知っている:/dev/input/eventXにイベントを書き込むために必要なコマンドは何ですか?

struct input_event { 
    struct timeval time; 
    unsigned short type; 
    unsigned short code; 
    unsigned int value; 
}; 

は、このようなコードを使用するには、私はNDKを設定する必要があります。代わりに、NDKを使用する必要がなく、linuxコマンドをアンドロイドのRuntime.getRunTime.exec()を使用して実行します。それを行う方法はありますか?

いいえの場合は、残りの部分はCイベントを送信するために必要ですか?たとえば、event0にx = 200、y = 300のタッチイベントを送信するにはどうすればよいですか?私は検索し、私は明確な解決策を見つけられませんでした。

ありがとうございました。

+0

ルートデバイスまたは独自のカスタムROMで実行している場合を除き、アプリは偽の入力データを生成することはできません。 – CommonsWare

+0

@CommonsWareありがとう、私のデバイスは根っこをしています、どうすればいいですか? – Dania

+0

検索エンジンを使って 'android rooted device fake user input'を検索したとき、何を学びましたか? – CommonsWare

答えて

3

イベントを/dev/input/eventXに直接送信する必要がある理由がわかりません。しかし、adb経由で送信できる場合は、多くのタイプイベントをデバイスに注入できます。

adb shell input tap 200 300

それともこれはあなたのAndroidデバイスのシェル上:

input tap 200 300

をしかし、それは理由の外注入の高い遅延を持つ

は、お使いのコンピュータでこれを試してみてください。

inputコマンドの詳細情報はこちらを参照してください。

Usage: input [<source>] <command> [<arg>...] 

The sources are: 
     mouse 
     keyboard 
     joystick 
     touchnavigation 
     touchpad 
     trackball 
     stylus 
     dpad 
     touchscreen 
     gamepad 

The commands and default sources are: 
     text <string> (Default: touchscreen) 
     keyevent [--longpress] <key code number or name> ... (Default: keyboard) 
     tap <x> <y> (Default: touchscreen) 
     swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen) 
     press (Default: trackball) 
     roll <dx> <dy> (Default: trackball) 
関連する問題