2011-12-27 92 views
9

我正在嘗試使用批處理文件(.bat)和adb外殼發送觸摸事件。使用ADB模擬觸摸

我試圖重新發送從adb shell getevents得到的事件,即使命令通過沒有錯誤,它也不起作用。 任何想法?

如何在使用ADB外殼的給定(x,y)座標上模擬觸摸事件和釋放事件?

+0

[如何使用ADB向使用sendevent命令的設備發送觸摸事件?](http:// stackoverflow。com/questions/3437686 /如何使用adb-to-send-touch-events-to-device-using-sendevent-command) – taur 2017-04-30 21:38:45

回答

16

因爲它似乎取決於Android版本改變,我建議你遵循這些說明:

  1. 開始轉儲運動事件中,你需要複製:

    ~$ adb shell getevent | grep event2 
    

    grep是非常有用的過濾輸出。

  2. 要複製你的運動事件;

  3. 然後,只需將所有值從十六進制轉儲到十進制值! :)


要查找eventX是爲你工作做如下:

  1. 啓動終端,輸入:

    ~$ adb shell getevent 
    

你會看到快速移動跟蹤例如/ dev/input/event4 ......

  • 觸摸屏一次
  • 必須就在觸摸的時刻EVENT4少數eventX和這些eventX之間看到

    將是你的用於再現運動輸入接口活動! :)

    Source

    +3

    請提供一個完整的答案,而不僅僅是一個鏈接。鏈接可以消失,改變等,所以答案將無法使用。 – Nanne 2011-12-27 18:30:50

    +0

    已編輯。 :) – krz37 2011-12-27 18:41:38

    +1

    該鏈接已經更新,包括以下適用於Android 2.2+(更容易!) 「adb shell input tap x y」 – Matt 2014-12-09 16:01:35

    10

    我管理通過使用

    adb shell getevent | grep event2 
    

    捕獲輸入,然後從十六進制轉換的所有值以十進制, 並通過將所產生的序列中的shell腳本來模擬在索尼XPERIA LT26i的 事件

    adb shell sendevent /dev/input/event2 3 57 23710 
    adb shell sendevent /dev/input/event2 3 53 329 
    adb shell sendevent /dev/input/event2 3 54 1183 
    adb shell sendevent /dev/input/event2 3 52 0 
    adb shell sendevent /dev/input/event2 0 0 0 
    adb shell sendevent /dev/input/event2 3 57 4294967295 
    adb shell sendevent /dev/input/event2 0 0 0 
    

    我從鏈接論壇的帖子中發現,第2行和第3行正在設置X和Y的位置 接下來的2行是觸摸按下,底部的2行是觸摸釋放,我hav他想出了第一條線的作用,但它需要它的工作。 我希望這對你有用