Android自动化测试-自动获取cpu和内存信息
2015-07-02 18:02
309 查看
CpuInfo.java
MemInfo.java
package com.dtest; import java.io.BufferedReader; import java.io.FileWriter; import java.io.InputStreamReader; class CpuInfo{ public static String getcpu(String packageName) throws Exception{ String str = null; try { Runtime runtime = Runtime.getRuntime(); Process proc = runtime.exec("adb shell dumpsys cpuinfo | grep " + packageName); try{ //如果执行时非正常终止,则打印进程退出的返回值,waitFor()=0 为正常终止. //waitFor()方法将导致当前的线程等待.如果必要的话.直到由该Process对象表示的进程已经终止.此方法将立即返回,如果子进程已经终止. //如果子进程尚未终止,则调用线程将被阻塞,直到子进程退出. if(proc.waitFor() != 0){ System.err.println("exit value = " + proc.exitValue()); } //创建一个BufferedReader对象,且里边装的内容为执行proc返回的值(将proc的返回值作为输入流) BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream())); //创建一个空StringBuffer对象,用来装输出内容 StringBuffer sr = new StringBuffer(); String line = null; //逐行读取返回输入流内容并添加到stringbuffer对象中,每次添加都进行换行. while((line = br.readLine()) != null){ sr.append(line + "\n"); } String str1 = sr.toString(); System.out.println(str1); /* String str2 = str1.substring(str1.indexOf(packageName),str1.indexOf(packageName) + 28); str = str2.substring(18,23);*/ FileWriter fw = new FileWriter("d:\\cpuinfo.txt",true); fw.flush(); fw.write(str1); //fw.write("==========================" + "\n"); fw.close(); }catch(InterruptedException e){ System.out.println(e); }finally{ try{ proc.destroy(); }catch(Exception e2){ //System.out.println(e2); } } } catch (Exception StringIndexOutOfBoundsExcepiton) { // TODO Auto-generated catch block System.out.println("请检查设备是否连接"); } return str; } } /* public static double Cpu(String packageName) throws IOException{ double Cpu = 0; try{ Runtime runtime = Runtime.getRuntime(); Process proc = runtime.exec("adb shell top -n 5 | grep " + packageName); try{ //如果执行时非正常终止,则打印进程退出的返回值,waitFor()=0 为正常终止. //waitFor()方法将导致当前的线程等待.如果必要的话.直到由该Process对象表示的进程已经终止.此方法将立即返回,如果子进程已经终止. //如果子进程尚未终止,则调用线程将被阻塞,直到子进程退出. if(proc.waitFor() != 0){ System.err.println("exit value = " + proc.exitValue()); } //创建一个BufferedReader对象,且里边装的内容为执行proc返回的值(将proc的返回值作为输入流) BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream())); //创建一个空StringBuffer对象,用来装输出内容 StringBuffer stringBuffer = new StringBuffer(); String line = null; //逐行读取返回输入流内容并添加到stringbuffer对象中,每次添加都进行换行. while((line = br.readLine()) != null){ stringBuffer.append(line + "\n"); } String str1 = stringBuffer.toString(); System.out.println(str1); //BufferedReader reader = new BufferedReader(new FileReader("d:\\a.csv")); FileWriter fw = new FileWriter("d:\\cpuinfo.text",true); fw.flush(); fw.write(str1); fw.close(); String str3 = str1.substring(str1.indexOf(packageName)-43,str1.indexOf(packageName)); String cpu = str3.substring(0,4); cpu =cpu.trim(); Cpu = Double.parseDouble(cpu); }catch(InterruptedException e){ System.err.println(e); }finally{ try{ proc.destroy(); }catch(Exception e2){ //System.out.println("test"); } } }catch(Exception StringIndexOutOfBoundsExcepiton){ //System.out.println("请检查设备是否连接"); } return Cpu; } */
MemInfo.java
package com.dtest; import java.io.*; import java.lang.StringBuffer ; class MemInfo{ public static String getMemory(String packageName) throws IOException, InterruptedException{ String str = null; try { Runtime runtime = Runtime.getRuntime(); Process proc = runtime.exec("adb shell dumpsys meminfo | grep " + packageName); try{ if(proc.waitFor() != 0){ System.err.println("exit value = " + proc.exitValue()); } BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream())); StringBuffer sf = new StringBuffer(); String line = null; while((line = br.readLine()) != null){ sf.append(line + "\n"); } String str1 = sf.toString(); System.out.println(str1); /* String str2 = str1.substring(str1.indexOf("Objects")-60,str1.indexOf("Objects")); str = str2.substring(0,10); str.trim();*/ FileWriter fw = new FileWriter("d:\\meminfo.txt",true); fw.flush(); fw.write(str1); //fw.write("==========================" + "\n"); fw.close(); }catch(InterruptedException e){ System.out.println(e); }finally{ try{ proc.destroy(); }catch(Exception e2){ System.out.println(e2); } } } catch (Exception StringIndexOutOfBoundsExcepiton) { // TODO Auto-generated catch block System.out.println("请检查设备是否连接"); } return str; } }
相关文章推荐
- Android获取所有存储卡挂载路径
- View onRestoreInstanceState ClassCastException
- activity背景透明的2种方法
- android开发教程21篇(强烈推荐,几乎每一篇都是精华教程)
- Android Studio 简介及导入jar包和第三方开源库的方法
- android4.0以上,利用耳机接听键实现自动接听,部分手机失败原因+解决方法(比如华为P7)
- android 学习笔记 fill_parent、wrap_content和match_parent的区别
- android之EditText输入错误时该怎样提示用户
- Android unit test中通过颜色比对替代肉眼检查
- Android5.0编译问题:No rule to make target 'external/chromium_org/third_party/angle/.git/index',
- Android特效 五种Toast详解
- Android 编程下 Touch 事件的分发和响应机制
- Android 编程下 Touch 事件的分发和响应机制 分类: Android 2015-07-02 17:35 12人阅读 评论(0) 收藏
- Android TabHost布局
- HashMap类的理解
- Android 与 IIS服务器身份验证
- android Toast显示消息的几种方法
- Android 使用自定义字体
- Android:报" Incorrect line ending: found carriage return (\r) without corresponding newline (\n) "解决
- Android之spinner控件的用法