自动把getevent转化为sendevent的工具(附java源码)

最近发现了evi这个工具,这个工具是android 测试用的,和我想要做的是同样的功能。不过有的手机上没有这个指令,所以想要类似功能的可以先尝试这个工具,如果不行的话可以尝试在手机里push一个evi,或者换用分割线一下的方法。

用法很简单: 

1 输入 adb shell evi record 后,做自己想要重复执行的操作。 

2 输入 adb shell evi replay -t n ,即可重复执行操作,n代表想要重复执行的次数。

adb shell evi 
Usage:
evi record [-f ] []
    - record system events to 
      If no -f option is supplied then the data is written
      to "/sdcard/events"
      ( is the list of events to be backed up.
      For example, "1 3 5" means event1, event3 and event5.
      By default, event0, event1, event3, event4, event6
      and event7 are included.)

evi replay [-f ] [-t ]
    - replay system events from 
      If no -f option is supplied then "/sdcard/events" is used.
      If no -t option is supplied then events will be replayed once.




---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

根据上一篇 Android getevent/sendevent的使用,写了一个工具,专门用来把getevent转化为sendevent指令。


主要是16进制转化10进制太麻烦了,这么麻烦的东西,必须得写专门的工具来让电脑帮我完成。


这个工具的作用是把把getevent转化为sendevent指令,getevent指令中按回车空行每行转化为1秒延迟,并且组装成shell来循环执行。

(直接在工具里输入getevent事件,按q后回车结束输入)


没错,我就是想做个简易的按键录制工具。


可以直接下载我编译好的:点击下载


源码如下

   public static void main(String[] args) {

        System.out.println("请输入要转化的getevent指令(adb shell getevent)");

        Scanner scanner = new Scanner(System.in);
        StringBuilder result = new StringBuilder();
        result.append("#!/bin/sh\n");
        result.append("while :\n");
        result.append("do\n");
        while (scanner.hasNextLine()) {
            String line = scanner.nextLine();
            if (line.trim().isEmpty()) {
                result.append("sleep 1\n");
                continue;
            }
            if (line.trim().equals("q")) break;
            String[] temp = line.split(" ");
            result.append("adb shell sendevent ")
                    .append(temp[0] + " ")
                    .delete(result.length() - 2, result.length() - 1)
                    .append(temp[1] + " ")
                    .append(String.format("%04d", Integer.parseInt(temp[2], 16)) + " ")
                    .append(Long.parseLong(temp[3], 16) + " ");
            result.append("\n");
        }
        result.append("done\n");
        System.out.print(result.toString());

    }


你可能感兴趣的:(Android,技术)