Androidはシステム情報と解像度メモリ情報を取得


android.os.Build.VERSION.SDK_INT;代わりにos.Build.VERSION.SDK、intタイプを返します
android.os.Build.VERSION.RELEASE;Android 2のようなユーザーが見えるバージョンです.2
android.os.Build.VERSION.SDK;SDKバージョン対応システムバージョンが8に戻ると、Android 2に対応する.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)  
      

方法1と方法2は大部分の装置の解像度を取るのは問題ないが、ある装置の解像度は3番目の方法のようにi 9000(密度1.5)のように対応する密度を乗じる必要があるが、motoXT 720密度1.5であるが、密度を乗じる必要はない.Androidシステムがオープンしたためか、携帯電話メーカーによって製造基準が統一されておらず、携帯電話の画面を規定している.
    screenWidth  = (int)(dm.widthPixels * density + 0.5f); 

この文は小数点以下の1位を四捨五入して整頓することを表す.
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
120 dpi対応リソースのres/XXX-ldpi
160 dpi対応リソースのres/XXX-mdpi
240 dpi対応リソースのres/XXX-hdpi
320 dpi対応リソースのres/XXX-xhdpi Android 2.2 API Level 8からの分類
対応する割合3:4:6:8
1インチ=2.54 cm
1フィート=0.3048 m