
Android模擬點擊延遲解決方法
MrLee2019-5-17 2256
Android在root環境下模擬點擊是利用adb shell input tap x y,但是連續多次快速點擊就太慢了,經過測驗差不多300ms每次,這樣的效率也太低了,網上有人說,把所有要執行的點全部放到一個檔案中,然后一次性執行這個sh檔案,但是這個效率表示太低了,完全不好用,
還有種方法,就是不斷的創建新的Process執行新的點擊指令,但是這種老是提示獲取root權限,非常畝訓!!!
有沒有更好的辦法呢,答案是:有!
今天剛好做這個需求,順便花了幾個小時解決了這個問題,其實非常簡單,就是把執行的指令放入后臺即可,經測驗,一個Process執行一次點擊所要的時間是1~5ms,也就是0.001~0.005秒,這個速度可是剛剛的,并且還不會總是提示“獲取root權限”,看看下面的100次效果吧,因為點擊太快,按鈕回應不過來,所以設定成了0.44秒/次

代碼:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | package com.android.dev.util; import android.graphics.Point; import java.io.OutputStream; /** * 用root權限執行Linux下的Shell指令 */ public class RootShellCmd { private static Process process; private static OutputStream os; /** * 執行shell指令 * * @param cmd 指令 */ public static final void exec(String cmd) { try { if (process == null) { process = Runtime.getRuntime().exec("su"); os = process.getOutputStream(); } os.write(cmd.getBytes()); os.flush(); } catch (Exception e) { e.printStackTrace(); } } /** * 后臺執行一次按鍵 * * @param keyCode */ public static final void simulateKey(int keyCode) { exec(String.format("input keyevent %d &\n", keyCode)); } /** * 后臺執行一次點擊 * * @param point */ public static final void simulateClick(Point point) { exec(String.format("input tap %d %d &\n", point.x, point.y)); } } |
本文鏈接:https://www.it72.com/12543.htm
侵刪