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

2024-06-17 10:48

本文主要是介绍Android取得系统信息和分辨率内存信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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


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 plain copy print ?
  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);  //将获得的内存大小规格化  }  


获得系统总内存

[java] view plain copy print ?
  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)


[java] view plain copy print ?
  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)

[java] view plain copy print ?
  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)

[java] view plain copy print ?
  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;}



程序版本信息

[java] view plain copy print ?
  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);}


分辨率

[java] view plain copy print ?
  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系统开源,不同的手机生产厂商没有统一的制造标准,来规定手机屏幕。

[java] view plain copy print ?
  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米

这篇关于Android取得系统信息和分辨率内存信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1069233

相关文章

Android 12解决push framework.jar无法开机的方法小结

《Android12解决pushframework.jar无法开机的方法小结》:本文主要介绍在Android12中解决pushframework.jar无法开机的方法,包括编译指令、框架层和s... 目录1. android 编译指令1.1 framework层的编译指令1.2 替换framework.ja

Android开发环境配置避坑指南

《Android开发环境配置避坑指南》本文主要介绍了Android开发环境配置过程中遇到的问题及解决方案,包括VPN注意事项、工具版本统一、Gerrit邮箱配置、Git拉取和提交代码、MergevsR... 目录网络环境:VPN 注意事项工具版本统一:android Studio & JDKGerrit的邮

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

Windows系统宽带限制如何解除?

《Windows系统宽带限制如何解除?》有不少用户反映电脑网速慢得情况,可能是宽带速度被限制的原因,只需解除限制即可,具体该如何操作呢?本文就跟大家一起来看看Windows系统解除网络限制的操作方法吧... 有不少用户反映电脑网速慢得情况,可能是宽带速度被限制的原因,只需解除限制即可,具体该如何操作呢?本文

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

电脑找不到mfc90u.dll文件怎么办? 系统报错mfc90u.dll丢失修复的5种方案

《电脑找不到mfc90u.dll文件怎么办?系统报错mfc90u.dll丢失修复的5种方案》在我们日常使用电脑的过程中,可能会遇到一些软件或系统错误,其中之一就是mfc90u.dll丢失,那么,mf... 在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包

电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案

《电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案》最近有不少兄弟反映,电脑突然弹出“mfc100u.dll已加载,但找不到入口点”的错误提示,导致一些程序无法正... 在计算机使用过程中,我们经常会遇到一些错误提示,其中最常见的就是“找不到指定的模块”或“缺少某个DL

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取