转载自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 x86 4.4-r5 分支修改笔记——系统定制
  2. Android进程回收
  3. Android调用C++实现共享内存(Native层)
  4. Android 进程间通信 实例分析
  5. Android——使用 Broastcast 实现进程间通讯
  6. Android Service 系统服务
  7. Android == 在Android系统上运行JAVA程序
  8. Android系统信息获取 之九:TelephonyManager类

随机推荐

  1. ProgressBar属性小结(转载)
  2. android 布局简括
  3. Android 异步加载图片
  4. Android中attr自定义属性详解
  5. android 注册、登录实现程序
  6. Failed to fetch URL https://dl-ssl.goo
  7. 2、Android应用程序基本特性
  8. android 7.0 ,6.0本地多语言切换失效
  9. 小技巧及总结
  10. Android简单注册表单