本文主要是介绍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当前可用内存大小
- 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);
- //将获得的内存大小规格化
- }
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); //将获得的内存大小规格化 }
获得系统总内存
- 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
- }
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)
- // 获取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)// "/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)
- 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();
- }
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)
- 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;
- }
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;}
程序版本信息
- try {
- PackageManager pm = getPackageManager();
- PackageInfo pinfo = pm.getPackageInfo(String类型 应用标识,PackageManager.GET_CONFIGURATIONS);
- String versionCode = pinfo.versionName;
- }
- catch (NameNotFoundException e)
- {
- e.printStackTrace(System.err);
- }
try {PackageManager pm = getPackageManager();PackageInfo pinfo = pm.getPackageInfo(String类型 应用标识,PackageManager.GET_CONFIGURATIONS);String versionCode = pinfo.versionName;} catch (NameNotFoundException e){e.printStackTrace(System.err);}
分辨率
- // 获取屏幕密度(方法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)
// 获取屏幕密度(方法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系统开源,不同的手机生产厂商没有统一的制造标准,来规定手机屏幕。
- 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取得系统信息和分辨率内存信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!