(1)IMEI(International Mobile Equipment Identity)是国际移动设备身份码的缩写,国际移动装备辨识码,是由15位数字组成的"电子串号",它与每台手机一一对应,而且该码是全世界唯一的。我们写的imei号是写在手机里面的,但是imei号是基站识别手机的一个标识,和sim卡是有关联的但本质是独立的。
(2)2004年以前的标准中,IMEI共15位(取值必须是0~9的数字),依次分别是6位TAC、2位FAC、6位SNR、1位CD校验位。2004年以后的标准中删去了最后的1位CD校验位,新加入了2位SVN(software version number),故称IMEISV,共16位(取值仍必须是0~9的数字)。
网络对于IMEI或者IMEISV的检查是非必须的,各运营商会按照自己的策略在通信的某个阶段检查手机的IMEI或者IMEISV,并可能做进一步的动作。可能检查IMEI或者IMEISV的阶段有:A,开机注册网络时;B,周期性位置更新时;C,进行接打电话、收发短信、上网等业务时;D,或者其他(根据运营商的策略决定)。网络检查的时候会指明检查IMEI还是IMEISV,如果是检查IMEI,则手机许上报前14位IMEI(1位CD校验位不上报),如果是检查IMEISV,则手机上报16位IMEISV。
(3)这个号码是存在手机NVRAM里面的,以前一直以为返回IMEI号是直接读存储器就行了,直到最近看android手机CODE,发现需要AT命令交互,如下:
void getIMEI(int sim, char *result) { .......... if(sim==1) strcpy(buf, "AT+EGMR=0,7\r\n"); else strcpy(buf, "AT+EGMR=0,10\r\n"); fd= open("/dev/ttyC0",O_RDWR); write(fd,buf,strlen(buf)); usleep(200000); read(fd,buf,1024); close(fd); ............. }
=============================================================================================================
IMSI是国际移动用户识别码的简称(International Mobile Subscriber Identity),IMSI共有15位,其结构如下:MCC+MNC+MIN。MCC:Mobile Country Code,移动国家码,共3位,中国为460;MNC:Mobile NetworkCode,移动网络码,共2位,在中国,移动的代码为电00和02,联通的代码为01,电信的代码为03。所以合起来就是(Android手机中APN配置文件中的代码):中国移动:46000 46002;中国联通:46001;中国电信:46003。比如一个典型的IMSI号码为460030912121001。
======================================================================================================
apn设定在CODE中的体现,有XML文件载入。一个例子如下: