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
注释掉的部分:
注:
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()
如果加log的话:
adb shell monkey -v -v -v -f sdcard/XXX.script 1
key值介绍
1
附件:
系统应用包名:
执行cmd命令:
执行命令:
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文件:(清空某个应用的数据)
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.html1
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);
相关文章推荐
- 使用python编写android截屏脚本双击运行即可
- 在Android手机上编写并运行Lua脚本
- 使用python编写android截屏脚本双击运行即可
- 利用ubuntu将.cpp生成二进制的可执行文件,然后利用.bat(脚本)编写命令,将可执行文件在android机上运行
- windows下编写的shell脚本如何在Linux运行
- android代码中运行二进制程序或脚本
- 编写在Android的Linux系统中直接运行的可执行程序 - 检测CPU能力
- windows下编写shell脚本放到linux运行问题
- IE浏览器里无法运行脚本(script)常见的解决方法!
- 使用jEdit编写运行Beanshell脚本
- 使用Python开发Android应用程序:第三节 在电脑上编写程序在手机上运行
- Android 的init脚本编写解析
- IE浏览器里无法运行脚本(script)常见的解决方法!
- 让Python在Android系统上飞一会儿:第三节 在电脑上编写程序在手机上运行
- 巧用Windows Script Host编写自动申请QQ号码脚本
- android 札记二 在批处理和shell script中运行android
- 使用Script.NET编写NSIS安装脚本
- 在android运行脚本的注意事项
- windows下编写的Shell脚本在Linux下运行错误的解决方法
- Server.ScriptTimeOut:处理脚本运行时间长的方法