Android獲取Build和內存,分辨率等信息

4e48 9年前發布 | 2K 次閱讀 Java Android

import android.app.ActivityManager;
import android.content.Context;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.text.format.Formatter;
import android.util.DisplayMetrics;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.TimeZone;

public class Main extends ActionBarActivity {
private TextView tvInfo;

@Override  
protected void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.main);  
    tvInfo = (TextView) findViewById(R.id.tvInfo);  
    tvInfo.setText(getBuildInfo(0) + getDisplayInfo(0) + getTelephonyState(0) + getTimeZoneInfo()  
            + getHardwareInfo(0));  
}  

/** 
 * @param type 0-All,1-Model,2-VersionRelease,Other-Error. 
 * @return String 
 */  
private String getBuildInfo(int type) {  
    String model = Build.MODEL; // 型號  
    String versionRelease = Build.VERSION.RELEASE;  
    String versionSDK = Build.VERSION.SDK;  
    String versionIncremental = Build.VERSION.INCREMENTAL;  
    String brand = Build.BRAND;  
    String id = Build.ID;  
    String manufacturer = Build.MANUFACTURER;  
    String hardware = Build.HARDWARE;  
    String product = Build.PRODUCT;  
    String cpuABI = Build.CPU_ABI;  
    String cpuABI2 = Build.CPU_ABI2;  
    String fingerPrint = Build.FINGERPRINT;  
    String board = Build.BOARD;  
    String serial = Build.SERIAL;  
    String user = Build.USER;  
    if (type == 0) {  
        return "Model:" + model + "\nVersionRelease:" + versionRelease + "\nVersionSDK:" +  
                versionSDK + "\nVersionIncremental:" + versionIncremental + "\nBrand:" + brand  
                + "\nID:" + id + "\nManufacturer:" + manufacturer + "\nHardware:" + hardware  
                + "\nProduct:" + product + "\nCpuABI:" + cpuABI + "\nCpuABI2:" + cpuABI2 +  
                "\nFingerPrint:" + fingerPrint + "\nBoard:" + board + "\nSerial:" + serial +  
                "\nUser:" + user + "\n";  
    } else if (type == 1) {  
        return "Model" + model + "\n";  
    } else if (type == 2) {  
        return "VersionRelease:" + versionRelease + "\n";  
    } else {  
        return "[getBuildInfo Err]";  
    }  
}  

private String getHardwareInfo(int type) {  

    WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);  
    WifiInfo wifiInfo = wifiManager.getConnectionInfo();  
    String macAddress = wifiInfo.getMacAddress();  

    String strCPU = "";  
    String[] cpuInfo = {"", ""};  //1-cpu型號  //2-cpu頻率  
    String[] arrayOfStringCPU;  
    try {  
        FileReader fileReader = new FileReader("/proc/cpuinfo");  
        BufferedReader localBufferedReader = new BufferedReader(fileReader, 8192);  
        strCPU = localBufferedReader.readLine();  
        arrayOfStringCPU = strCPU.split("\\s+");  
        for (int i = 2; i < arrayOfStringCPU.length; i++) {  
            cpuInfo[0] = cpuInfo[0] + arrayOfStringCPU[i] + " ";  
        }  
        strCPU = localBufferedReader.readLine();  
        arrayOfStringCPU = strCPU.split("\\s+");  
        cpuInfo[1] += arrayOfStringCPU[2];  
        localBufferedReader.close();  
    } catch (IOException e) {  
        e.printStackTrace();  
    }  

    // adb shell;cat /proc/meminfo  
    ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();  
    ActivityManager activityManager = (ActivityManager) this.getSystemService(  
            Context.ACTIVITY_SERVICE);  
    activityManager.getMemoryInfo(memoryInfo);  
    long mTotalMem = memoryInfo.totalMem;//0;  
    long mAvailMem = memoryInfo.availMem;  
    /* 
    String strMemory; 
    String[] arrayOfStringMemory; 
    try { 
        FileReader localFileReader = new FileReader("/proc/meminfo"); 
        BufferedReader localBufferedReader = new BufferedReader(localFileReader, 8192); 
        strMemory = localBufferedReader.readLine(); 
        arrayOfStringMemory = strMemory.split("\\s+"); 
        mTotalMem = Integer.valueOf(arrayOfStringMemory[1]).intValue() * 1024; 
        localBufferedReader.close(); 
    } catch (IOException e) { 
        e.printStackTrace(); 
    } 
    */  
    String totalMemory = Formatter.formatFileSize(this, mTotalMem);  
    String availMemory = Formatter.formatFileSize(this, mAvailMem);  

    if (type == 0) {  
        return "MacAddress:" + macAddress + "\nCpuModel:" + cpuInfo[0] + "\nCpuClock:" +  
                cpuInfo[1] + "\nTotalMemory:" + totalMemory + "\nAvailableMemory:" + availMemory  
                + "\n";  
    } else {  
        return "";  
    }  
}  


/** 
 * @param type 0-All,1-DeviceId,2-SubscriberId,3-PhoneNumber,Other-Error. 
 * @return String 
 */  
private String getTelephonyState(int type) {  
    TelephonyManager telephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);  
    String deviceId = telephonyManager.getDeviceId();  
    String subscriberId = telephonyManager.getSubscriberId();  
    String phoneNumber = telephonyManager.getLine1Number();  

    if (type == 0) {  
        return "DeviceId:" + deviceId + "\nSubscriberId:" + subscriberId + "\nPhoneNumber:" + phoneNumber + "\n";  
    } else if (type == 1) {  
        return "DeviceId:" + deviceId + "\n";  
    } else if (type == 2) {  
        return "SubscriberId" + subscriberId + "\n";  
    } else if (type == 3) {  
        return "PhoneNumber:" + phoneNumber + "\n";  
    } else {  
        return "[getTelephonyState Err]";  
    }  
}  

/** 
 * @param type 0-All,1-ScreenHeight,2-ScreenWidth,Other-Error. 
 * @return String 
 */  
private String getDisplayInfo(int type) {  
    DisplayMetrics displayMetrics = new DisplayMetrics();  
    getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);  
    int screenHeight = displayMetrics.heightPixels;  
    int screenWidth = displayMetrics.widthPixels;  
    if (type == 0) {  
        return "ScreenHeight:" + screenHeight + "\nScreenWidth:" + screenWidth + "\n";  
    } else if (type == 1) {  
        return "ScreenHeight:" + screenHeight + "\n";  
    } else if (type == 2) {  
        return "ScreenWidth:" + screenWidth + "\n";  
    } else {  
        return "[getTelephonyState Err]";  
    }  
}  

private String getTimeZoneInfo() {  
    TimeZone timeZone = TimeZone.getDefault();  
    return "TimeZone:" + timeZone.toString() + "\n";  
}  

@Override  
public boolean onCreateOptionsMenu(Menu menu) {  
    // Inflate the menu; this adds items to the action bar if it is present.  
    getMenuInflater().inflate(R.menu.main, menu);  
    return true;  
}  

@Override  
public boolean onOptionsItemSelected(MenuItem item) {  
    // Handle action bar item clicks here. The action bar will  
    // automatically handle clicks on the Home/Up button, so long  
    // as you specify a parent activity in AndroidManifest.xml.  
    int id = item.getItemId();  

    //noinspection SimplifiableIfStatement  
    if (id == R.id.action_settings) {  
        return true;  
    }  

    return super.onOptionsItemSelected(item);  
}  

} </pre>

 本文由用戶 4e48 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!