1. 程式人生 > >IMEI號和MEID號

IMEI號和MEID號

IMEI國際移動裝置識別碼(IMEI:International Mobile Equipment Identification Number)是區別移動裝置的標誌,儲存在移動裝置中,可用於監控被竊或無效的移動裝置。目前GSM和WCDMA手機終端需要使用IMEI號碼     手機制造商在申請IMEI號碼之前,必須先在IMEI網上進行註冊,BABT稽核通過後會發該製造商的廠家註冊碼,申請人憑藉廠家註冊碼在IMEI網站上進行線上申請。

目前GSM和WCDMA手機終端需要使用IMEI號碼,IMEI號碼由GSMA組織進行管理,並授權英國BABT和美國的PTCRB兩個認證機構進行發放。在北美地區進行銷售的手機產品,需要向PTCRB機構申請IMEI號碼。其他國家或地區進行銷售的手機產品向BABT進行申請。

手機普通使用者可以通過輸入*#06#來檢視手機的IMEI號碼。
=============================================================

MEID 移動裝置識別碼(Mobile Equipment Identifier)是CDMA手機的身份識別碼,也是每臺手機有唯一的識別碼。通過這個識別碼,網路端可以對該手機進行跟蹤和監管。用於CDMA制式的手機。MEID的數字範圍是十六進位制的,和IMEI的格式類似。 
  MEID號碼是由Telecommunications Industry Association(TIA)進行分配管理的。申請MEID是需要付費的。目前的價格是每1M範圍的MEID的費用是8000美元,每增加1M範圍的MEID號碼需要額外付費8000美元。

MEID號碼的檢視,目前沒有一個通用的方法,由各手機制造商自己設定。可以通過檢視手機說明書得到檢視MEID號碼的方法
IMEI號是GSM的概念,CDMA對應的是MEID號。IMEI(International Mobile Equipment Identity)是國際移動裝置身份碼,目前GSM/WCDMA/LTE手機終端需要使用IMEI號碼。在單卡工程中一個手機對應一個IMEI號;雙卡工程中一張卡對應一個IMEI號,雙卡共有兩個IMEI號。MEID (Mobile Equipment Identifier) 移動裝置識別碼,是CDMA手機的唯一身份識別碼。通過GSMPhone物件來呼叫getDeviceId()函式,獲取到的就是IMEI號。通過CDMAPhone物件來呼叫getDeviceId()函式,獲取到的就是MEID號。
一、如何獲取IMEI號KK之前的版本:下面是獲得IMEI號的介面和demo codeAPI:GSMPhone.JAVA     中getDeviceId()GeminiPhone.java  中getDeviceId() 和 getDeviceIdGemini()Demo code:import com.android.internal.telephony.Phone;import com.android.internal.telephony.gemini.GeminiPhone;import com.android.internal.telephony.PhoneFactory;  Phone phone;
phone = PhoneFactory.getDefaultPhone();String  imei=(GeminiPhone)phone.getDeviceId();GeminiPhone mGeminiPhone;String imei_sim1 = mGeminiPhone.getDeviceIdGemini(PhoneConstants.GEMINI_SIM_1);String imei_sim2 = mGeminiPhone.getDeviceIdGemini(PhoneConstants.GEMINI_SIM_2);KK版本上:GSMPhone.java    中getDeviceId()GeminiPhone.java 其中getDeviceIdGemini()已經沒有了,而getDeviceId()獲取的是default phone的IMEI;所以直接使用GSMPhone.java中getDeviceId()方法;Demo code:GeminiPhone mGeminiPhone;String imei_sim1=mGeminiPhone.getPhonebyId(PhoneConstants.GEMINI_SIM_1).getDeviceId();String imei_sim2=mGeminiPhone.getPhonebyId(PhoneConstants.GEMINI_SIM_2).getDeviceId();L版本非C2K專案上:GSMPhone.java中的getDeviceId()L上面已經沒有GeminiPhone;使用方法如下:Phone mPhone1=PhoneFactory.getPhone(PhoneConstants.SIM_ID_1);Phone mPhone2=PhoneFactory.getPhone(PhoneConstants.SIM_ID_2);if(mPhone1!=null){String imei_sim1= mPhone1.getDeviceId();}if(mPhone2!=null){String imei_sim2= mPhone2.getDeviceId();}L版本C2K專案上:L版本C2K專案上,一張卡同時對應一個CDMAPhone和一個GSMPhone,要獲取對應卡的IMEI號,需要先獲取到對應的GSMPhone物件,具體可以通過下面的方法來獲取:    SIM1-> CDMAPhone = PhoneFactory.getPhone(0).getNLtePhone()    SIM1-> GSMPhone = PhoneFactory.getPhone(0).getLtePhone()    SIM2->  CDMAPhone = PhoneFactory.getPhone(1).getNLtePhone()    SIM2->  GSMPhone = PhoneFactory.getPhone(1).getLtePhone()獲取到GSMPhone物件後,通過該物件來呼叫getDeviceId()函式。二、如何獲取MEID號L版本C2K專案上:參考上面的說明,要獲取MEID號,需要先獲取對應卡的CDMAPhone物件,具體可以通過下面的方法來獲取:    SIM1-> CDMAPhone = PhoneFactory.getPhone(0).getNLtePhone()    SIM1-> GSMPhone = PhoneFactory.getPhone(0).getLtePhone()    SIM2->  CDMAPhone = PhoneFactory.getPhone(1).getNLtePhone()    SIM2->  GSMPhone = PhoneFactory.getPhone(1).getLtePhone()獲取到CDMAPhone物件後,通過該物件來呼叫getDeviceId()函式。如果電信卡插在卡1上,則使用上面SIM1的方法來獲取卡1的CDMAPhone物件。如果電信卡插在卡2上,則使用上面 SIM2 的方式來獲取卡2的CDMAPhone物件。如果同時插入兩張電信卡,由於同一時刻只支援一張電信卡,則只有主卡可以獲取到MEID號,

可以通過PhoneFactory.getDefaultPhone().getNLtePhone() 來獲取主卡的CDMAPhone物件。