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.     }  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.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