Android获取系统基本信息

15 篇文章 0 订阅

1、CPU频率,CPU信息:/proc/cpuinfo和/proc/stat 

通过读取文件/proc/cpuinfo系统CPU的类型等多种信息。

读取/proc/stat 所有CPU活动的信息来计算CPU使用率

 

下面我们就来讲讲如何通过代码来获取CPU频率:

package com.orange.cpu;

 

import java.io.BufferedReader;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.IOException;

import java.io.InputStream;

 

public class CpuManager {

 

        // 获取CPU最大频率(单位KHZ

     // "/system/bin/cat" 命令行

     // "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq" 存储最大频率的文件的路径

        public static String getMaxCpuFreq() {

                String result = "";

                ProcessBuilder cmd;

                try {

                        String[] args = { "/system/bin/cat",

                                        "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq" };

                        cmd = new ProcessBuilder(args);

                        Process process = cmd.start();

                        InputStream in = process.getInputStream();

                        byte[] re = new byte[24];

                        while (in.read(re) != -1) {

                                result = result + new String(re);

                        }

                        in.close();

                } catch (IOException ex) {

                        ex.printStackTrace();

                        result = "N/A";

                }

                return result.trim();

        }

 

         // 获取CPU最小频率(单位KHZ

        public static String getMinCpuFreq() {

                String result = "";

                ProcessBuilder cmd;

                try {

                        String[] args = { "/system/bin/cat",

                                        "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq" };

                        cmd = new ProcessBuilder(args);

                        Process process = cmd.start();

                        InputStream in = process.getInputStream();

                        byte[] re = new byte[24];

                        while (in.read(re) != -1) {

                                result = result + new String(re);

                        }

                        in.close();

                } catch (IOException ex) {

                        ex.printStackTrace();

                        result = "N/A";

                }

                return result.trim();

        }

 

         // 实时获取CPU当前频率(单位KHZ

        public static String getCurCpuFreq() {

                String result = "N/A";

                try {

                        FileReader fr = new FileReader(

                                        "/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq");

                        BufferedReader br = new BufferedReader(fr);

                        String text = br.readLine();

                        result = text.trim();

                } catch (FileNotFoundException e) {

                        e.printStackTrace();

                } catch (IOException e) {

                        e.printStackTrace();

                }

                return result;

        }

 

        // 获取CPU名字

        public static String getCpuName() {

                try {

                        FileReader fr = new FileReader("/proc/cpuinfo");

                        BufferedReader br = new BufferedReader(fr);

                        String text = br.readLine();

                        String[] array = text.split(":\\s+", 2);

                        for (int i = 0; i < array.length; i++) {

                        }

                        return array[1];

                } catch (FileNotFoundException e) {

                        e.printStackTrace();

                } catch (IOException e) {

                        e.printStackTrace();

                }

                return null;

        }

}

 

2、内存:/proc/meminfo

public  void  getTotalMemory() {  
         String str1 =  "/proc/meminfo" ;  
         String str2= "" ;  
         try  {  
             FileReader fr =  new  FileReader(str1);  
             BufferedReader localBufferedReader =  new  BufferedReader(fr,  8192 );  
             while  ((str2 = localBufferedReader.readLine()) !=  null ) {  
                 Log.i(TAG,  "---"  + str2);  
             }  
         catch  (IOException e) {  
         }  
     }  

3、Rom大小

public  long [] getRomMemroy() {  
         long [] romInfo =  new  long [ 2 ];  
         //Total rom memory  
         romInfo[ 0 ] = getTotalInternalMemorySize();  
   
         //Available rom memory  
         File path = Environment.getDataDirectory();  
         StatFs stat =  new  StatFs(path.getPath());  
         long  blockSize = stat.getBlockSize();  
         long  availableBlocks = stat.getAvailableBlocks();  
         romInfo[ 1 ] = blockSize * availableBlocks;  
         getVersion();  
         return  romInfo;  
     }  
   
     public  long  getTotalInternalMemorySize() {  
         File path = Environment.getDataDirectory();  
         StatFs stat =  new  StatFs(path.getPath());  
         long  blockSize = stat.getBlockSize();  
         long  totalBlocks = stat.getBlockCount();  
         return  totalBlocks * blockSize;  
     }  

4、sdCard大小

public  long [] getSDCardMemory() {  
         long [] sdCardInfo= new  long [ 2 ];  
         String state = Environment.getExternalStorageState();  
         if  (Environment.MEDIA_MOUNTED.equals(state)) {  
             File sdcardDir = Environment.getExternalStorageDirectory();  
             StatFs sf =  new  StatFs(sdcardDir.getPath());  
             long  bSize = sf.getBlockSize();  
             long  bCount = sf.getBlockCount();  
             long  availBlocks = sf.getAvailableBlocks();  
   
             sdCardInfo[ 0 ] = bSize * bCount; //总大小  
             sdCardInfo[ 1 ] = bSize * availBlocks; //可用大小  
         }  
         return  sdCardInfo;  
     }  

   

5、电池电量 

private  BroadcastReceiver batteryReceiver= new  BroadcastReceiver(){ 
 
         @Override 
         public  void  onReceive(Context context, Intent intent) { 
             int  level = intent.getIntExtra( "level" , 0 ); 
             //  level加%就是当前电量了 
    
     }; 
registerReceiver(batteryReceiver, new  IntentFilter(Intent.ACTION_BATTERY_CHANGED)); 

6、系统的版本信息

public  String[] getVersion(){  
     String[] version={ "null" , "null" , "null" , "null" };  
     String str1 =  "/proc/version" ;  
     String str2;  
     String[] arrayOfString;  
     try  {  
         FileReader localFileReader =  new  FileReader(str1);  
         BufferedReader localBufferedReader =  new  BufferedReader(  
                 localFileReader,  8192 );  
         str2 = localBufferedReader.readLine();  
         arrayOfString = str2.split( "\\s+" );  
         version[ 0 ]=arrayOfString[ 2 ]; //KernelVersion  
         localBufferedReader.close();  
     catch  (IOException e) {  
     }  
     version[ 1 ] = Build.VERSION.RELEASE; // firmware version  
     version[ 2 ]=Build.MODEL; //model  
     version[ 3 ]=Build.DISPLAY; //system version  
     return  version;  
}  

7、mac地址和开机时间

public  String[] getOtherInfo(){  
     String[] other={ "null" , "null" };  
        WifiManager wifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);  
        WifiInfo wifiInfo = wifiManager.getConnectionInfo();  
        if (wifiInfo.getMacAddress()!= null ){  
         other[ 0 ]=wifiInfo.getMacAddress();  
     else  {  
         other[ 0 ] =  "Fail" ;  
     }  
     other[ 1 ] = getTimes();  
        return  other;  
}  
private  String getTimes() {  
     long  ut = SystemClock.elapsedRealtime() /  1000 ;  
     if  (ut ==  0 ) {  
         ut =  1 ;  
     }  
     int  m = ( int ) ((ut /  60 ) %  60 );  
     int  h = ( int ) ((ut /  3600 ));  
     return  h +  " "  + mContext.getString(R.string.info_times_hour) + m +  " "  
             + mContext.getString(R.string.info_times_minute);  
}  

 

 

部分内容转载自:

http://gqdy365.iteye.com/blog/1066113

http://blog.csdn.net/chuxing/article/details/7571547

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值