广

android开发

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    解析Android获取系统cpu信息,内存,版本,电量等信息的方法详解

    2018-04-07 07:49:20 次阅读 稿源:互联网
    广告

    Android获取系统cpu信息,内存,版本,电量等信息 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);  

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告