PLMN

PLMN(Public Land Mobile Network,公共陆地移动网络),由政府或它所批准的经营者,为公众提供陆地移动通信业务目的而建立和经营的网络。该网路通常与公众交换电话网(PSTN)互连,形成整个地区或国家规模的通信网。PLMN = MCC + MNC,例如中国移动的PLMN为46000,中国联通的PLMN为46001。

PLMN的分类

对于一个特定的终端来说,通常需要维护几种不同类型的PLMN列表,每个列表中会有多个PLMN。

RPLMN(Registered PLMN 已登记PLMN):已登记PLMN。是终端在上次关机或脱网前登记上的PLMN。在3GPP 2003年第TSG TP-21次会议上决定,将该参数从USIM卡上删掉,而将其保存在终端的内存中。

EPLMN(Equivalent PLMN 等效PLMN):为与终端当前所选择的PLMN处于同等地位的PLMN,其优先级相同。⑶EHPLMN(EquivalentHome PLMN 等效本地PLMN):为与终端当前所选择的PLMN处于同等地位的本地PLMN。其实:EHPLMN和EPLMN就好比是中移动的新建的158网络,而PLMN就好比是原来的135~139网络。

HPLMN(Home PLMN 归属PLMN):为终端用户归属的PLMN。也就是说,终端USIM卡上的IMSI号中包含的MCC和MNC与HPLMN上的MCC和MNC是一致的,对于某一用户来说,其归属的PLMN只有一个。

VPLMN(Visited PLMN 访问PLMN):为终端用户访问的PLMN。其PLMN和存在SIM卡中的IMSI的MCC,MNC是不完全相同的。当移动终端丢失覆盖后,一个VPLMN将被选择。

UPLMN(User Controlled PLMN 用户控制PLMN):是储存在USIM卡上的一个与PLMN选择有关的参数。

OPLMN(Operator Controlled PLMN 运营商控制PLMN):是储存在USIM 卡上的一个与PLMN选择有关的参数。⑻FPLMN(Forbidden PLMN禁用PLMN):为被禁止访问的PLMN,通常终端在尝试接入某个PLMN被拒绝以后,会将其加到本列表中。

APLMN(Approve PLMN 可捕获PLMN):为终端能在其上找到至少一个小区,并能读出其PLMN标识信息的PLMN。 

手机PLMN显示名称

之前都是做独立应用的,这次,要负责处理Telephony相关问题,很多知识点也是一步步了解的。

在 系统设置 -> 网络和互联网 -> 移动网络 -> 高级 -> 自动选择网络:点击关闭自动选网,会弹出自动搜网的等待框,此时进入搜索网络状态,等一会儿,搜索结束,会弹出网络列表选择对话框。

搜索结束弹出的网络选择列表

        测试报告的问题,基本都是名称不对、多出了某些网络。当然,我们的项目是MTK平台的,MTK基线默认的代码,这边有所不一样,每个网络会显示对应的网络类型(2G/3G/4G等),比如中国移动会显示三个结果,分别对应2G、3G、4G。按客户要求,这些多余的修改都得去掉的。

    这些网络的默认名称怎么显示?

    网络名称显示这部分比较复杂,Spec对这也有明确的规定,根据其优先级由高往低介绍(其优先级参考TS 22.101),

1. Enhanced Operator Name String,也就是Eons。此种方式的名称是存放在EF_PNN(PLMN Network Name, fid: 6FC5)和EF_OPL(Operator PLMN List, fid: 6FC6)中。这部分的代码可以参考SIMRecords.java中的getEonsIfExist()方法。

2. Common PCN Handset Specification Operator Name String,也就是CPHS ONS。需要当前注册的是HPLMN网络。这部分的代码可以参考SIMRecords.java中的读取CPHSOns文件的部分。

3. NITZ Operator Name,此名称是由所注册的网络下发给手机的,参考TS22.042。如果网络有下发这个数据给手机,modem会通过”+CIEV: 10”把数据传给AP端,AP端会用这个数据来当成网络名称,另外AP端还会把这个数据和对应的网络PLMN一同记下来,当之后注册上的网络仍是这个PLMN,这显示的网络名称还会是这个网络名称。这部分的代码可以参考ril_nw.c中的onNitzOperNameReceived()。

4. ROM,这一个是存储在手机flash中的,目前的存储方式是xml文件。如果是有打开支持MVNO的option,那么以下xml都依次读取,如果读取到就终止往下读了。如果没有MVNO,那么仅仅读取spn-conf.xml。如果没有读取到那么显示plmn号了。Virtual-spn-conf-by-efspn.xml、Virtual-spn-conf-by-imsi.xml、Virtual-spn-conf-by-efpnn.xml、Virtual-spn-conf-by-efgid1.xml、Spn-conf.xml,这部分的代码可以参考ril.java中的 lookupOperatorName()方法和SpnOverride类。

第一种和第二种都是从SIM卡读取的,这也就是为什么,同样的网络,插入不同的卡,网络名称会不一样,这是正常的,不是bug,不能乱改。

你可能感兴趣的:(PLMN)