本文共 6590 字,大约阅读时间需要 21 分钟。
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 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)
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; }
程序版本信息
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)
方法一和方法二取大部分的设备的分辨率是没问题的,但是有的设备的分辨率需要乘上相应的密度像第三个方法那样如i9000(密度1.5),但是moto XT720密度1.5,但是不需要乘以密度。可能就是因为Android系统开源,不同的手机生产厂商没有统一的制造标准,来规定手机屏幕。
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米
转载地址:http://gyyub.baihongyu.com/