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(安卓)oncreate中获取控件宽高
  2. Android客户端与J2EE服务器的互联
  3. android 自定义View中获取系统属性
  4. Android屏幕自适应的四种方法
  5. Android获取手机方向
  6. 在LinearLayout中嵌套RelativeLayout来设置Button的位置(xml文件)
  7. android-详解Android中的屏幕方向
  8. Android唯一标识
  9. android 学习总结

随机推荐

  1. 在Windows Server Core 2019 上安装SQL S
  2. 程序员想搞点副业太难了:谷歌已将个人项目
  3. 大师也作弊,昔日Kaggle Grandmaster面临终
  4. 阁下可知文言编程之精妙?CMU本科生开源文
  5. 拯救单身狗:这个对象生成器帮你看看未来对
  6. 深度学习可以不要乘法,北大、华为诺亚新论
  7. 程序员业余时间写的代码也算公司的?Nginx
  8. 你是魔鬼吗?Steam上线「科研模拟器」游戏,
  9. 让图像识别准确率瞬间下降40个点,「江苏卷
  10. Docker compose 配置 Snipe IT 练习