`
yidongkaifa
  • 浏览: 4069917 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多
手机专业术语中的漫游与我们日常生活中的“省内漫游”,“全国漫游”不是一回事。
这里的漫游,是指手机使用一个运营商的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()接口来获取手机是否处于漫游状态。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics