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米




更多相关文章

  1. Android屏幕自适应的四种方法
  2. android-详解Android中的屏幕方向
  3. Android屏幕相关设置
  4. Android获取屏幕宽度与高度
  5. android 屏幕方向切换 锁定方向
  6. android 之button 屏幕翻转
  7. [置顶] Android多分辨率和多屏幕的布局适配详解

随机推荐

  1. Android循环广告的实现
  2. Android手机游戏的救世主--PSX4Droid
  3. Android中给LineayLayout加边框
  4. Go,onAndroid
  5. android 适配器notifyDataSetChanged无法
  6. Android学习系列(30)--App列表之下拉刷新
  7. Android(安卓)ImageView的scaleType属性
  8. Android异步加载之AsyncTask
  9. 视频直播Android推流SDK初体验
  10. 【关于ffmpeg和Android的种种】【VPlayer