MEI(International Mobile Equipment Identity)是国际移动设备身份码的缩写,国际移动装备辨识码,是由15位数字组成的"电子串号 ",它与每台手机一一对应,而且该码是全世界唯一的。每一只手机在组装完成后都将被赋予一个全球唯一的一组号码,这个号码从生产到交付使用都将被制造生产的厂商所记录。
MEI分配
IMEI码由GSM (全球移动通信协会)统一分配,授权BABT(英国通信认证管理委员会)审受.
IMEI组成
IMEI由15位数字组成,其组成为:
1、前6位数(TAC)是"型号核准号码",一般代表机型。
2、接着的2位数(FAC)是"最后装配号",一般代表产地。
3、之后的6位数(SNR)是"串号",一般代表生产顺序号。
4、最后1位数(SP)通常是"0",为检验码,目前暂备用。
IMEI码具有唯一性,贴在手机背面的标志上,并且读写于手机内存中。它也是该手机在厂家的"档案"和"身份证号"。
TAC
TAC(设备型号核准号码)由欧洲 型 号认证中心分配。TAC码前三位在不同的时期会发生变化,过去的TAC码前三位在现在的手机上不会出现。过去的一些老型号的手机基本上都是446/448 开头,如moto v328 nokia 7110,而且即使同一部手机在不同的时期也会有不同的TAC码如大家最熟悉的8210升级8250,如果前三位是448902就不能升级,因为CPU不 同。因此过去所说的只要是同一型号的手机TAC码一定一样的说法是不够准确的,再如爱立信的同一型号手机T39MC在不同地区的地方亦会有不同的号码大陆 行货为520406香港则为520407。我们知道这些区别后就可以通过TAC码来进行“设备识别”了,而不必去费心的去牢记IMEI的7.8位数字代表 的产地。
FAC
FAC(工厂装配码)由厂家编码,通常表示生产厂家及其装配地。有时FAC也不能完全证明手机是否是行货,T68上市后热买一度造成缺货,因此爱立信代理商调集了一部分马来西亚 生产(FAC码71)紧急救援,因此这部分有入网许可证T68同样是“行货”。(前面我们我们说过了IMEI和取得入网许可证之间的联系)不过,需要指出的是这部分T68仅限于前期一部分软件版本为R1B的T68。 FAC
码 也不是一成不变的即使是同一产地的产品,如西门子3508I和MOTO C300因为其产量巨大已经从开始的37升级到40,而C300的行货FAC也有80/81/82。尤其重要的是欧洲型号认证中心今年重新分配了 IMEI,FAC被和TAC合并在一起,FAC码的数字统一从00开始,因此无论什么型号什么品牌其7,8位均是00、01、02或03这样向后编排。如 最新的C289,三星V200 、西门子A55 、 索尼爱立信T618都在手机上出现了351***00这样的IMEI。幸好我们有前面介绍过的TAC码鉴别办法,如T618的IMEI虽然过去的FAC现 在统一为00但港行和大陆行货TAC后三位上还是有差异的.
SNR码
SNR码即序号码,也由厂家分配。识别每个TAC和FAC中的某个设备的。每一部手机的SNR都不会一样.简单的说该号码可以说明手机出产日期的先后,通常数值越大说明该机 型出厂时间越晚,所以如果一部刚上市不久的手机的IMEI上出现了6位的数字你就得小心了,因为刚上市不久的手机其SNR最多不会超过四位,大家可以在购 机时留意一下。也许这可以作为鉴别手机是否被JS修改IMEI的好办法之一
SP备用码
SP备用码,现在的SP基本上没有象过去文章所说那样“一般为0”了,其号码由厂家做设置,可忽略 当然,有些手机在IMEI 上做了自己的定义.爱立信手机在待机时输入*#06#就会出现17位的IMEI,其最后两位的主要作用是用来识别软件版本。这里需要说明的是三星V200 也开始使用17位的IMEI了,最后两位的主要作用是用来识别软件版本,一般来说数值越低版本也越低,比如T618的R1A版本为02而R1F版本则为 03,最新的R1L版本是05。
关于Android中的IMEI号码的问题:
标准IEMI获取方式:
package com.rocky.d0318;
import android.app.Activity;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.widget.TextView;
public class IMEIActivity extends Activity {
TelephonyManager tm;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tm=(TelephonyManager)this.getSystemService(TELEPHONY_SERVICE);
((TextView)this.findViewById(R.id.TextView01)).setText(tm.getDeviceId());
}
}
注意添加<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>权限。
MID类似的设备如何处理?
MID类似设备是没有RIF的。所以这里首先要确保
ro.simulated.phone=true
然后在SimulatedCommands.java (base/telephony/java/com/android/internal/telephony/test)
中重写 public void getIMEI(Message result)
这个里面我们可以用其他的唯一标示来实现这个IMEI值就可以。例如利用MAC地址等等。
这样就可以模拟一个IEMI了。这样YouTube,Google Market就可以使用了。