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

目录
相关文章
|
21天前
|
人工智能 搜索推荐 物联网
Android系统版本演进与未来展望####
本文深入探讨了Android操作系统从诞生至今的发展历程,详细阐述了其关键版本迭代带来的创新特性、用户体验提升及对全球移动生态系统的影响。通过对Android历史版本的回顾与分析,本文旨在揭示其成功背后的驱动力,并展望未来Android可能的发展趋势与面临的挑战,为读者呈现一个既全面又具深度的技术视角。 ####
|
19天前
|
IDE Java 开发工具
移动应用与系统:探索Android开发之旅
在这篇文章中,我们将深入探讨Android开发的各个方面,从基础知识到高级技术。我们将通过代码示例和案例分析,帮助读者更好地理解和掌握Android开发。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和技巧。让我们一起开启Android开发的旅程吧!
|
7天前
|
监控 Java Android开发
深入探索Android系统的内存管理机制
本文旨在全面解析Android系统的内存管理机制,包括其工作原理、常见问题及其解决方案。通过对Android内存模型的深入分析,本文将帮助开发者更好地理解内存分配、回收以及优化策略,从而提高应用性能和用户体验。
|
8天前
|
存储 安全 Android开发
探索Android系统的最新安全特性
在数字时代,智能手机已成为我们生活中不可或缺的一部分。随着技术的不断进步,手机操作系统的安全性也越来越受到重视。本文将深入探讨Android系统最新的安全特性,包括其设计理念、实施方式以及对用户的影响。通过分析这些安全措施如何保护用户免受恶意软件和网络攻击的威胁,我们希望为读者提供对Android安全性的全面了解。
|
2月前
|
缓存 Java Shell
Android 系统缓存扫描与清理方法分析
Android 系统缓存从原理探索到实现。
67 15
Android 系统缓存扫描与清理方法分析
|
22天前
|
监控 Java Android开发
深入探讨Android系统的内存管理机制
本文将深入分析Android系统的内存管理机制,包括其内存分配、回收策略以及常见的内存泄漏问题。通过对这些方面的详细讨论,读者可以更好地理解Android系统如何高效地管理内存资源,从而提高应用程序的性能和稳定性。
54 16
|
14天前
|
安全 Android开发 iOS开发
深入探讨Android与iOS系统的差异及未来发展趋势
本文旨在深入分析Android和iOS两大移动操作系统的核心技术差异、用户体验以及各自的市场表现,进一步探讨它们在未来技术革新中可能的发展方向。通过对比两者的开放性、安全性、生态系统等方面,本文揭示了两大系统在移动设备市场中的竞争态势和潜在变革。
|
1月前
|
算法 JavaScript Android开发
|
1月前
|
安全 搜索推荐 Android开发
揭秘安卓与iOS系统的差异:技术深度对比
【10月更文挑战第27天】 本文深入探讨了安卓(Android)与iOS两大移动操作系统的技术特点和用户体验差异。通过对比两者的系统架构、应用生态、用户界面、安全性等方面,揭示了为何这两种系统能够在市场中各占一席之地,并为用户提供不同的选择。文章旨在为读者提供一个全面的视角,理解两种系统的优势与局限,从而更好地根据自己的需求做出选择。
80 2
|
2月前
|
安全 搜索推荐 Android开发
深入探索安卓与iOS系统的差异及其对用户体验的影响
在当今的智能手机市场中,安卓和iOS是两大主流操作系统。它们各自拥有独特的特性和优势,为用户提供了不同的使用体验。本文将深入探讨安卓与iOS系统之间的主要差异,包括它们的设计理念、用户界面、应用生态以及安全性等方面,并分析这些差异如何影响用户的使用体验。