您的位置:首页 > 移动开发 > Android开发

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

2017-03-08 14:56 387 查看
官方介绍:https://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 >>
*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 events
count= 1
speed= 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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: