android.app.Instrumentation好像原来是用来做测试的,

可以用来模拟很多activity的操作

主要代码如下

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

点击按钮就能模拟音量加减键

键值可以查看android.view.KeyEvent

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

instrumentation模拟很多activity的操作相关推荐

  1. selenium模拟鼠标和键盘操作的基本方法

    前言 前面已经把环境搭建好了,这从这篇开始,正式学习selenium的webdriver框架.我们平常说的 selenium自动化,其实它并不是类似于QTP之类的有GUI界面的可视化工具,我们要学的是 ...

  2. 计算机应用操作题word,计算机应用基础网考模拟练习题Word部分操作题

    计算机应用基础网考模拟练习题Word部分操作题 1.打开当前试题目录中的TEST1.DOC文件,并完成下面操作: (1)在" 基于Windows95/98"后添加"操作系 ...

  3. 开启灯光就是近光吗_科目三考前必看!夜间灯光语音模拟+超全项目操作

    驾考复考在即,你准备好了吗?跟着元贝驾考小编一起来看看,科目三夜间灯光语音模拟+超全项目操作! 上车准备 下面将进行模拟夜间行驶灯光的考试,请在5秒内做出相应的灯光操作 1.语音提示:请开启前照灯 [ ...

  4. JAVA编写的使用Socket模拟Http的GET操作

    JAVA编写的使用Socket模拟Http的GET操作,看后就很容易理解Web浏览器的原理了. import java.io.BufferedReader; import java.io.InputS ...

  5. .net中模拟键盘和鼠标操作

    周银辉 其实SendKeys类提供的方法蛮好用的,可惜的是WPF中不能用了,说是WPF的消息循环方式改成了Dispatcher,所以直接调用System.Windows.Forms.SendKeys. ...

  6. php 模拟鼠标点击,Python全局模拟鼠标点击操作(以至善网无聊评价点击作为案例)...

    Python全局模拟鼠标点击操作(以至善网无聊评价点击作为案例) 环境 python3 依赖 PyAutoGUI 简介 PyAutoGUI是一个纯Python的GUI自动化工具,其目的是可以用程序自动 ...

  7. 控制台模拟鼠标、键盘操作

    控制台模拟鼠标.键盘操作 模拟鼠标.键盘操作,能让命令行顿然强大,想想,制作批处理版屏幕键盘等都不在话下(已制作过,效果很不错).虽然这也跟CUI无关.本教程教会你如何让命令行模拟鼠标.键盘的操作. ...

  8. 使用Instrumentation模拟点击屏幕

    1.使用前需要申明权限 <uses-permission android:name="android.permission.INJECT_EVENTS" /> 2.使用 ...

  9. Python全局模拟鼠标点击操作(以至善网无聊评价点击作为案例)

    Python全局模拟鼠标点击操作(以至善网无聊评价点击作为案例) 环境 python3 依赖 PyAutoGUI 简介 PyAutoGUI是一个纯Python的GUI自动化工具,其目的是可以用程序自动 ...

最新文章

  1. Makefile理解
  2. protobuf-2.6.1生成java文件
  3. SpringBoot 使用(三): 配置文件详解
  4. 7-CPU Reset
  5. Scala-Spark digamma stackoverflow问题
  6. 1. 栈和队列的数组实现
  7. 简单版:带干扰线的图形验证码生成
  8. 常用系统函数oracle
  9. Nmap流量特征修改(NTA、IDS、IPS、流量审计)
  10. 计算机网络学习笔记(3. 计算机网络结构)
  11. 镜头的分类及选购指南
  12. SharePoint 2013 禁用搜索服务
  13. 2020年物联网平台调研报告
  14. linux 下修复坏u盘启动不了怎么办,U盘打不开并不是坏了, 用这两个命令, 轻松修复里面的文件...
  15. Win系统 - Windows10 系统恢复语言栏位置的方法(二)
  16. 国际能源署: 分散式系统是穷乡能源普及最具经济效益的解方
  17. dell服务器型号t310,Dell T110/R210/T310/R310服务器 For Windows驱动程序
  18. android 方向传感器,10.11 传感器专题(2)——方向传感器
  19. 服务器要删除文件访问被拒绝,删除文件提示:文件夹访问被拒绝 需要来自administrator权限执行操作...
  20. GVRP-LNP-VCMP讲解

热门文章

  1. python将文本中的数据处理成图像(matplotlib)
  2. floatvalue 重写_Java Number floatValue()方法与示例
  3. 散列碰撞_散列中的碰撞和碰撞解决技术
  4. HDFC的完整形式是什么?
  5. 周五怎么表示 mysql_完美起航-MySQL找每个月最后一个星期五--函数定义与使用
  6. 线性表----链式表
  7. Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)
  8. android文本复制自定义剪切板,android 剪切板-文本复制、粘贴
  9. django和mysql写注册_Django电商项目---完成注册页面和用户登录
  10. 校门外的树——树状数组+区间修改