Android取得系统信息和分辨率内存信息

来源:互联网 发布:像韩国人的淘宝模特 编辑:程序博客网 时间:2024/06/05 07:19

android.os.Build.VERSION.SDK_INT;                        代替android.os.Build.VERSION.SDK,返回int类型

android.os.Build.VERSION.RELEASE;                      用户可见的版本 如 Android2.2

android.os.Build.VERSION.SDK;                                SDK 版本 对应系统版本 如返回8  --对应 Android2.2

android.os.Build.MODEL;                                             手机类型 HTC Desire


获取android当前可用内存大小  

[java] view plaincopy
  1. private String getAvailMemory()  
  2.   {    
  3.       //获取android当前可用内存大小    
  4.       ActivityManager am=(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);    
  5.       MemoryInfo mi=new MemoryInfo();    
  6.       am.getMemoryInfo(mi);    
  7.       //mi.avaiMem;当前系统可用内存    
  8.       return Formatter.formatFileSize(getBaseContext(), mi.availMem);    
  9.       //将获得的内存大小规格化    
  10.      }    


获得系统总内存

[java] view plaincopy
  1. private String getTotalMemory()  
  2. {    
  3.     String str1="/proc/meminfo";//系统内存信息文件    
  4.     String str2;    
  5.     String[] arrayOfString;    
  6.     long initial_memory=0;    
  7.         
  8.     try{    
  9.         FileReader localFileReader=new FileReader(str1);    
  10.         BufferedReader localBufferedReader=new BufferedReader(localFileReader,8192);    
  11.         str2=localBufferedReader.readLine();//读取meminfo第一行,系统内存大小    
  12.         arrayOfString=str2.split("\\s+");    
  13.         for(String num:arrayOfString){    
  14.             Log.i(str2,num+"\t");    
  15.         }    
  16.         initial_memory=Integer.valueOf(arrayOfString[1]).intValue()*1024;//获得系统总内存,单位KB    
  17.         localBufferedReader.close();    
  18.     }catch(IOException e){    
  19.             
  20.     }    
  21.     return Formatter.formatFileSize(getBaseContext(), initial_memory);    
  22.     //Byte转位KB或MB    
  23.         
  24. }    

获取CPU最大频率(单位KHZ)


[java] view plaincopy
  1. // 获取CPU最大频率(单位KHZ)  
  2.     // "/system/bin/cat" 命令行  
  3.     // "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq" 存储最大频率的文件的路径  
  4.        public  String getMaxCpuFreq() {  
  5.                String result = "";  
  6.                ProcessBuilder cmd;  
  7.                try {  
  8.                        String[] args = { "/system/bin/cat",  
  9.                                        "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq" };  
  10.                        cmd = new ProcessBuilder(args);  
  11.                        Process process = cmd.start();  
  12.                        InputStream in = process.getInputStream();  
  13.                        byte[] re = new byte[24];  
  14.                        while (in.read(re) != -1) {  
  15.                                result = result + new String(re);  
  16.                        }  
  17.                        in.close();  
  18.                } catch (IOException ex) {  
  19.                        ex.printStackTrace();  
  20.                        result = "N/A";  
  21.                }  
  22.                return result.trim();  
  23.        }  

  

获取CPU最小频率(单位KHZ)

[java] view plaincopy
  1. public  String getMinCpuFreq() {  
  2.               String result = "";  
  3.               ProcessBuilder cmd;  
  4.               try {  
  5.                       String[] args = { "/system/bin/cat",  
  6.                                       "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq" };  
  7.                       cmd = new ProcessBuilder(args);  
  8.                       Process process = cmd.start();  
  9.                       InputStream in = process.getInputStream();  
  10.                       byte[] re = new byte[24];  
  11.                       while (in.read(re) != -1) {  
  12.                               result = result + new String(re);  
  13.                       }  
  14.                       in.close();  
  15.               } catch (IOException ex) {  
  16.                       ex.printStackTrace();  
  17.                       result = "N/A";  
  18.               }  
  19.               return result.trim();  
  20.       }  

  实时获取CPU当前频率(单位KHZ)

[java] view plaincopy
  1. public  String getCurCpuFreq() {  
  2.              String result = "N/A";  
  3.              try {  
  4.                      FileReader fr = new FileReader(  
  5.                                      "/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq");  
  6.                      BufferedReader br = new BufferedReader(fr);  
  7.                      String text = br.readLine();  
  8.                      result = text.trim();  
  9.              } catch (FileNotFoundException e) {  
  10.                      e.printStackTrace();  
  11.              } catch (IOException e) {  
  12.                      e.printStackTrace();  
  13.              }  
  14.              return result;  
  15.      }  



程序版本信息

[java] view plaincopy
  1. try {  
  2.              PackageManager pm = getPackageManager();  
  3.              PackageInfo pinfo = pm.getPackageInfo(String类型 应用标识,PackageManager.GET_CONFIGURATIONS);  
  4.              String versionCode = pinfo.versionName;  
  5.          }   
  6.         catch (NameNotFoundException e)  
  7.         {  
  8.             e.printStackTrace(System.err);  
  9.         }  


分辨率

[java] view plaincopy
  1. // 获取屏幕密度(方法1)    
  2. int screenWidth  = getWindowManager().getDefaultDisplay().getWidth();       // 屏幕宽(像素,如:480px)    
  3. int screenHeight = getWindowManager().getDefaultDisplay().getHeight();      // 屏幕高(像素,如:800p)    
  4.     
  5.   
  6.     
  7.     
  8. // 获取屏幕密度(方法2)    
  9. DisplayMetrics dm = new DisplayMetrics();    
  10. dm = getResources().getDisplayMetrics();    
  11.     
  12. float density  = dm.density;        // 屏幕密度(像素比例:0.75/1.0/1.5/2.0)    
  13. int densityDPI = dm.densityDpi;     // 屏幕密度(每寸像素:120/160/240/320)    
  14. float xdpi = dm.xdpi;               
  15. float ydpi = dm.ydpi;    
  16.     
  17. Log.e(TAG + "  DisplayMetrics""xdpi=" + xdpi + "; ydpi=" + ydpi);    
  18. Log.e(TAG + "  DisplayMetrics""density=" + density + "; densityDPI=" + densityDPI);    
  19.     
  20. screenWidth  = dm.widthPixels;      // 屏幕宽(像素,如:480px)    
  21. screenHeight = dm.heightPixels;     // 屏幕高(像素,如:800px)    
  22.     
  23.   
  24.     
  25.     
  26.     
  27. // 获取屏幕密度(方法3)    
  28. dm = new DisplayMetrics();    
  29. getWindowManager().getDefaultDisplay().getMetrics(dm);    
  30.     
  31. density  = dm.density;      // 屏幕密度(像素比例:0.75/1.0/1.5/2.0)    
  32. densityDPI = dm.densityDpi;     // 屏幕密度(每寸像素:120/160/240/320)    
  33. xdpi = dm.xdpi;             
  34. ydpi = dm.ydpi;    
  35.     
  36.   
  37.     
  38. int screenWidthDip = dm.widthPixels;        // 屏幕宽(dip,如:320dip)    
  39. int screenHeightDip = dm.heightPixels;      // 屏幕宽(dip,如:533dip)    
  40.     
  41.   
  42.     
  43. screenWidth  = (int)(dm.widthPixels * density + 0.5f);      // 屏幕宽(px,如:480px)    
  44. screenHeight = (int)(dm.heightPixels * density + 0.5f);     // 屏幕高(px,如:800px)    
  45.     

方法一和方法二取大部分的设备的分辨率是没问题的,但是有的设备的分辨率需要乘上相应的密度像第三个方法那样如i9000(密度1.5),但是moto XT720密度1.5,但是不需要乘以密度。可能就是因为Android系统开源,不同的手机生产厂商没有统一的制造标准,来规定手机屏幕。

[java] view plaincopy
  1. screenWidth  = (int)(dm.widthPixels * density + 0.5f);   
这句表示小数点后一位四舍五入取整。


getWindowManager().getDefaultDisplay().getMetrics(dm)

    Initialize a DisplayMetrics object from this display's data.

getResources().getDisplayMetrics()

   Return the current display metrics that are in effect for this resource object. The returned object should be treated as read-only.返回和资源有关的






 单位换算

density            DPI

 1     160             1dp = 1dip = 1px

 1.5     240     1dp = 1dip = 1.5px

120dpi 对应资源中的res/XXX-ldpi

160dpi 对应资源中的res/XXX-mdpi

240dpi 对应资源中的res/XXX-hdpi

320dpi    对应资源中的res/XXX-xhdpi  Android 2.2 API Level 8开始才有的分类


对应的比例3:4:6:8

1英寸 = 2.54厘米

1英尺 = 0.3048米


0 0
原创粉丝点击