2016-04-02 21 views
2

我正在開發一個需要將觸摸事件發送到/ dev/input/eventX的應用程序android。我知道C代碼結構做這樣的事情是這樣的:在/ dev/input/eventX中寫入事件需要什麼命令?

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

要使用這樣的代碼,我需要設置NDK。相反,我想在android中使用Runtime.getRunTime.exec()等效的linux命令,而不需要使用NDK。有沒有辦法做到這一點?

如果不是,發送事件所需的其他代碼是C?例如,如何在x = 200和y = 300處將事件觸發到event0?我搜索了,但沒有找到明確的解決方案。

感謝。

+0

除非您在根設備或您自己的自定義ROM上運行,否則您的應用無法生成假輸入數據。 – CommonsWare

+0

@CommonsWare謝謝,我的設備已經紮根,我該怎麼做? – Dania

+0

當您使用搜索引擎搜索「android rooted device fake user input」時,您學到了什麼? – CommonsWare

回答

3

我不清楚你爲什麼需要直接將活動發送到/dev/input/eventX。但是如果它可以通過adb發送,則可以向設備註入許多類型的事件。

試試這個在您的計算機上:在您的Android設備外殼

adb shell input tap 200 300

或者這樣:

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) 
相關問題