一、内存(ram):
android的总内存大小信息存放在系统的/proc/meminfo文件里面,可以通过读取这个文件来获取这些信息:
Java代码
  1. publicvoidgetTotalMemory(){
  2. Stringstr1="/proc/meminfo";
  3. Stringstr2="";
  4. try{
  5. FileReaderfr=newFileReader(str1);
  6. BufferedReaderlocalBufferedReader=newBufferedReader(fr,8192);
  7. while((str2=localBufferedReader.readLine())!=null){
  8. Log.i(TAG,"---"+str2);
  9. }
  10. }catch(IOExceptione){
  11. }
  12. }
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) {}}


运行信息如下:
Java代码
  1. 05-3008:05:14.807:INFO/-SystemInfo-(1519):---MemTotal:204876kB
  2. 05-3008:05:14.807:INFO/-SystemInfo-(1519):---MemFree:4596kB
  3. 05-3008:05:14.807:INFO/-SystemInfo-(1519):---Buffers:16020kB
  4. 05-3008:05:14.807:INFO/-SystemInfo-(1519):---Cached:82508kB
  5. 05-3008:05:14.807:INFO/-SystemInfo-(1519):---SwapCached:64kB
  6. 05-3008:05:14.807:INFO/-SystemInfo-(1519):---Active:137104kB
  7. 05-3008:05:14.807:INFO/-SystemInfo-(1519):---Inactive:41056kB
  8. 05-3008:05:14.807:INFO/-SystemInfo-(1519):---SwapTotal:65528kB
  9. 05-3008:05:14.817:INFO/-SystemInfo-(1519):---SwapFree:65368kB
  10. 05-3008:05:14.817:INFO/-SystemInfo-(1519):---Dirty:88kB
  11. 05-3008:05:14.817:INFO/-SystemInfo-(1519):---Writeback:0kB
  12. 05-3008:05:14.817:INFO/-SystemInfo-(1519):---AnonPages:79672kB
  13. 05-3008:05:14.817:INFO/-SystemInfo-(1519):---Mapped:38296kB
  14. 05-3008:05:14.817:INFO/-SystemInfo-(1519):---Slab:5768kB
  15. 05-3008:05:14.817:INFO/-SystemInfo-(1519):---SReclaimable:1856kB
  16. 05-3008:05:14.827:INFO/-SystemInfo-(1519):---SUnreclaim:3912kB
  17. 05-3008:05:14.827:INFO/-SystemInfo-(1519):---PageTables:8184kB
  18. 05-3008:05:14.827:INFO/-SystemInfo-(1519):---NFS_Unstable:0kB
  19. 05-3008:05:14.827:INFO/-SystemInfo-(1519):---Bounce:0kB
  20. 05-3008:05:14.827:INFO/-SystemInfo-(1519):---CommitLimit:167964kB
  21. 05-3008:05:14.827:INFO/-SystemInfo-(1519):---Committed_AS:11771920kB
  22. 05-3008:05:14.827:INFO/-SystemInfo-(1519):---VmallocTotal:761856kB
  23. 05-3008:05:14.827:INFO/-SystemInfo-(1519):---VmallocUsed:83656kB
  24. 05-3008:05:14.827:INFO/-SystemInfo-(1519):---VmallocChunk:674820kB
05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---MemTotal: 204876 kB05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---MemFree:4596 kB05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---Buffers: 16020 kB05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---Cached:82508 kB05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---SwapCached: 64 kB05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---Active: 137104 kB05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---Inactive:41056 kB05-30 08:05:14.807: INFO/-SystemInfo-(1519): ---SwapTotal: 65528 kB05-30 08:05:14.817: INFO/-SystemInfo-(1519): ---SwapFree:65368 kB05-30 08:05:14.817: INFO/-SystemInfo-(1519): ---Dirty:88 kB05-30 08:05:14.817: INFO/-SystemInfo-(1519): ---Writeback: 0 kB05-30 08:05:14.817: INFO/-SystemInfo-(1519): ---AnonPages: 79672 kB05-30 08:05:14.817: INFO/-SystemInfo-(1519): ---Mapped:38296 kB05-30 08:05:14.817: INFO/-SystemInfo-(1519): ---Slab: 5768 kB05-30 08:05:14.817: INFO/-SystemInfo-(1519): ---SReclaimable: 1856 kB05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---SUnreclaim: 3912 kB05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---PageTables: 8184 kB05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---NFS_Unstable:0 kB05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---Bounce:0 kB05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---CommitLimit:167964 kB05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---Committed_AS: 11771920 kB05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---VmallocTotal: 761856 kB05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---VmallocUsed: 83656 kB05-30 08:05:14.827: INFO/-SystemInfo-(1519): ---VmallocChunk: 674820 kB

第一行是总内存大小(即用户可以使用的ram的大小)!其他各项的介绍大家可以看这儿:
http://bg135.com/android-phones-to-get-the-total-memory-and-available-memory.html

获取当前剩余内存(ram)大小的方法:
Java代码
  1. publiclonggetAvailMemory(){
  2. ActivityManageram=(ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE);
  3. ActivityManager.MemoryInfomi=newActivityManager.MemoryInfo();
  4. am.getMemoryInfo(mi);
  5. returnmi.availMem;
  6. }
public long getAvailMemory() {ActivityManager am = (ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE);ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo();am.getMemoryInfo(mi);return mi.availMem;}


二、Rom大小
Java代码
  1. publiclong[]getRomMemroy(){
  2. long[]romInfo=newlong[2];
  3. //Totalrommemory
  4. romInfo[0]=getTotalInternalMemorySize();
  5. //Availablerommemory
  6. Filepath=Environment.getDataDirectory();
  7. StatFsstat=newStatFs(path.getPath());
  8. longblockSize=stat.getBlockSize();
  9. longavailableBlocks=stat.getAvailableBlocks();
  10. romInfo[1]=blockSize*availableBlocks;
  11. getVersion();
  12. returnromInfo;
  13. }
  14. publiclonggetTotalInternalMemorySize(){
  15. Filepath=Environment.getDataDirectory();
  16. StatFsstat=newStatFs(path.getPath());
  17. longblockSize=stat.getBlockSize();
  18. longtotalBlocks=stat.getBlockCount();
  19. returntotalBlocks*blockSize;
  20. }
public long[] getRomMemroy() {long[] romInfo = new long[2];//Total rom memoryromInfo[0] = getTotalInternalMemorySize();//Available rom memoryFile 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;}

注意类型,不然相乘之后会有溢出。可用内部存储的大小不能通过getRootDirectory();
取得,之前网上传的很多都是用getRootDirectory()取得的,我测试之后发现取得的数值不对。要根据getDataDirectory();
取得。

三、sdCard大小
Java代码
  1. publiclong[]getSDCardMemory(){
  2. long[]sdCardInfo=newlong[2];
  3. Stringstate=Environment.getExternalStorageState();
  4. if(Environment.MEDIA_MOUNTED.equals(state)){
  5. FilesdcardDir=Environment.getExternalStorageDirectory();
  6. StatFssf=newStatFs(sdcardDir.getPath());
  7. longbSize=sf.getBlockSize();
  8. longbCount=sf.getBlockCount();
  9. longavailBlocks=sf.getAvailableBlocks();
  10. sdCardInfo[0]=bSize*bCount;//总大小
  11. sdCardInfo[1]=bSize*availBlocks;//可用大小
  12. }
  13. returnsdCardInfo;
  14. }
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;}

注意类型,不然相乘之后会有溢出。

四、电池电量
Java代码
  1. privateBroadcastReceiverbatteryReceiver=newBroadcastReceiver(){
  2. @Override
  3. publicvoidonReceive(Contextcontext,Intentintent){
  4. intlevel=intent.getIntExtra("level",0);
  5. //level加%就是当前电量了
  6. }
  7. };
private BroadcastReceiver batteryReceiver=new BroadcastReceiver(){@Overridepublic void onReceive(Context context, Intent intent) {int level = intent.getIntExtra("level", 0);//level加%就是当前电量了}};

然后在activity的oncreate()方法中注册
Java代码
  1. registerReceiver(batteryReceiver,newIntentFilter(Intent.ACTION_BATTERY_CHANGED));
registerReceiver(batteryReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));


五、CPU信息
Java代码
  1. publicString[]getCpuInfo(){
  2. Stringstr1="/proc/cpuinfo";
  3. Stringstr2="";
  4. String[]cpuInfo={"",""};
  5. String[]arrayOfString;
  6. try{
  7. FileReaderfr=newFileReader(str1);
  8. BufferedReaderlocalBufferedReader=newBufferedReader(fr,8192);
  9. str2=localBufferedReader.readLine();
  10. arrayOfString=str2.split("\\s+");
  11. for(inti=2;i<arrayOfString.length;i++){
  12. cpuInfo[0]=cpuInfo[0]+arrayOfString[i]+"";
  13. }
  14. str2=localBufferedReader.readLine();
  15. arrayOfString=str2.split("\\s+");
  16. cpuInfo[1]+=arrayOfString[2];
  17. localBufferedReader.close();
  18. }catch(IOExceptione){
  19. }
  20. returncpuInfo;
  21. }
public String[] getCpuInfo() {String str1 = "/proc/cpuinfo";String str2="";String[] cpuInfo={"",""};String[] arrayOfString;try {FileReader fr = new FileReader(str1);BufferedReader localBufferedReader = new BufferedReader(fr, 8192);str2 = localBufferedReader.readLine();arrayOfString = str2.split("\\s+");for (int i = 2; i < arrayOfString.length; i++) {cpuInfo[0] = cpuInfo[0] + arrayOfString[i] + " ";}str2 = localBufferedReader.readLine();arrayOfString = str2.split("\\s+");cpuInfo[1] += arrayOfString[2];localBufferedReader.close();} catch (IOException e) {}return cpuInfo;}

/proc/cpuinfo文件中第一行是CPU的型号,第二行是CPU的频率,可以通过读文件,读取这些数据!

六、系统的版本信息:
Java代码
  1. publicString[]getVersion(){
  2. String[]version={"null","null","null","null"};
  3. Stringstr1="/proc/version";
  4. Stringstr2;
  5. String[]arrayOfString;
  6. try{
  7. FileReaderlocalFileReader=newFileReader(str1);
  8. BufferedReaderlocalBufferedReader=newBufferedReader(
  9. localFileReader,8192);
  10. str2=localBufferedReader.readLine();
  11. arrayOfString=str2.split("\\s+");
  12. version[0]=arrayOfString[2];//KernelVersion
  13. localBufferedReader.close();
  14. }catch(IOExceptione){
  15. }
  16. version[1]=Build.VERSION.RELEASE;//firmwareversion
  17. version[2]=Build.MODEL;//model
  18. version[3]=Build.DISPLAY;//systemversion
  19. returnversion;
  20. }
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];//KernelVersionlocalBufferedReader.close();} catch (IOException e) {}version[1] = Build.VERSION.RELEASE;// firmware versionversion[2]=Build.MODEL;//modelversion[3]=Build.DISPLAY;//system versionreturn version;}

版本信息里面还包括型号等信息。

七、MAC地址和开机时间:
Java代码
  1. publicString[]getOtherInfo(){
  2. String[]other={"null","null"};
  3. WifiManagerwifiManager=(WifiManager)mContext.getSystemService(Context.WIFI_SERVICE);
  4. WifiInfowifiInfo=wifiManager.getConnectionInfo();
  5. if(wifiInfo.getMacAddress()!=null){
  6. other[0]=wifiInfo.getMacAddress();
  7. }else{
  8. other[0]="Fail";
  9. }
  10. other[1]=getTimes();
  11. returnother;
  12. }
  13. privateStringgetTimes(){
  14. longut=SystemClock.elapsedRealtime()/1000;
  15. if(ut==0){
  16. ut=1;
  17. }
  18. intm=(int)((ut/60)%60);
  19. inth=(int)((ut/3600));
  20. returnh+""+mContext.getString(R.string.info_times_hour)+m+""
  21. +mContext.getString(R.string.info_times_minute);
  22. }
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);}


最后贴一个格式化数据的方法:
Java代码
  1. publicStringformatSize(longsize){
  2. Stringsuffix=null;
  3. floatfSize=0;
  4. if(size>=1024){
  5. suffix="KB";
  6. fSize=size/1024;
  7. if(fSize>=1024){
  8. suffix="MB";
  9. fSize/=1024;
  10. }
  11. if(fSize>=1024){
  12. suffix="GB";
  13. fSize/=1024;
  14. }
  15. }else{
  16. fSize=size;
  17. }
  18. java.text.DecimalFormatdf=newjava.text.DecimalFormat("#0.00");
  19. StringBuilderresultBuffer=newStringBuilder(df.format(fSize));
  20. if(suffix!=null)
  21. resultBuffer.append(suffix);
  22. returnresultBuffer.toString();
  23. }
public String formatSize(long size) {String suffix = null;float fSize=0;if (size >= 1024) {suffix = "KB";fSize=size / 1024;if (fSize >= 1024) {suffix = "MB";fSize /= 1024;}if (fSize >= 1024) {suffix = "GB";fSize /= 1024;}} else {fSize = size;}java.text.DecimalFormat df = new java.text.DecimalFormat("#0.00");StringBuilder resultBuffer = new StringBuilder(df.format(fSize));if (suffix != null)resultBuffer.append(suffix);return resultBuffer.toString();}

保留两位小数。

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. android客显轮播图片
  3. Android高亮引导控件的实现代码
  4. android 视频的缩图制作
  5. Android(安卓)获取唯一机器码的代码
  6. android inputType 介绍
  7. android6.0 源码 系统应用之Music代码之类逻辑分析
  8. Android(安卓)Studio for Ubuntu 14.04 无法输入中文解决办法
  9. 关于Android(安卓)火车票查询App

随机推荐

  1. 找工作不理想,可能是这些原因,致刚出校门的
  2. 不是朋友不够好,而是有些事只能我们自己去
  3. 3种应对忧虑和不确定感的方式
  4. C语言数组(下)
  5. 全部运算符实例-分支与循环-替代语法-文
  6. php运算符,循环分支,文件包含探究
  7. php运算符实例、分支与循环结构、替代语
  8. 第22章 0114-购物车实战与ES6模块化技术,
  9. awk
  10. (cat<<EOF)不使用反斜杠转义的技巧