instrumentation模擬很多activity的操作

android.app.Instrumentation好像原來是用來做測試的,

可以用來模擬很多activity的操作

主要代碼如下

如果在文本框中輸入24,或者25

點擊按鈕就能模擬音量加減鍵

鍵值可以查看android.view.KeyEvent


[java]?view plaincopy
  1. package?com.qefee.testinstrumentation;??
  2. ??
  3. import?android.app.Activity;??
  4. import?android.app.Instrumentation;??
  5. import?android.os.Bundle;??
  6. import?android.view.KeyEvent;??
  7. import?android.view.View;??
  8. import?android.widget.Button;??
  9. import?android.widget.EditText;??
  10. import?android.widget.TextView;??
  11. import?android.widget.Toast;??
  12. ??
  13. public?class?MainActivity?extends?Activity?{??
  14. ????TextView?tv_showkey;??
  15. ????Button?btn_submit;??
  16. ????EditText?et_keycode;??
  17. ????Instrumentation?instrumentation;??
  18. ??
  19. ????@Override??
  20. ????protected?void?onCreate(Bundle?savedInstanceState)?{??
  21. ????????super.onCreate(savedInstanceState);??
  22. ????????setContentView(R.layout.activity_main);??
  23. ??
  24. ????????instrumentation?=?new?Instrumentation();??
  25. ????????getViews();??
  26. ??
  27. ????????//?通過按鈕點擊,模擬事件??
  28. ????????btn_submit.setOnClickListener(new?View.OnClickListener()?{??
  29. ??
  30. ????????????@Override??
  31. ????????????public?void?onClick(View?v)?{??
  32. ????????????????et_keycode.clearFocus();??
  33. ????????????????btn_submit.requestFocus();??
  34. ????????????????String?keycodeStr?=?et_keycode.getText().toString();??
  35. ??
  36. ????????????????if?(keycodeStr?==?null?||?"".equals(keycodeStr))?{??
  37. ????????????????????Toast.makeText(MainActivity.this,?"please?input?a?keycode",??
  38. ????????????????????????????Toast.LENGTH_SHORT).show();??
  39. ????????????????????return;??
  40. ????????????????}??
  41. ??
  42. ????????????????final?int?keycode?=?Integer.parseInt(keycodeStr);??
  43. ??
  44. ????????????????//?必需在線程中運行,否者報錯??
  45. ????????????????Thread?t?=?new?Thread(new?Runnable()?{??
  46. ??
  47. ????????????????????@Override??
  48. ????????????????????public?void?run()?{??
  49. ????????????????????????instrumentation.sendKeyDownUpSync(keycode);??
  50. ????????????????????}??
  51. ????????????????});??
  52. ????????????????t.start();??
  53. ??
  54. ????????????}??
  55. ????????});??
  56. ????}??
  57. ??
  58. ????/**?
  59. ?????*??
  60. ?????*/??
  61. ????private?void?getViews()?{??
  62. ????????tv_showkey?=?(TextView)?findViewById(R.id.tv_showcode);??
  63. ????????btn_submit?=?(Button)?findViewById(R.id.btn_submit);??
  64. ????????et_keycode?=?(EditText)?findViewById(R.id.et_keycode);??
  65. ????}??
  66. ??
  67. ????@Override??
  68. ????public?boolean?onKeyDown(int?keyCode,?KeyEvent?event)?{??
  69. ????????boolean?onKeyDown?=?super.onKeyDown(keyCode,?event);??
  70. ????????tv_showkey.setText("des?=?"?+?KeyEvent.keyCodeToString(keyCode)??
  71. ????????????????+?"?:?code?=?"?+?keyCode);??
  72. ????????System.out.println(event);??
  73. ????????//?System.out.println(event.getAction());??
  74. ????????//?System.out.println(event.getCharacters());??
  75. ????????//?System.out.println(event.getDeviceId());??
  76. ????????//?System.out.println(event.getDisplayLabel());??
  77. ????????//?System.out.println(event.getDownTime());??
  78. ????????//?System.out.println(event.getEventTime());??
  79. ????????//?System.out.println(event.getFlags());??
  80. ????????//?System.out.println(event.getKeyCode());??
  81. ????????//??
  82. ????????//?System.out.println(KeyEvent.keyCodeToString(keyCode));??
  83. ??
  84. ????????return?onKeyDown;??
  85. ????}??
  86. }?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/387937.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/387937.shtml
英文地址,請注明出處:http://en.pswp.cn/news/387937.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

成像數據更好的展示_為什么更多的數據并不總是更好

成像數據更好的展示Over the past few years, there has been a growing consensus that the more data one has, the better the eventual analysis will be.在過去的幾年中,越來越多的共識是,數據越多,最終的分析就越好。 However, just a…

支付寶架構

支付寶系統架構圖如下: 支付寶架構文檔有兩個搞支付平臺設計的人必須仔細揣摩的要點。 一個是賬務處理。在記賬方面,涉及到內外兩個子系統,外部子系統是單邊賬,滿足線上性能需求;內部子系統走復式記賬,滿足…

怎樣可以跨進程測試

在Android系統下模擬鼠標鍵盤等輸入設備,網絡上資料非常多。但不少是人云亦云,甚至測試都不愿測試一下就抄上來了。這次寫一點體會,當作拋磚引玉。0. 背景知識:眾所周知,Android是將Framework架在Linux之上的系統。Lin…

Android Studio 導入新工程項目

1 導入之前先修改工程下相關文件 1.1 只需修改如下三個地方1.2 修改build.gradle文件 1.3 修改gradle/wrapper/gradle-wrapper.properties 1.4 修改app/build.gradle 2 導入修改后的工程 2.1 選擇File|New|Import Project 2.2 選擇修改后的工程 如果工程沒有變成AS符號&#xf…

馬蜂窩張矗:績效考核是為了激發工作潛力,而不是逃避問題

3 月 23 日,由高端技術領導者社交平臺 TGO 鯤鵬會主辦的 GTLC 全球技術領導峰會分站首站在北京舉行。會上馬蜂窩技術副總裁 \u0026amp; TGO 鯤鵬會會員張矗發表了主題為“我在馬蜂窩的技術管理實踐”的演講。本文根據其演講整理而成。大家好,我是來自馬蜂…

vue domo網站_DOMO與Tableau-逐輪

vue domo網站Let me be your BI consultant. Best yet, let me be your free consultant on the following question:讓我成為您的BI顧問。 最好的是,讓我成為您的免費顧問 ,解決以下問題: DOMO vs. Tableau — What should I use?DOMO vs.…

fiddler抓包1-抓小程序https包

抓小程序包和抓app包是一樣的操作方法;安卓用fiddler,ios用charles; 一、環境準備 1.電腦已裝最新版fiddler 2.手機和電腦在同一局域網 二、fiddler設置 1.fiddler>Tools>Options>HTTPS 勾選Capture HTTPS CONNECTs 及下邊的子項&am…

多態使用的前提

1:必須是繼承(extends),實現(implements) 才行2:必須要重寫(覆蓋)父類的方法。轉載于:https://www.cnblogs.com/liyunchuan/p/10663788.html

Linux下的 FTP

1.安裝vsftpd yum install vsftpd 2.啟動/重啟/關閉vsftpd服務器 [rootlocalhost ftp]# /sbin/service vsftpd restart Shutting down vsftpd: [ OK ] Starting vsftpd for vsftpd: [ OK ] OK表示重啟成功了. 啟動和關閉分別把restart改為start/stop即可. 如果是源碼安裝的,到…

python入門23 pymssql模塊(python連接sql server增刪改數據 )

增刪改數據必須connect.commit()才會生效 回滾函數 connect.rollback() 連接數據庫 dinghanhua sql server增刪改 import pymssqlserver 192.168.1.1 user user password 111111 database testdbconnect pymssql.connect(server server,user user,passwordpassword,da…

每個人都應該使用的Python 3中被忽略的3個功能

重點 (Top highlight)Python 3 has been around for a while now, and most developers — especially those picking up programming for the first time — are already using it. But while plenty of new features came out with Python 3, it seems like a lot of them ar…

iframe自適應高度

為什么需要使用iframe自適應高度呢?其實就是為了美觀,要不然iframe和窗口長短大小不一,看起來總是不那么舒服,特別是對于我們這些編程的來說,如鯁在喉的感覺。 首先設置樣式 body{margin:0; padding:0;} 如果不設置bod…

.Net轉Java自學之路—SpringMVC框架篇八(RESTful支持)

RESTful架構,REST即Representational State Transfer。表現層狀態轉換,就是目前最流行的一種互聯網軟件架構。它結構清晰、符合標準、易于理解、擴展方便,所以得到越來越多網站的采用。 RESTful其實就是一個開發理念,是對http的很…

沖刺第七天

今天任務進行情況:今天我們將我們的游戲導到界面形成可用的應用程序,并且進行調試與運行,讓同學試玩,發現了困難并加以改正。 遇到的困難及解決方法: 運行時發現游戲界面中UI的button和image的位置會隨分辨率的不同而發…

數據探查_數據科學家,開始使用探查器

數據探查Data scientists often need to write a lot of complex, slow, CPU- and I/O-heavy code — whether you’re working with large matrices, millions of rows of data, reading in data files, or web-scraping.數據科學家經常需要編寫許多復雜,緩慢&…

Node.js Streams:你需要知道的一切

Node.js Streams:你需要知道的一切 圖像來源 Node.js流以難以使用而聞名,甚至更難理解。好吧,我有個好消息 - 不再是這樣了。 多年來,開發人員在那里創建了許多軟件包,其唯一目的是簡化流程。但在本文中,我…

oracle表分區

1.表空間:是一個或多個數據文件的集合,主要存放的是表,所有的數據對象都存放在指定的表空間中;一個數據文件只能屬于一個表空間,一個數據庫空間由若干個表空間組成,其中包括:a.系統表空間:10g以前,默認系統表空間是System,10g包括10g以后,默認系統表空間是User,存放數據字典和視…

oracle異機恢復 open resetlogs 報:ORA-00392

參考文檔:ALTER DATABASE OPEN RESETLOGS fails with ORA-00392 (Doc ID 1352133.1) 打開一個克隆數據庫報以下錯誤: SQL> alter database open resetlogs; alter database open resetlogs * ERROR at line 1: ORA-00392: log 1 of thread 1 is being…

從ncbi下載數據_如何從NCBI下載所有細菌組件

從ncbi下載數據One of the most important steps in genome analysis is gathering the data required for downstream research. This sometimes requires us to have the assembled reference genomes (mostly bacterial) so we can verify the classifiers trained or bins …

shell之引號嵌套引號大全

萬惡的引號 這個能看懂你就出師了! 轉載于:https://www.cnblogs.com/theodoric008/p/10000480.html