public override double getData(string package)
        {
            String rcv;
            String snd;
            double datausage = 0;

            Executecmd.ExecuteCommandSync("adb shell cat proc/uid_stat/" + pkglist[package] + "/tcp_snd", out snd);
            Executecmd.ExecuteCommandSync("adb shell cat proc/uid_stat/" + pkglist[package] + "/tcp_rcv", out rcv);
            if (rcv.IndexOf("such") > 0 || snd.IndexOf("such") > 0)
            {
                initData[package] = 0;
                return(0);
            }

            if (snd == String.Empty || rcv == String.Empty)
            {
                return(-1);
            }
            datausage = Convert.ToDouble(rcv) + Convert.ToDouble(snd);
            if (this.t == 0)
            {
                initData[package] = datausage;
            }
            datausage        = (datausage - initData[package]) / 1024;
            this.currentData = datausage;
            return(datausage);
        }
Beispiel #2
0
        public static Dictionary <string, string> GetPackageInfo()
        {
            String allpkginfo = "";
            String uid        = "1001";
            Dictionary <string, string> pkginfo = new Dictionary <string, string>();

            if (!Connected)
            {
                return(null);
            }
            Executecmd.ExecuteCommandSync("adb shell dumpsys package", out allpkginfo);
            Regex           reg      = new Regex(@".*Package \[(\S+)\].*\s*userId=(\d*)");//Package ['(\S+)']
            MatchCollection mMatches = reg.Matches(allpkginfo);

            foreach (Match m in mMatches)
            {
                if (m.Groups.Count > 2 && Convert.ToInt32(m.Groups[2].ToString()) > 10000)
                {
                    try{
                        pkginfo.Add(m.Groups[1].ToString(), m.Groups[2].ToString());
                    }
                    catch (Exception) {
                        //eat exception
                    }
                }
            }
            if (mMatches.Count > 0)
            {
                pkginfo.Add("system_server", "10000");
            }
        public static Dictionary <string, string> GetPackageInfo()
        {
            String allpkginfo = "";
            String uid        = "1001";
            Dictionary <string, string> pkginfo = new Dictionary <string, string>();

            if (!Connected)
            {
                return(null);
            }
            Executecmd.ExecuteCommandSync("adb shell dumpsys package", out allpkginfo);
            Regex           reg      = new Regex(@".*Package \[(\S+)\].*\s*userId=(\d*)");//Package ['(\S+)']
            MatchCollection mMatches = reg.Matches(allpkginfo);

            foreach (Match m in mMatches)
            {
                if (m.Groups.Count > 2 && Convert.ToInt32(m.Groups[2].ToString()) > 10000)
                {
                    try{
                        pkginfo.Add(m.Groups[1].ToString(), m.Groups[2].ToString());
                    }
                    catch (Exception) {
                        //eat exception
                    }
                }
            }
            if (mMatches.Count > 0)
            {
                pkginfo.Add("system_server", "10000");
            }

            /*
             * while (strLine != null)
             * {
             *  //Console.WriteLine(strLine);
             *  Match m = reg.Match(strLine);
             *  if (m.Groups.Count > 1)
             *  {
             *      string packagename = m.Groups[1].ToString();
             *      Regex uidreg = new Regex(@".*userId=(\d*)");
             *      m_streamReader.ReadLine();
             *      m = uidreg.Match(m_streamReader.ReadLine());
             *      if (m.Groups.Count > 1)
             *      {
             *          uid = m.Groups[1].ToString();
             *          pkginfo.Add(packagename, uid);
             *      }
             *  }
             *  strLine = m_streamReader.ReadLine();
             * }
             * */

            return(pkginfo);
        }
 private void InitAdbEnv()
 {
     Executecmd.ExecuteCommandSync("adb wait-for-device", 0);
     //Executecmd.ExecuteCommandSync("adb root", 0);
     Executecmd.ExecuteCommandSync("adb wait-for-device", 0);
     //Executecmd.ExecuteCommandSync("adb remount", 0);
     Executecmd.ExecuteCommandSync("adb push save /data/local/tmp/save", 0);
     Executecmd.ExecuteCommandSync("adb shell chmod 777 /data/local/tmp/save", 0);
     Executecmd.ExecuteCommandSync("adb push save_fps /data/local/tmp/save_fps", 0);
     Executecmd.ExecuteCommandSync("adb shell chmod 777 /data/local/tmp/save_fps", 0);
     Executecmd.ExecuteCommandSync("adb install -r chinpower.apk", 0);
 }
Beispiel #5
0
        public override double getData(string package)
        {
            double memdata = 0;
            string meminfo;

            if (package == "system_server")
            {
                package = "system";
            }
            Executecmd.ExecuteCommandSync("adb shell dumpsys meminfo " + package, out meminfo);
            //Executecmd.ExecuteCommandSync("adb shell procrank", out meminfo);
            //return 100.0;
            //Regex memReg = new Regex(@"\s*(\d*)K\s*\d*K\s*" + package + @"\s*");
            Regex memReg = new Regex(@"\s*TOTAL\s*(\d*)\s*");
            Match memM   = memReg.Match(meminfo);

            if (memM.Groups.Count > 1)
            {
                memdata = Convert.ToDouble(memM.Groups[1].ToString()) / 1024;
            }
            else if (meminfo.Contains(package))
            {
                memdata = 0;
            }
            else if (!meminfo.Contains("PSS"))
            {
                return(-1);
            }

            this.currentData = memdata;

            if (this.datalist.Count != 1)
            {
                this.avgData = 0;
                this.maxData = 0;
            }
            else
            {
                foreach (var value in this.datalist.Values)
                {
                    int count = value.Collection.Count;
                    this.avgData = (this.avgData * count + memdata) / (count + 1);
                }
                if (memdata >= this.maxData)
                {
                    this.maxData = memdata;
                }
            }

            return(memdata);
        }
Beispiel #6
0
        public override double getData(string package)
        {
            double cpudata = 0;
            string cpuinfo;

            Executecmd.ExecuteCommandSync("adb shell top -m 15 -d 1 -n 1", out cpuinfo);

            Regex cpuReg = new Regex(@"\s*(\d*)%.*" + package + @"\s*");
            Match cpuM   = cpuReg.Match(cpuinfo);

            if (cpuM.Groups.Count > 1)
            {
                cpudata = Convert.ToDouble(cpuM.Groups[1].ToString());
            }
            else if (!cpuinfo.Contains("CPU"))
            {
                return(-1);
            }

            if (cpudata > 100)
            {
                return(-1);
            }
            this.currentData = cpudata;

            if (this.datalist.Count != 1)
            {
                this.avgData = 0.0;
                this.maxData = 0.0;
            }
            else
            {
                foreach (var value in this.datalist.Values)
                {
                    int count = value.Collection.Count;
                    this.avgData = (this.avgData * count + cpudata) / (count + 1);
                }

                if (cpudata >= this.maxData)
                {
                    this.maxData = cpudata;
                }
            }

            return(cpudata);
        }
        public override double getData(string package)
        {
            double memdata = 0;
            string meminfo;

            //Executecmd.ExecuteCommandSync("adb shell dumpsys meminfo " + package, out meminfo);
            //Executecmd.ExecuteCommandSync("adb shell procrank", out meminfo);
            Executecmd.ExecuteCommandSync("adb shell cat /proc/meminfo", out meminfo);
            //return 100.0;
            //Regex memReg = new Regex(@"\s*(\d*)K free,\s*(\d*)K buffers,\s*(\d*)K cached");
            Regex memReg = new Regex(@"\s*MemFree:\s*(\d*)\s*kB\s*Buffers:\s*(\d*)\s*kB\s*Cached:\s*(\d*)\skB\s*");
            Match memM   = memReg.Match(meminfo);

            if (memM.Groups.Count > 1)
            {
                memdata = (Convert.ToDouble(memM.Groups[1].ToString()) + Convert.ToDouble(memM.Groups[2].ToString())
                           + Convert.ToDouble(memM.Groups[3].ToString())) / 1024;
            }
            this.currentData = memdata;
            if (this.datalist.Count != 1)
            {
                this.avgData = 0;
                this.minData = 0;
            }
            else
            {
                foreach (var value in this.datalist.Values)
                {
                    int count = value.Collection.Count;
                    this.avgData = (this.avgData * count + memdata) / (count + 1);
                }
                if (memdata <= this.minData || this.minData == 0)
                {
                    this.minData = memdata;
                }
            }

            return(memdata);
        }
        public static Dictionary <string, string> GetPackageInfo()
        {
            String allpkginfo = "";
            String uid        = "1001";
            Dictionary <string, string> pkginfo = new Dictionary <string, string>();

            if (!Connected)
            {
                return(null);
            }

            Executecmd.ExecuteCommandSync("adb shell dumpsys package", out allpkginfo);

            /*
             * FileStream fi = new FileStream(pkgfile, FileMode.Open);
             * StreamReader m_streamReader = new StreamReader(fi);
             * m_streamReader.BaseStream.Seek(0, SeekOrigin.Begin);
             * string strLine = m_streamReader.ReadLine();
             */

            Regex           reg      = new Regex(@".*Package \[(\S+)\].*\s*userId=(\d*)");//Package ['(\S+)']
            MatchCollection mMatches = reg.Matches(allpkginfo);

            foreach (Match m in mMatches)
            {
                if (m.Groups.Count > 2 && Convert.ToInt32(m.Groups[2].ToString()) >= 10000)
                {
                    try
                    {
                        pkginfo.Add(m.Groups[1].ToString(), m.Groups[2].ToString());
                    }
                    catch (Exception)
                    {
                        //eat exception
                    }
                }
            }
            if (pkginfo.Count > 0)
            {
                try
                {
                    pkginfo.Add("system_server", "10000");
                    //pkginfo.Add("com.baidu.bsf.service", "10000");
                    pkginfo.Add("com.baidu.bsf.system", "10000");
                    pkginfo.Add("com.baidu.bsf.system:pushservice_v1", "10000");
                }
                catch
                {
                    //eat exception
                }
            }

            /*
             * while (strLine != null)
             * {
             *  //Console.WriteLine(strLine);
             *  Match m = reg.Match(strLine);
             *  if (m.Groups.Count > 1)
             *  {
             *      string packagename = m.Groups[1].ToString();
             *      Regex uidreg = new Regex(@".*userId=(\d*)");
             *      m_streamReader.ReadLine();
             *      m = uidreg.Match(m_streamReader.ReadLine());
             *      if (m.Groups.Count > 1)
             *      {
             *          uid = m.Groups[1].ToString();
             *          pkginfo.Add(packagename, uid);
             *      }
             *  }
             *  strLine = m_streamReader.ReadLine();
             * }
             * */

            return(pkginfo);
        }
Beispiel #9
0
 private void stopPowerMoniter()
 {
     Executecmd.ExecuteCommandSync("adb shell am force-stop com.android.Chinpower", 0);
 }
Beispiel #10
0
 private void startPowerMoniter()
 {
     Executecmd.ExecuteCommandSync("adb shell logcat -c ", 0);
     Executecmd.ExecuteCommandSync("adb shell am startservice com.android.Chinpower/.service.UMLoggerService", 0);
 }