1. 程式人生 > >android獲取手機資訊大全

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);  
     }