Android 从本质上说是 Linux,因此可以把 Android 当作 Linux 来访问,从而达到访问系统信息的目的:

 

proc 文件系统

proc 文件系统是Linux内核开发人员为了减少系统调用的复杂性而引入的一种特殊文件系统。

有了这种文件系统,用户只需要像查看文本文件一样就能够读取内核中的各种数据,给开发人员和系统管理员带来很大的便利。

很多Linux常用命令都是依靠分析/proc目录下的文件来运行的,比如 ls,ps 等。

 

1、读取CPU和内存等信息。

分析 /proc/cpuinfo 这个文件,就能获得 CPU信息。
adb shell
# cat /proc/cpuinfo
 
分析 /proc/meminfo ,就能获得内存信息
adb shell
# cat /proc/meminfo
 04    MemTotal:          94096 kB
 05    MemFree:            1684 kB
 06    Buffers:              16 kB
 07    Cached:            27160 kB
 08    SwapCached:            0 kB
 09    Active:            35392 kB
 10    Inactive:          44180 kB
 11    Active(anon):      26540 kB
 12    Inactive(anon):    28244 kB
 13    Active(file):       8852 kB
 14    Inactive(file):    15936 kB
 15    Unevictable:         280 kB
 16    Mlocked:               0 kB
 17    SwapTotal:             0 kB
 18    SwapFree:              0 kB
 19    Dirty:                 0 kB
 20    Writeback:             0 kB
 21    AnonPages:         52688 kB
 22    Mapped:            17960 kB
 23    Slab:               3816 kB
 24    SReclaimable:        936 kB
 25    SUnreclaim:         2880 kB
 26    PageTables:         5260 kB
 27    NFS_Unstable:          0 kB
 28    Bounce:                0 kB
 29    WritebackTmp:          0 kB
 30    CommitLimit:       47048 kB
 31    Committed_AS:    1483784 kB
 32    VmallocTotal:     876544 kB
 33    VmallocUsed:       15456 kB
 34    VmallocChunk:     829444 kB 
MemTotal:  所有可用RAM大小。
 MemFree:  LowFree与HighFree的总和,被系统留着未使用的内存。
 Buffers:      用来给文件做缓冲大小。
 Cached:    被高速缓冲存储器(cache memory)用的内存的大小(等于diskcache minus SwapCache)。
 SwapCached:    被高速缓冲存储器(cache memory)用的交换空间的大小。已经被交换出来的内存,仍然被存放在swapfile中,用来在需要的时候很快的被替换而不需要再次打开I/O端口。
 Active:     在活跃使用中的缓冲或高速缓冲存储器页面文件的大小,除非非常必要,否则不会被移作他用。
 Inactive:  在不经常使用中的缓冲或高速缓冲存储器页面文件的大小,可能被用于其他途径。
 SwapTotal:   交换空间的总大小。
 SwapFree:   未被使用交换空间的大小。
 Dirty:     等待被写回到磁盘的内存大小。
 Writeback:        正在被写回到磁盘的内存大小。
 AnonPages:  未映射页的内存大小。
 Mapped:    设备和文件等映射的大小。
 Slab:           内核数据结构缓存的大小,可以减少申请和释放内存带来的消耗。
 SReclaimable:  可收回Slab的大小。
 SUnreclaim:   不可收回Slab的大小(SUnreclaim+SReclaimable=Slab)。
 PageTables:  管理内存分页页面的索引表的大小。
 NFS_Unstable:   不稳定页表的大小。 
注:用 Android SDK 的 ActivityManager.getMemoryInfo(ActivityManager.MemoryInfo) 也能获得当前可用内存的大小
 
// 下面是用Android SDK 的方法
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
 MemoryInfo mi = new MemoryInfo();
 am.getMemoryInfo(mi); //mi.availMem; 当前系统的可用内存
 return Formatter.formatFileSize(getBaseContext(), mi.availMem);// 将获取的内存大小规格化  
//下面是分析 /proc/meminfo 的方法:
String str1 = "/proc/meminfo";// 系统内存信息文件
 String str2;        String[] arrayOfString;
 long initial_memory = 0;
     try {
         FileReader localFileReader = new FileReader(str1);
         BufferedReader localBufferedReader = new BufferedReader(    localFileReader, 8192);
         str2 = localBufferedReader.readLine();// 读取meminfo第一行,系统总内存大小
         arrayOfString = str2.split("//s+");
         for (String num : arrayOfString) {
             Log.i(str2, num + "/t");
         }

         initial_memory = Integer.valueOf(arrayOfString[1]).intValue() * 1024;// 获得系统总内存,单位是KB,乘以1024转换为Byte    

         localBufferedReader.close();
     } catch (IOException e) {       }

     return Formatter.formatFileSize(getBaseContext(), initial_memory);// Byte转换为KB或者MB,内存大小规格化  }

你如果使用Linux,可以看到 /proc目录还有很多文件,你可以用 man proc 命令来学习 proc 文件系统。