转载自http://blog.sina.com.cn/s/blog_4d58929f0100wgfg.html

packagecom.test;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileReader;importjava.io.IOException;importjava.util.ArrayList;importjava.util.Iterator;importjava.util.List;importandroid.app.ActivityManager;importandroid.app.ActivityManager.MemoryInfo;importandroid.app.ActivityManager.RunningAppProcessInfo;importandroid.app.ListActivity;importandroid.content.BroadcastReceiver;importandroid.content.Context;importandroid.content.Intent;importandroid.content.IntentFilter;importandroid.content.pm.ApplicationInfo;importandroid.content.pm.PackageManager;importandroid.net.wifi.WifiInfo;importandroid.net.wifi.WifiManager;importandroid.os.Bundle;importandroid.os.Environment;importandroid.os.StatFs;importandroid.os.SystemClock;importandroid.text.format.Formatter;importandroid.util.Log;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.BaseAdapter;importandroid.widget.ImageView;importandroid.widget.ListView;importandroid.widget.TextView;importandroid.widget.Toast;publicclassActivity01extendsListActivity{privateListViewlistV;//TextViewtextV1;//TextViewtextV2;privateActivityManageram;privateList<ApplicationInfo>allAppList;PackageUtilpackageUtil;ProcessMemoryUtilprocessMemoryUtil=newProcessMemoryUtil();String[]list=newString[30];//为进程获取基本的信息privatestaticfinalintINDEX_FIRST=-1;privatestaticfinalintINDEX_CPU=INDEX_FIRST+2;privatestaticfinalintINDEX_RSS=INDEX_FIRST+6;privatestaticfinalintINDEX_NAME=INDEX_FIRST+9;privatestaticfinalintLength_ProcStat=9;privateList<String[]>PMUList=null;privateStringgetProcessRunningInfo(){Log.i("fetch_process_info","start....");Stringresult=null;CMDExecutecmdexe=newCMDExecute();try{String[]args={"/system/bin/top","-n","1"};result=cmdexe.run(args,"/system/bin/");}catch(IOExceptionex){Log.i("fetch_process_info","ex="+ex.toString());}returnresult;}privateintparseProcessRunningInfo(StringinfoString){StringtempString="";booleanbIsProcInfo=false;String[]rows=null;String[]columns=null;rows=infoString.split("[\n]+");//使用正则表达式分割字符串for(inti=0;i<rows.length;i++){tempString=rows[i];if(tempString.indexOf("PID")==-1){if(bIsProcInfo==true){tempString=tempString.trim();columns=tempString.split("[]+");if(columns.length==Length_ProcStat){PMUList.add(columns);}}}else{bIsProcInfo=true;}}returnPMUList.size();}//初始化所有进程的CPU和内存列表,用于检索每个进程的信息publicvoidinitPMUtil(){PMUList=newArrayList<String[]>();//StringresultString=getProcessRunningInfo();//Log.i("listsize:",parseProcessRunningInfo(resultString)+"");}//根据进程名获取CPU和内存信息publicStringgetMemInfoByName(StringprocName){Stringresult="";StringtempString="";for(Iterator<String[]>iterator=PMUList.iterator();iterator.hasNext();){String[]item=(String[])iterator.next();tempString=item[INDEX_NAME];if(tempString!=null&&tempString.equals(procName)){result="CPU:"+item[INDEX_CPU]+"内存:"+item[INDEX_RSS];break;}}returnresult;}publicclassListAdapterextendsBaseAdapter{List<Programe>list=newArrayList<Programe>();LayoutInflaterla;Contextcontext;publicListAdapter(List<Programe>list,Contextcontext){this.list=list;this.context=context;}@OverridepublicintgetCount(){//TODOAuto-generatedmethodstubreturnlist.size();}@OverridepublicObjectgetItem(intposition){//TODOAuto-generatedmethodstubreturnlist.get(position);}@OverridepubliclonggetItemId(intposition){//TODOAuto-generatedmethodstubreturnposition;}@OverridepublicViewgetView(intposition,ViewconvertView,ViewGroupparent){ViewHolderholder;if(convertView==null){la=LayoutInflater.from(context);convertView=la.inflate(R.layout.list_item,null);holder=newViewHolder();holder.imgage=(ImageView)convertView.findViewById(R.id.image);holder.text=(TextView)convertView.findViewById(R.id.text);holder.text2=(TextView)convertView.findViewById(R.id.text2);holder.text3=(TextView)convertView.findViewById(R.id.text3);holder.text4=(TextView)convertView.findViewById(R.id.text4);convertView.setTag(holder);}else{holder=(ViewHolder)convertView.getTag();}finalProgramepr=(Programe)list.get(position);//设置图标holder.imgage.setImageDrawable(pr.getIcon());//设置程序名holder.text.setText(pr.getName());//CPUholder.text2.setText(pr.getCpumen());holder.text3.setText(pr.getCpu());holder.text4.setText(pr.getMem());returnconvertView;}}classViewHolder{TextViewtext,text2,text3,text4;ImageViewimgage;}publicList<Programe>getRunningProcess(){PackageUtilpi=newPackageUtil(this);ActivityManageram=(ActivityManager)getSystemService(ACTIVITY_SERVICE);//获取正在运行的应用List<RunningAppProcessInfo>run=am.getRunningAppProcesses();//获取包管理器,在这里主要通过包名获取程序的图标和程序名PackageManagerpm=this.getPackageManager();List<Programe>list=newArrayList<Programe>();for(RunningAppProcessInfora:run){//这里主要是过滤系统的应用和电话应用,当然你也可以把它注释掉。if(ra.processName.equals("system")||ra.processName.equals("com.android.phone")||ra.processName.length()==0||ra.processName.equals("com.asiainfo.android:remote")||ra.processName.equals("com.google.android.apps.maps:FriendService")||ra.processName.equals("com.z4mod.z4root:three")||ra.processName.equals("com.google.android.apps.maps:driveabout")){continue;}Programepr=newPrograme();Log.i("error(ra.processName):",ra.processName);Log.i("qwe",ra.processName);//pr.setIcon(pi.getInfo(ra.processName).loadIcon(pm));Log.i("whathappened?",pi.getInfo(ra.processName).loadLabel(pm).toString());pr.setName("--"+pi.getInfo(ra.processName).loadLabel(pm).toString()+"--");pr.setCpumen(processMemoryUtil.getMemInfoByName(ra.processName));pr.setIcon(pi.getInfo(ra.processName).loadIcon(pm));pr.setMem("内存:"+getPidMemory(ra.pid).substring(7,getPidMemory(ra.pid).length()).trim());pr.setCpu("CPU:"+getPidCpu(ra.pid));System.out.println(pi.getInfo(ra.processName).loadLabel(pm).toString()+"(pid="+ra.pid+"):"+pr.getCpu()+"VmRSS:"+pr.getMem()+"CPU="+getPidCpu(ra.pid));list.add(pr);}returnlist;}//获得手机当前任务列表publicvoidgetTask(){//try{am=(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);//arylistTask=newArrayList<String>();List<ActivityManager.RunningTaskInfo>rTask=am.getRunningTasks(30);inti=1;StringtaskName="com.test";for(ActivityManager.RunningTaskInfoamTask:rTask){taskName=amTask.baseActivity.getPackageName();//list[i]=taskName;//Log.i("list[i]=",taskName);//arylistTask.add((i++)+":"+taskName+"(ID="+amTask.id+")"+processMemoryUtil.getMemInfoByName(taskName));//Log.i("cpu,内存:",processMemoryUtil.getMemInfoByName(taskName));}}//显示消息publicvoidtextToast(Stringstr,booleanisLong){if(isLong==true){Toast.makeText(this,str,Toast.LENGTH_LONG).show();}else{Toast.makeText(this,str,Toast.LENGTH_SHORT).show();}}//获取手机mac地址publicStringgetMacInfo(){Stringother="adr=null";WifiManagerwifiManager=(WifiManager)getSystemService(Context.WIFI_SERVICE);WifiInfowifiInfo=wifiManager.getConnectionInfo();if(wifiInfo.getMacAddress()!=null)other=wifiInfo.getMacAddress();returnother;}//获得已开机时间privateStringgetTimes(){longut=SystemClock.elapsedRealtime()/1000;if(ut==0){ut=1;}intm=(int)((ut/60)%60);inth=(int)((ut/3600));return"您已经开机"+h+"小时"+m+"分钟";}//获得手机电量privateBroadcastReceiverbatteryReceiver=newBroadcastReceiver(){@OverridepublicvoidonReceive(Contextcontext,Intentintent){intlevel=intent.getIntExtra("level",0);Log.i("手机电量:",level+"%");}};//ROM容量publiclong[]getRomMemroy(){long[]romInfo=newlong[2];//TotalrommemoryromInfo[0]=getTotalInternalMemorySize();//AvailablerommemoryFilepath=Environment.getDataDirectory();StatFsstat=newStatFs(path.getPath());longblockSize=stat.getBlockSize();longavailableBlocks=stat.getAvailableBlocks();romInfo[1]=blockSize*availableBlocks;Log.i("ROM总容量:",romInfo[0]/(1024)+"KB");Log.i("ROM可用容量:",romInfo[1]/(1024)+"KB");//getVersion();returnromInfo;}publiclonggetTotalInternalMemorySize(){Filepath=Environment.getDataDirectory();StatFsstat=newStatFs(path.getPath());longblockSize=stat.getBlockSize();longtotalBlocks=stat.getBlockCount();returntotalBlocks*blockSize;}//sd卡容量publiclong[]getSDCardMemory(){long[]sdCardInfo=newlong[2];Stringstate=Environment.getExternalStorageState();if(Environment.MEDIA_MOUNTED.equals(state)){FilesdcardDir=Environment.getExternalStorageDirectory();StatFssf=newStatFs(sdcardDir.getPath());longbSize=sf.getBlockSize();longbCount=sf.getBlockCount();longavailBlocks=sf.getAvailableBlocks();sdCardInfo[0]=bSize*bCount;//总大小Log.i("SD卡总容量:",sdCardInfo[0]/(1024)+"KB");sdCardInfo[1]=bSize*availBlocks;//可用大小Log.i("SD卡可用容量:",sdCardInfo[1]/(1024)+"KB");}returnsdCardInfo;}//获取android当前可用内存大小privateStringgetAvailMemory(){//mi.availMem;当前系统的可用内存ActivityManageram=(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);MemoryInfomi=newMemoryInfo();am.getMemoryInfo(mi);returnFormatter.formatFileSize(this.getBaseContext(),mi.availMem);//将获取的内存大小规格化}//指定进程占用内存publicStringgetPidMemory(intpid){Stringstr1="/proc/"+pid+"/status";Stringstr2="";try{FileReaderfr=newFileReader(str1);BufferedReaderlocalBufferedReader=newBufferedReader(fr,8192);while((str2=localBufferedReader.readLine())!=null){if(str2.indexOf("VmRSS")>=0){//Log.i("进程占用内存:","---"+str2);return""+str2;}}}catch(IOExceptione){}returnstr2;}//指定进程占用CPUpublicStringgetPidCpu(intpid){longsingleCpu1=getSingleCpuTime(pid);longtotalCpu1=getTotalCpuTime();longsingleCpu2=getSingleCpuTime(pid);longtotalCpu2=getTotalCpuTime();longxtotalCpu=totalCpu2-totalCpu1;longxsingleCpu=singleCpu2-singleCpu1;if(xtotalCpu>0&&xsingleCpu>0){if(100*xsingleCpu/xtotalCpu<100)return100*xsingleCpu/xtotalCpu+"%";elsereturn"100%";}elsereturn"0%";}//获取CPU时间差使用量publiclonggetTotalCpuTime(){Stringstr1="/proc/stat";Stringstr2="";longsum=0;try{FileReaderfr=newFileReader(str1);BufferedReaderlocalBufferedReader=newBufferedReader(fr,8192);while((str2=localBufferedReader.readLine())!=null){if(str2.indexOf("cpu")>=0){String[]temp=str2.split("");for(intx=2;x<temp.length;x++){sum+=Long.valueOf(temp[x]).longValue();}returnsum;}}}catch(IOExceptione){}returnsum;}//获取单个进程CPU时间差使用量publiclonggetSingleCpuTime(intpid){Stringstr1="/proc/"+pid+"/stat";Stringstr2="";longsum=0;try{FileReaderfr=newFileReader(str1);BufferedReaderlocalBufferedReader=newBufferedReader(fr,8192);while((str2=localBufferedReader.readLine())!=null){String[]temp=str2.split("");for(intx=13;x<17;x++){sum+=Long.valueOf(temp[x]).longValue();}returnsum;}}catch(IOExceptione){}returnsum;}//获得系统总内存privateStringgetTotalMemory(){Stringstr1="/proc/meminfo";//系统内存信息文件Stringstr2;String[]arrayOfString;longinitial_memory=0;try{FileReaderlocalFileReader=newFileReader(str1);BufferedReaderlocalBufferedReader=newBufferedReader(localFileReader,8192);str2=localBufferedReader.readLine();//读取meminfo第一行,系统总内存大小arrayOfString=str2.split("\\s+");for(Stringnum:arrayOfString){}initial_memory=Integer.valueOf(arrayOfString[1]).intValue()*1024;//获得系统总内存,单位是KB,乘以1024转换为BytelocalBufferedReader.close();}catch(IOExceptione){}returnFormatter.formatFileSize(getBaseContext(),initial_memory);//Byte转换为KB或者MB,内存大小规格化}@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);listV=(ListView)findViewById(R.id.list);setTitle("总内存:"+this.getTotalMemory()+"可用内存:"+this.getAvailMemory());registerReceiver(batteryReceiver,newIntentFilter(Intent.ACTION_BATTERY_CHANGED));//注册电量监控processMemoryUtil.initPMUtil();Log.i("开机时间:",getTimes());this.getTask();//requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);getSDCardMemory();getRomMemroy();List<Programe>list=getRunningProcess();ListAdapteradapter=newListAdapter(list,this);//setContentView(R.layout.list_item);getListView().setAdapter(adapter);}}

更多相关文章

  1. 获取android手机移动设备号
  2. android, contentProvider 获取通讯录
  3. android通过google api获取天气信息示例
  4. Android当前时间的获取
  5. Android(安卓)开发常用代码片段
  6. android c++ 打印调用堆栈
  7. Android(安卓)GPS获得经纬度并得到该坐标精确地址
  8. android如何往SDCard中存取图片
  9. 【Android】判断某个AP是否在系统中存在(PackageManager与Package

随机推荐

  1. Android之十三刮刮卡中奖功能
  2. 开机不锁屏
  3. Android API 中文(13) —— ToggleButton
  4. AndroidManifest.xml文件详解
  5. UI布局相关
  6. android 指纹
  7. 最新android版本对应的API等级
  8. 环形ProgressBar特效
  9. ListView 圆角
  10. Handler工作机制【简】——学习笔记