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

Android取得系统信息和分辨率内存信息       
        分类:            Android 186人阅读 评论(0) 收藏 举报


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当前可用内存大小 

  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.      }   
  private String getAvailMemory()
    {  
        //获取android当前可用内存大小  
        ActivityManager am=(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);  
        MemoryInfo mi=new MemoryInfo();  
        am.getMemoryInfo(mi);  
        //mi.avaiMem;当前系统可用内存  
        return Formatter.formatFileSize(getBaseContext(), mi.availMem);  
        //将获得的内存大小规格化  
   	 }  


获得系统总内存

  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. }   
	 private String getTotalMemory()
	 {  
	     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  
	         localBufferedReader.close();  
	     }catch(IOException e){  
	           
	     }  
	     return Formatter.formatFileSize(getBaseContext(), initial_memory);  
	     //Byte转位KB或MB  
	       
	 }  

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


  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)
     // "/system/bin/cat" 命令行
     // "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq" 存储最大频率的文件的路径
        public  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)

  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.       } 
  public  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)

  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.      } 
   public  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;
        }



程序版本信息

  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.         } 
try {
    		 PackageManager pm = getPackageManager();
    		 PackageInfo pinfo = pm.getPackageInfo(String类型 应用标识,PackageManager.GET_CONFIGURATIONS);
    		 String versionCode = pinfo.versionName;
    	 } 
    	catch (NameNotFoundException e)
    	{
    		e.printStackTrace(System.err);
    	}


分辨率

  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.    
    // 获取屏幕密度(方法1)  
    int screenWidth  = getWindowManager().getDefaultDisplay().getWidth();       // 屏幕宽(像素,如:480px)  
    int screenHeight = getWindowManager().getDefaultDisplay().getHeight();      // 屏幕高(像素,如:800p)  
      

      
      
    // 获取屏幕密度(方法2)  
    DisplayMetrics dm = new DisplayMetrics();  
    dm = getResources().getDisplayMetrics();  
      
    float density  = dm.density;        // 屏幕密度(像素比例:0.75/1.0/1.5/2.0)  
    int densityDPI = dm.densityDpi;     // 屏幕密度(每寸像素:120/160/240/320)  
    float xdpi = dm.xdpi;             
    float ydpi = dm.ydpi;  
      
    Log.e(TAG + "  DisplayMetrics", "xdpi=" + xdpi + "; ydpi=" + ydpi);  
    Log.e(TAG + "  DisplayMetrics", "density=" + density + "; densityDPI=" + densityDPI);  
      
    screenWidth  = dm.widthPixels;      // 屏幕宽(像素,如:480px)  
    screenHeight = dm.heightPixels;     // 屏幕高(像素,如:800px)  
      

      
      
      
    // 获取屏幕密度(方法3)  
    dm = new DisplayMetrics();  
    getWindowManager().getDefaultDisplay().getMetrics(dm);  
      
    density  = dm.density;      // 屏幕密度(像素比例:0.75/1.0/1.5/2.0)  
    densityDPI = dm.densityDpi;     // 屏幕密度(每寸像素:120/160/240/320)  
    xdpi = dm.xdpi;           
    ydpi = dm.ydpi;  
      

      
    int screenWidthDip = dm.widthPixels;        // 屏幕宽(dip,如:320dip)  
    int screenHeightDip = dm.heightPixels;      // 屏幕宽(dip,如:533dip)  
      

      
    screenWidth  = (int)(dm.widthPixels * density + 0.5f);      // 屏幕宽(px,如:480px)  
    screenHeight = (int)(dm.heightPixels * density + 0.5f);     // 屏幕高(px,如:800px)  
      

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

  1. screenWidth  = (int)(dm.widthPixels * density + 0.5f);  
    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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值