android獲取手機資訊大全
IMEI號,IESI號,手機型號:
private void getInfo() { TelephonyManager mTm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); String imei = mTm.getDeviceId(); String imsi = mTm.getSubscriberId(); String mtype = android.os.Build.MODEL; // 手機型號 String numer = mTm.getLine1Number(); // 手機號碼,有的可得,有的不可得 }
手機型號 Build.MODEL
MODEL | The end-user-visible name for the end product. |
sdk版本 Build.VERSION.SDK
SDK | This constant is deprecated. Use to easily get this as an integer. |
及frimware版本號(系統版本號) Build.VERSION.RELEASE
The user-visible version string. |
事實上,Build能向我們提供包括 硬體廠商,硬體編號,序列號等很多資訊 呼叫方法也都同上,很簡單。
BOARD | The name of the underlying board, like "goldfish". |
The system bootloader version number. | |
BRAND | The brand (e.g., carrier) the software is customized for, if any. |
The name of the instruction set (CPU type + ABI convention) of native code. | |
The name of the second instruction set (CPU type + ABI convention) of native code. | |
The name of the industrial design. | |
A build ID string meant for displaying to the user | |
A string that uniquely identifies this build. | |
The name of the hardware (from the kernel command line or /proc). | |
ID | Either a changelist number, or a label like "M4-rc20". |
The manufacturer of the product/hardware. | |
MODEL | The end-user-visible name for the end product. |
The name of the overall product. | |
RADIO | The radio firmware version number. |
A hardware serial number, if available. | |
TAGS | Comma-separated tags describing the build, like "unsigned,debug". |
long | TIME |
TYPE | The type of build, like "user" or "eng". |
Value used for when a build property is unknown. |
明確幾個概念:
SIM卡儲存的資料可分為四類:
第一類是固定存放的資料。這類資料在行動電話機被出售之前由SIM卡中心寫入,包括國際移動使用者識別號(IMSI)、鑑權金鑰(KI)、鑑權和加密演算法等等。
第二類是暫時存放的有關網路的資料。如位置區域識別碼(LAI)、移動使用者暫時識別碼(TMSI)、禁止接入的公共電話網程式碼等。
第三類是相關的業務程式碼,如個人識別碼(PIN)、解鎖碼(PUK)、計費費率等。
第四類是電話號碼簿,是手機使用者隨時輸入的電話號碼。使用者全部資料幾乎都儲存在SIM卡內,因此SIM卡又稱為使用者資料識別卡。
IMSI是一個唯一的數字, 標識了GSM和UMTS 網路裡的唯一一個使用者. 它儲存 在手機的SIM卡里,它會通過手機發送到網路上. IMSI 與 SIM唯一對應
IMEI也是一串唯一的數字, 標識了 GSM 和 UMTS網路裡的唯一一個手機.它通常被列印在手機裡電池下面的那一面,撥 *#06# 也能看到它. IMEI 與 裝置唯一對應.
1。IMEI不存在於SIM卡中,它是手機本身的串號。
2。通常我們所說的手機號也不存在於SIM卡中,雖然SIM卡中有一個專門儲存SIM卡本身號碼的地方,但是此號碼是通過手工設定的,而且是可以更改的。 SIM卡的識別通常使用IMSI號,這個對於SIM卡是唯一的。
3。使用SimGetRecordInfo之類的函式獲得SIM卡的IMSI號碼能否成功依賴於裝置製造商是否實現了此函式,據我所知在DOPOD的機器上是可以獲得,但是在聯想的機器上卻不行,其他機器沒有。
4。獲得IMEI以及IMSI可以通過RIL或者TAPI中的LINE操作的函式獲得。
記得新增許可權:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
獲取手機螢幕高度:
private void getWeithAndHeight(){
//這種方式在service中無法使用,
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
String width = dm.widthPixels; //寬
String height = dm.heightPixels; //高
//在service中也能得到高和寬
WindowManager mWindowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
width = mWindowManager.getDefaultDisplay().getWidth();
height = mWindowManager.getDefaultDisplay().getHeight();
}
獲取手機MAC地址:
private String getMacAddress(){
String result = "";
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
result = wifiInfo.getMacAddress();
Log.i(TAG, "macAdd:" + result);
return result;
}
手機CPU資訊
private String[] getCpuInfo() {
String str1 = "/proc/cpuinfo";
String str2 = "";
String[] cpuInfo = {"", ""}; //1-cpu型號 //2-cpu頻率
String[] arrayOfString;
try {
FileReader fr = new FileReader(str1);
BufferedReader localBufferedReader = new BufferedReader(fr, 8192);
str2 = localBufferedReader.readLine();
arrayOfString = str2.split("\\s+");
for (int i = 2; i < arrayOfString.length; i++) {
cpuInfo[0] = cpuInfo[0] + arrayOfString[i] + " ";
}
str2 = localBufferedReader.readLine();
arrayOfString = str2.split("\\s+");
cpuInfo[1] += arrayOfString[2];
localBufferedReader.close();
} catch (IOException e) {
}
Log.i(TAG, "cpuinfo:" + cpuInfo[0] + " " + cpuInfo[1]);
return cpuInfo;
}
獲取手機可用記憶體和總記憶體:
private String[] getTotalMemory() {
String[] result = {"",""}; //1-total 2-avail
ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo();
mActivityManager.getMemoryInfo(mi);
long mTotalMem = 0;
long mAvailMem = mi.availMem;
String str1 = "/proc/meminfo";
String str2;
String[] arrayOfString;
try {
FileReader localFileReader = new FileReader(str1);
BufferedReader localBufferedReader = new BufferedReader(localFileReader, 8192);
str2 = localBufferedReader.readLine();
arrayOfString = str2.split("\\s+");
mTotalMem = Integer.valueOf(arrayOfString[1]).intValue() * 1024;
localBufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
result[0] = Formatter.formatFileSize(this, mTotalMem);
result[1] = Formatter.formatFileSize(this, mAvailMem);
Log.i(TAG, "meminfo total:" + result[0] + " used:" + result[1]);
return result;
}
獲取手機安裝的應用資訊(排除系統自帶):
private String getAllApp() {
String result = "";
List<PackageInfo> packages = getPackageManager().getInstalledPackages(0);
for (PackageInfo i : packages) {
if ((i.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
result += i.applicationInfo.loadLabel(getPackageManager()).toString() + ",";
}
}
return result.substring(0, result.length() - 1);
}