Android Monkey之script脚本--编写和运行

来源:互联网 发布:2017淘宝新店扶持多久 编辑:程序博客网 时间:2024/06/05 11:49

官方介绍:http://img.blog.csdn.net/20150915155557302


Android源码:

development/cmds/monkey/src/com/android/commands/monkey/MonkeySourceScript.java 
注释掉的部分:

/*** monkey event queue. It takes a script to produce events sample script format:** <pre>* type= raw events* count= 10* speed= 1.0* start data &gt;&gt;*captureDispatchPointer(5109520,5109520,0,230.75429,458.1814,0.20784314,0.06666667,0,0.0,0.0,65539,0)* captureDispatchKey(5113146,5113146,0,20,0,0,0,0)* captureDispatchFlip(true)* ...* </pre>*/

注:

type指明类型

count说明执行次数,但是这里改成任何值都执行一次,monkey命令可以指定执行次数,这里也就无所谓了

speed命令执行速率。改动无影响,可以通过monkey命令行指定。 
以上三个参数改动都没什么影响,一般不做改动。

start data >>相当于一个入口,说明脚本从下面开始执行 
常用函数:

 DispatchKey(downTime,eventTime,action,code,repeat,metaState,device,scancode) 
@param long downTime //键最初被按下的时间 
@param long eventTime //事件发生的时间 
@param int action //(ACTION_DOWN=0,ACTION_UP=1,ACTION_MULTIPLE=2) 
@param int code //键值,比如KEYCODE_DPAD_DOWN(20) 
@param int repeat // 
@param int metaState //当前按下的meta键的标识 
@param int device //事件发生的设备id 
@param int scancode // 
 DispatchPointer(downTime, eventTime,action, x, y, pressure, size, metaState, xPrecision,yPrecision,device, edgeFlags) 
@param long downTime //键最初被按下的时间 
@param long eventTime //事件发生的时间 
@param int action //(ACTION_DOWN=0,ACTION_MOVE=1,ACTION_UP=2,ACTION_CANCEL=3) 
@param float x //x坐标 
@param float y //y坐标 
@param float pressure //当前事件的压力,范围0-1 
@param float size //触摸的近似值,范围0-1 
@param int metaState //当前按下的meta键的标识 
@param float xPrecision //x坐标精确值 
@param float yPrecision //y坐标精确值 
@param int device //事件来源,范围0-x,0表示不来自物理设备 
@param int sedgeFlags // 
DispatchTrackball(downTime, eventTime,action, x, y, pressure, size, metaState, xPrecision,yPrecision,device, edgeFlags) 
Tap(x,y,duration); 
DispatchPress(String key_name) 
DispatchFlip(boolean keyboardOpen) 
UserWait(long sleeptime) 
LaunchActivity(String pkg_name, String cl_name,long alarmTime) 
UserWait(long sleeptime) 
LongPress()

命令:adb shell monkey -f sdcard/XXX.script 1  其中1为执行脚本次数。

如果加log的话:

adb shell monkey -v -v -v -f sdcard/XXX.script 1

key值介绍

http://developer.android.com/reference/android/view/KeyEvent.html
  • 1
  • 1


附件: 
系统应用包名:

com.android.settings.AccessibilitySettings 辅助功能设置com.android.settings.ActivityPicker 选择活动com.android.settings.ApnSettings APN设置com.android.settings.ApplicationSettings 应用程序设置com.android.settings.BandMode 设置GSM/UMTS波段com.android.settings.BatteryInfo 电池信息com.android.settings.DateTimeSettings 日期和时间设置com.android.settings.DateTimeSettingsSetupWizard 日期和时间设置com.android.settings.DevelopmentSettings 应用程序设置=》开发设置com.android.settings.DeviceAdminSettings 设备管理器com.android.settings.DeviceInfoSettings 关于手机com.android.settings.Display 显示——设置显示字体大小及预览com.android.settings.DisplaySettings 显示设置com.android.settings.DockSettings 底座设置com.android.settings.IccLockSettings SIM卡锁定设置com.android.settings.InstalledAppDetails 语言和键盘设置com.android.settings.LanguageSettings 语言和键盘设置com.android.settings.LocalePicker 选择手机语言com.android.settings.LocalePickerInSetupWizard 选择手机语言com.android.settings.ManageApplications 已下载(安装)软件列表com.android.settings.MasterClear 恢复出厂设置com.android.settings.MediaFormat 格式化手机闪存com.android.settings.PhysicalKeyboardSettings 设置键盘com.android.settings.PrivacySettings 隐私设置com.android.settings.ProxySelector 代理设置com.android.settings.RadioInfo 手机信息com.android.settings.RunningServices 正在运行的程序(服务)com.android.settings.SecuritySettings 位置和安全设置com.android.settings.Settings 系统设置com.android.settings.SettingsSafetyLegalActivity 安全信息com.android.settings.SoundSettings 声音设置com.android.settings.TestingSettings 测试——显示手机信息、电池信息、使用情况统计、Wifi information、服务信息com.android.settings.TetherSettings 绑定与便携式热点com.android.settings.TextToSpeechSettings 文字转语音设置com.android.settings.UsageStats 使用情况统计com.android.settings.UserDictionarySettings 用户词典com.android.settings.VoiceInputOutputSettings 语音输入与输出设置com.android.settings.WirelessSettings 无线和网络设置
执行cmd命令:
import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;public class Command {// 执行命令public static void execCommand(String cmd) {    InputStream ins = null;    try {        Process process = Runtime.getRuntime().exec(cmd);        ins = process.getInputStream();        BufferedReader reader = new BufferedReader(        new InputStreamReader(ins));        String line = null;        while ((line = reader.readLine()) != null) {            // 输出            System.out.println(line);        }        process.waitFor();        process.getOutputStream().close();        } catch (Exception e) {        System.out.println(e.getMessage());        }    }}

执行命令: 
public class Test { 
public static void main(String[] args) { 
String test =”adb shell monkey -v -v -v -f sdcard/test.script 1”; 
Command.execCommand(test); 

}

test.script文件:(清空某个应用的数据)

type= raw eventscount= 1speed= 1.0   start data >>   LaunchActivity(com.android.settings,com.android.settings.RunningServices);UserWait(800);captureDispatchPointer(0,0,0,100,500,0,0,0,0,0,0,0);captureDispatchPointer(1,1,1,100,500,0,0,0,0,0,0,0);UserWait(1000);captureDispatchPointer(0,0,0,773,1200,0,0,0,0,0,0,0);captureDispatchPointer(1,1,1,773,1200,0,0,0,0,0,0,0);UserWait(4000);captureDispatchPointer(0,0,0,540,1402,0,0,0,0,0,0,0);captureDispatchPointer(1,1,1,540,1402,0,0,0,0,0,0,0);UserWait(1000);captureDispatchPointer(0,0,0,773,1200,0,0,0,0,0,0,0);captureDispatchPointer(1,1,1,773,1200,0,0,0,0,0,0,0);UserWait(3000);
0 0
原创粉丝点击