C# adb封装类

为了方便操作apk 实现app的自动化点击 使用C#封装了个adb操作类。基本上的操作都有了.

using System;using System.Collections;using System.Collections.Generic;using System.Drawing;using System.Text;using System.Text.RegularExpressions; class Emulator {     static readonly String ADBPATH = "D:/Microvirt/MEmu/"; //adb 所在目录    static readonly String ROOTPATH = AppDomain.CurrentDomain.BaseDirectory;    static readonly String SAVEPATH = AppDomain.CurrentDomain.BaseDirectory + "temp";    static readonly String SNAPEPATH = SAVEPATH + @"\gsnap.png";    static readonly String TEMPLATE = AppDomain.CurrentDomain.BaseDirectory + "template/";     internal String devices { get; set; }     internal Emulator() {    }     internal Emulator(String devices) {        this.devices = devices;    }    //获取的所有能连接使用的设备    internal List<String> GetDevices() {        List<String> lst = new List<string>();        String result = Common.Execute(ADBPATH + "adb devices");        String[] lines = Regex.Split(result, "\r\n");// result.Split('\n');        foreach (String line in lines) {            if (line.Contains("\tdevice")) {                lst.Add(line.Replace("\tdevice", ""));            }        }        return lst;    }    //获取当前运行的APP 最顶层的Activity    internal string GetTopActivity() {        try {            MatchCollection matchs;            IEnumerator enumerator;            String input = "";            input = Common.Execute(ADBPATH + "adb -s " + devices + " shell dumpsys activity|findstr mFocusedActivity"); //获取最顶层的 activity            if (input.IndexOf("HistoryRecord") > 0) {                matchs = Regex.Matches(input, @"HistoryRecord.*?\}", RegexOptions.Singleline);            }            else {                matchs = Regex.Matches(input, @"ActivityRecord.*?\}", RegexOptions.Singleline);            }            int num = 0;            try {                enumerator = matchs.GetEnumerator();                while (enumerator.MoveNext()) {                    Match current = (Match)enumerator.Current;                    num++;                    return current.Value;                }            }            catch { }            return "";        }        catch {        }        return "";    }     //截屏    internal void snape() {         Common.Execute(ADBPATH + "adb -s " + devices + " exec-out screencap -p > " + SNAPEPATH);    }    //载屏并保存为指定名称    internal void snape(String name) {        String path = SAVEPATH + "/" + name + ".bmp";        Common.Execute(ADBPATH + "adb -s " + devices + " exec-out screencap -p > " + path);    }     //判断是否安装了某个包(APP)    internal Boolean CheckApp(String package) {        String Result = Common.Execute(ADBPATH + "adb -s " + devices + " shell pm list packages");        return Result.IndexOf(package) > 0;    }     //安装APP    internal Boolean install(String package) {        String Result = Common.Execute(ADBPATH + "adb -s " + devices + " install " + package);        return Result.IndexOf("Success", StringComparison.CurrentCultureIgnoreCase) > 0;    }     //卸载某个应用  //包名 可通过 adb shell pm list packages -s 来查看    internal void uninstall(String package) {         Common.Execute(ADBPATH + "adb -s " + devices + " uninstall " + package);    }     //启用APP     internal void start(String package) {        Common.Execute(ADBPATH + "adb -s " + devices + " shell am start -n " + package);    }    //结果运行中的APP    internal void stop(String package) {        Common.Execute(ADBPATH + "adb -s " + devices + " shell am force-stop " + package);    }     //单击某区域    internal void click(Point point) {        String cmd = ADBPATH + "adb -s " + devices + " shell input tap " + (point.X) + " " + point.Y;        Common.Execute(cmd);    }    //长按某个按    internal void LongPress(String Key) {        Common.Execute(ADBPATH + "adb - s " + devices + " input keyevent--longpress " + Key);    }    //按住某点滑动    internal void swipe(Point first, Point second, int time) {        Common.Execute(ADBPATH + "adb - s " + devices + " input swipe " + first.X + " " + first.Y + " " + second.X + " " + second.Y + " " + time);    }     //输入文本信息    internal void text(String text) {        Common.Execute(ADBPATH + "adb -s " + devices + " shell input text " + text);    }    //发送键值    internal void key(String key) {        Common.Execute(ADBPATH + "adb -s " + devices + " shell input keyevent " + key);    }     //检测某应用是否运行    internal bool isrun(String packname) {        String Result = Common.Execute(ADBPATH + "adb -s " + devices + " shell ps");        return Result.IndexOf(packname, StringComparison.CurrentCultureIgnoreCase) > 0;    }    //滑动解锁    internal void unlock() {        StringBuilder cmd = new StringBuilder();        cmd.AppendLine(ADBPATH + "adb -s " + devices + " shell sendevent /dev/input/event0 3 0 32");        cmd.AppendLine(ADBPATH + "adb -s " + devices + " shell sendevent /dev/input/event0 3 1 353");        cmd.AppendLine(ADBPATH + "adb -s " + devices + " shell sendevent /dev/input/event0 1 330 1");        cmd.AppendLine(ADBPATH + "adb -s " + devices + " shell sendevent /dev/input/event0 0 0 0");        cmd.AppendLine(ADBPATH + "adb -s " + devices + " shell sendevent /dev/input/event0 3 0 260");        cmd.AppendLine(ADBPATH + "adb -s " + devices + " shell sendevent /dev/input/event0 0 0 0");        cmd.AppendLine(ADBPATH + "adb -s " + devices + " shell sendevent /dev/input/event0 1 330 0");        cmd.AppendLine(ADBPATH + "adb -s " + devices + " shell sendevent /dev/input/event0 0 0 0");        Common.Execute(cmd.ToString());    }}