Android获取系统基本信息

简介:

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

目录
相关文章
|
2天前
|
Shell Android开发
Android系统 adb shell push/pull 禁止特定文件
Android系统 adb shell push/pull 禁止特定文件
15 1
|
30天前
|
搜索推荐 Android开发 iOS开发
安卓与iOS系统的用户界面设计对比分析
本文通过对安卓和iOS两大操作系统的用户界面设计进行对比分析,探讨它们在设计理念、交互方式、视觉风格等方面的差异及各自特点,旨在帮助读者更好地理解和评估不同系统的用户体验。
20 1
|
2天前
|
存储 Java Android开发
Android系统 设置第三方应用为默认Launcher实现和原理分析
Android系统 设置第三方应用为默认Launcher实现和原理分析
16 0
|
2天前
|
Android开发
Android构建系统:Android.mk(2)函数详解
Android构建系统:Android.mk(2)函数详解
12 1
|
2天前
|
存储 Java API
Android系统 文件访问权限笔记
Android系统 文件访问权限笔记
31 1
|
2天前
|
移动开发 Java Unix
Android系统 自动加载自定义JAR文件
Android系统 自动加载自定义JAR文件
19 1
|
2天前
|
Shell Android开发 开发者
Android系统 自定义动态修改init.custom.rc
Android系统 自定义动态修改init.custom.rc
22 0
|
2天前
|
测试技术 Android开发 开发者
RK3568 Android系统客制化动态替换ro任意属性
RK3568 Android系统客制化动态替换ro任意属性
14 1
|
2天前
|
存储 Linux Android开发
RK3568 Android/Linux 系统动态更换 U-Boot/Kernel Logo
RK3568 Android/Linux 系统动态更换 U-Boot/Kernel Logo
17 0
|
2天前
|
存储 缓存 安全
Android系统 应用存储路径与权限
Android系统 应用存储路径与权限
6 0
Android系统 应用存储路径与权限