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

时间: 2024-10-31 04:51:02

Android获取系统基本信息的相关文章

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

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.FileNotFound

Android获取系统时间的多种方法

Android中获取系统时间有多种方法,可分为Java中Calendar类获取,java.util.date类实现,还有android中Time实现. 现总结如下: 方法一: void getTime1(){ long time=System.currentTimeMillis();//long now = android.os.SystemClock.uptimeMillis(); SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd

Android获取系统储存以及内存信息的方法(二)

Android获取储存信息以及内存信息可以用adb命令查看. adb查看系统内存信息以及储存信息: 命令:adb shell cat /proc/meminfo 代码: private static final String FILENAME_PROC_MEMINFO = "/proc/meminfo"; /** * 获取手机内存总大小 * @return */ public static String getTotalMemorySize() { try { FileReader f

Android获取系统储存以及内存信息的方法(一)

众所周知,Android的手机上的信息大部分都是可以通过代码获取的,比如说爱奇艺的离线储存功能上有一个最大储存大小/剩余储存大小的功能. 获取SD卡上的储存信息: /** * 获得SD卡总大小 * * @return */ private String getSDTotalSize() { File path = Environment.getExternalStorageDirectory(); StatFs stat = new StatFs(path.getPath()); long bl

Android系统中使用shareuserid获取系统权限的教程_Android

Android会为每个apk进程分配一个单独的空间(比如只能访问/data/data/自己包名下面的文件),一般情况下apk之间是禁止相互访问数据的.通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中.所以默认就是可以互相访问任意数据. 也可以配置成运行成不同的进程, 同时可以访问其他APK的数据目录下的数据库和文件.就像访问本程序的数据一样(使用IPC机制,不同进程之间,比如AIDL). 一.使用同一个shareuserid,多个apk运行到同一

Android获取手机系统版本等信息的方法_Android

本文实例讲述了Android获取手机系统版本等信息的方法.分享给大家供大家参考.具体如下: String phoneInfo = "Product: " + android.os.Build.PRODUCT; phoneInfo += ", CPU_ABI: " + android.os.Build.CPU_ABI; phoneInfo += ", TAGS: " + android.os.Build.TAGS; phoneInfo += &qu

android 写入系统联系人失败

问题描述 android 写入系统联系人失败 请大家看看这个写入为啥会报错啊,刚学习安卓 先谢谢大家 protected void addContacts() { // TODO Auto-generated method stub ContentValues values = new ContentValues(); Uri uri = null; try{ //写入失败需查找原因 values.put(ContactsContract.CommonDataKinds.Phone.DISPLA

sql 获取系统时间的时候怎么获取不到

问题描述 sql 获取系统时间的时候怎么获取不到 获取系统时间,用的DateUtilits.getSystemTime();获取到的时间是null,为什么啊 解决方案 c++ 如何获取系统时间Android获取系统时间linux获取系统当前时间 解决方案二: GETDATE() 解决方案三: SQL Server的话,提供了GETDATE函数,你可以在sql 语句中直接使用 解决方案四: 為啥不用 select sysdate from dual 解决方案五: sql server中 用getd

iOS开发之获取系统相册中的图片与视频教程(内带url转换)_IOS

好些天没写点东西了,最近公司要做新项目,有点小忙.不想我的坚持就此中断,我把我前些天研究的东西拿出来给大家看看. 这次整理的是AssetsLibrary和PhotoKit的使用.本人处女座,有点强迫症,之前写的项目里用的是AssetsLibrary写的调取相册内的媒体文件,但是Xcode总是报警告错误,虽然能够编译并展示效果,但是十几个警告错误挂在那,心里总不是滋味,所以我就研究了一下AssetLibrary和PhotoKit. 在 iOS 8 出现之前,开发者只能使用 AssetsLibrar