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

    xiaoxiao2021-03-25  214

    官方介绍: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);
    转载请注明原文地址: https://ju.6miu.com/read-2588.html

    最新回复(0)