如何判断手机是否处于漫游状态

手机专业术语中的漫游与我们日常生活中的“省内漫游”,“全国漫游”不是一回事。
这里的漫游,是指手机使用一个运营商的SIM卡,注册上另一个运营商的网络。
判定是否漫游,是通过比较sim卡的PLMN与注册上网络的PLMN,不会去check是本地卡还是异地卡。
代码中更新手机漫游状态,是在srv_nw_info_update_roaming_state()中。
        cntx->is_roaming =
            !is_on_hplmn_by_spec_criteria &&
            !t_mobile_sim_in_t_mobile_network &&
            !same_pnn_by_phone_table;
    is_on_hplmn_by_spec_criteria,t_mobile_sim_in_t_mobile_network,same_pnn_by_phone_table。当这个3个条件都不满足即是漫游状态,界面上会显示Roaming icon。
 (1)plmn_match_by_spec_criteria()是实现spec(3GPP TS 23.122 --Annex A:HPLMN Matching Criteria)。
(2)t_mobile_sim_in_t_mobile_network,是对使用T-mobile sim卡的特殊处理。
(3)same_pnn_by_phone_table,是针对一些有多个plmn的运营商所做特殊处理。
例如China Mobile有“46000,46002,46007”3个plmn,当sim plmn是46000,注册上网络plmn是46002时,虽然sim PLMN与注册上网络plmn不相同,但是都是属于同一运营商China Mobile,不处于roaming状态。
在log(filter设为MOD_MMI_COMMON_APP(Trace_Group_3))中,可以看到以上3个条件的值,以及是否处于漫游状态。
 
代码中,可以通过srv_nw_info_is_roaming()接口来获取手机是否处于漫游状态。

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://www.cnblogs.com/captainbed

猜你喜欢

转载自www.cnblogs.com/kwincaq/p/10189939.html