91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Android開發中模擬輸入

發布時間:2021-03-15 17:08:49 來源:億速云 閱讀:368 作者:Leah 欄目:開發技術

這篇文章給大家介紹怎么在Android開發中模擬輸入,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

input 指令

我們打開adb,進入shell,輸入input可以看到指令的參數說明。

怎么在Android開發中模擬輸入

其中source一般都是用的默認值可以忽略,我們主要關注的就是后面的command

  • text:文本輸入;keyevent:鍵盤按鍵;這兩條指令是所有設備通用的。

  • tap:點擊屏幕;swipe:滑動屏幕;這兩條指令適用于有觸摸屏的設備。

  • press,roll適用于有觸摸球的設備。

模擬輸入

在使用input指令之前我們要先獲取一下root權限。

private void execShellCmd(String cmd) { 
 
 try { 
 Process process = Runtime.getRuntime().exec("su"); 

 OutputStream outputStream = process.getOutputStream(); 
 DataOutputStream dataOutputStream = new DataOutputStream( 
  outputStream); 
 dataOutputStream.writeBytes(cmd); 
 dataOutputStream.flush(); 
 dataOutputStream.close(); 
 outputStream.close(); 
 } catch (Throwable t) { 
 t.printStackTrace(); 
 } 
}

text

1.輸入之前需要提前獲取焦點。
2.輸入有特殊含義的特殊字符,無法直接輸入 需要使用keyevent 如: ' '

我們整一個EditText,然后進行text輸入測試。

execShellCmd("input text 'hello,world'");

我們發現少了一個H,在控制臺可以看到日志。

怎么在Android開發中模擬輸入

可以看到在按下H的時候,EditText沒有獲取到焦點。

怎么在Android開發中模擬輸入

可能是頁面初始化以后就開始執行輸入操作,此時editText還沒有獲取到焦點,獲取焦點可能存在點延時。所以我們嘗試延遲1s后進行輸入。

private Handler handler = new Handler();
private Runnable task = new Runnable() {
 public void run() {
 execShellCmd("input text 'hello,world'");
 }
};

// 延遲1s后輸入
handler.postDelayed(task,1000);

怎么在Android開發中模擬輸入

keyevent

execShellCmd("input text 'hello,world' \n input keyevent 68 \n input keyevent 21");

輸入hello,world,然后輸入',然后左移光標

怎么在Android開發中模擬輸入

常見的keycode可以參見frameworks/base/core/java/android/view/KeyEvent.java

怎么在Android開發中模擬輸入

tap

android 中坐標系如下圖所示。

怎么在Android開發中模擬輸入

我們可以打開手機中的 開發者選項 -> 指針位置 來輔助定位,可以再上方看到x,y相對的偏移量。

怎么在Android開發中模擬輸入

點擊屏幕(100,200)位置。

execShellCmd("input tap 100 200");

swipe

滑動屏幕和tap相似只需要傳入兩個坐標即可。后面也可以設置滑動時間(ms),時間越短滑動的相應距離就會越長。

從屏幕(100,200)滑動到(300,400)。

execShellCmd("input swipe 100 200 300 400");

關于怎么在Android開發中模擬輸入就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东乌珠穆沁旗| 花垣县| 亚东县| 崇义县| 达州市| 淮阳县| 章丘市| 沙河市| 泽库县| 德安县| 麻栗坡县| 错那县| 榆社县| 三亚市| 毕节市| 阿拉善右旗| 浑源县| 汝阳县| 鹿邑县| 平昌县| 罗江县| 哈密市| 北辰区| 大港区| 无为县| 定襄县| 嘉义县| 岳普湖县| 察雅县| 小金县| 宁陵县| 象山县| 平山县| 梧州市| 海宁市| 肃宁县| 西畴县| 辽源市| 江北区| 平凉市| 乌拉特前旗|