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米