instrumentation模拟很多activity的操作

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

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

主要代码如下

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

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

键值可以查看android.view.KeyEvent


[java]  view plain  copy
  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.     }  

你可能感兴趣的:(instrumentation模拟很多activity的操作)