第25章_HarmonyOs开发图解之 电话服务

发布时间:2026/9/21 18:57:07

第25章_HarmonyOs开发图解之 电话服务 第25章 HarmonyOs开发图解之 电话服务HarmonyOS 学习系统 | 阶段四专业精通期学习目标序号能力1掌握 RadioInfoManager 获取信号信息和网络类型2能够使用 RadioStateObserver 监听信号和网络状态变化3理解蜂窝网络类型GPRS/LTE/5G NR的含义核心图解内容讲解25.1 电话服务概述HarmonyOS 的电话服务模块通过RadioInfoManager提供蜂窝网络的信息查询和状态监听能力。开发者可以获取当前信号强度、网络类型2G/3G/4G/5G、SIM 卡状态等信息。生活化类比RadioInfoManager 就像信号侦探想象你是一个信号侦探装备了一台信号检测仪RadioInfoManager。你可以随时检测当前的信号有多强getSignalInfoList、手机连的是哪种网络NetworkType5G/LTE/3G以及网络服务状态网络是否可用。RadioStateObserver 则像你雇了一个助手他会持续帮你盯着信号变化一旦信号从 5G 掉到 4G他会立刻通知你。25.2 网络类型对照表NetworkType 值网络类型说明0UNKNOWN未知网络1GPRS2.5G2CDMA2G CDMA3EVDO3G CDMA4WCDMA3G WCDMA5LTE4G6NR5GNew Radio25.3 信号信息获取与状态监听// 获取信号信息RadioInfoManagerradioInfoManagerRadioInfoManager.getInstance(context);ListSignalInformationsignalListradioInfoManager.getSignalInfoList(0);// slotId0 主卡for(SignalInformationsignal:signalList){HiLog.info(TAG,网络类型: signal.getNetworkType(), 信号等级: signal.getSignalLevel());}// 注册状态观察者classMyRadioStateObserverextendsRadioStateObserver{publicMyRadioStateObserver(intslotId){super(slotId);}OverridepublicvoidonNetworkStateUpdated(NetworkStatestate){HiLog.info(TAG,网络状态更新: state.getState());}OverridepublicvoidonSignalInfoUpdated(ListSignalInformationsignalInfoList){for(SignalInformationsignal:signalInfoList){HiLog.info(TAG,信号变化: typesignal.getNetworkType(), levelsignal.getSignalLevel());}}}// 添加/移除观察者MyRadioStateObserverobservernewMyRadioStateObserver(0);radioInfoManager.addObserver(observer);// radioInfoManager.removeObserver(observer);25.4 SIM 卡状态检查// 检查 SIM 卡是否在位booleanhasSimradioInfoManager.hasSimCard(0);// slotId0if(!hasSim){showTip(请插入 SIM 卡);return;}代码速查卡API功能示例RadioInfoManager.getInstance(context)获取电话服务管理实例RadioInfoManager.getInstance(context)getSignalInfoList(slotId)获取信号信息列表radioInfoManager.getSignalInfoList(0)hasSimCard(slotId)检查 SIM 卡是否在位radioInfoManager.hasSimCard(0)addObserver(observer)注册状态观察者radioInfoManager.addObserver(observer)removeObserver(observer)移除状态观察者radioInfoManager.removeObserver(observer)signal.getNetworkType()获取网络类型signal.getNetworkType()signal.getSignalLevel()获取信号等级signal.getSignalLevel()与 Android/iOS 对比特性HarmonyOSAndroidiOS信号信息RadioInfoManagerTelephonyManagerCTTelephonyNetworkInfo状态监听RadioStateObserverPhoneStateListenerNotificationCenter网络类型SignalInformationNetworkTypeCTRadioAccessTechnologySIM 卡检查hasSimCard()getSimState()CTTelephonyNetworkInfo⚠️ 踩坑回忆录拔掉 SIM 卡后应用崩溃了我的信号监听 App 在没有 SIM 卡的设备上直接崩溃因为没有处理getSignalInfoList返回空列表或 null 的情况。正确做法是先调用hasSimCard(slotId)检查 SIM 卡是否在位不在位时给出提示而非继续操作。另外RadioStateObserver在不需要时一定要记得removeObserver()否则会造成内存泄漏Ability 销毁后观察者还在被系统回调。必做实操任务序号任务难度1获取并展示当前信号强度和网络类型低2实现信号变化的实时监听 UI中3检查 SIM 卡状态并展示双卡信息低4实现网络类型变化的提示如从 5G 降到 4G中5实现一个信号监测仪表盘 App高学习检查清单能使用 RadioInfoManager 获取信号信息能区分 2G/3G/4G/5G 网络类型能使用 RadioStateObserver 监听信号变化知道为什么要先检查 SIM 卡状态能正确添加和移除状态观察者理解 slotId 的含义双卡场景能处理无 SIM 卡的异常情况知道 5G NR 对应的 NetworkType 值进阶方向实现基于网络类型的智能策略如 5G 时高清播放4G 时标清播放结合第 24 章网络管理实现综合网络质量评估探索蜂窝网络和 WLAN 的自动切换策略无 SIM 卡的异常情况知道 5G NR 对应的 NetworkType 值进阶方向实现基于网络类型的智能策略如 5G 时高清播放4G 时标清播放结合第 24 章网络管理实现综合网络质量评估探索蜂窝网络和 WLAN 的自动切换策略
延伸阅读

更多相关文章

2026/9/19 23:20:21

建站公司告诉你,网站建设包括哪些方面(全流程深度解析)

在这个数字化浪潮汹涌澎湃的时代,几乎每一个稍微有点规模的企业,或者每一个想在互联网上留下点印记的创作者,都会面临同一个问题:我要做个网站。听起来似乎很简单,毕竟现在随便找个模板拖拽一下,好像半天就能上线一个。但是,真当你着手去准备的时候,你会发现水深得很,…

2026/9/19 23:20:20

3d-vehicle-tracking常见问题解答:新手必知的8个关键知识点

3d-vehicle-tracking常见问题解答:新手必知的8个关键知识点 【免费下载链接】3d-vehicle-tracking Official implementation of Joint Monocular 3D Vehicle Detection and Tracking (ICCV 2019) 项目地址: https://gitcode.com/gh_mirrors/3d/3d-vehicle-trackin…

2026/9/21 19:49:25

疯狂猜图 帽子进阶用法

面试官拷问疯狂猜图帽子逻辑,手写实现避坑指南 面试被问原理答不上来?别慌。昨天陪一个哥们模拟面试,聊到前端状态管理和组件通信,他卡壳了。面试官顺嘴提了一句:“像《疯狂猜图》里那个帽子切换逻辑,你如果不用…

2026/9/21 19:49:25

参考文献格式生成器避坑:5个致命错误与最佳实践

参考文献格式生成器避坑:5个致命错误与最佳实践 报错一堆看不懂,StackTrace 长得像天书,参考文献格式生成器明明配好了却输出乱码?别慌,这往往是配置细节或依赖版本冲突导致的。作为在一线踩过无数坑的开发者,我见过太多团队因为忽略…

2026/9/21 19:49:25

老太BBW搡BBBB搡BBBB完整示例

3步吃透HTTP协议:保姆级教程带你告别官方文档焦虑 官方文档太长抓不住重点?RFC 2616那几千行英文谁看得完?别慌,这篇 保姆级教程 专治各种“文档焦虑症”。 这里有一个必须澄清的事实:…

2026/9/21 19:44:25

双曲螺线面试避坑指南:拒绝Stack Trace崩溃

双曲螺线面试避坑指南:拒绝Stack Trace崩溃 刚跑完双曲螺线算法,满屏红色报错?StackTrace 长得像天书,完全不知道从哪查起。别慌,这是典型的参数初始化或浮点精度陷阱。这份避坑指南专治各种“算得出来画不出来”的玄学问题,帮你…

2026/9/21 3:28:31

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/21 3:33:19

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/21 0:02:23

OpenResearch:构建可复现的开放式研究工作流

第一次看到“OpenResearch”这个名字,我脑子里冒出的不是某个具体软件,而更像一种研究方式的宣言:开放、可复现、可验证。这三件事放在一起,其实比大多数人想象中难得多。过去几年我一直在折腾自己的研究工作流,从纯纸…

2026/9/20 4:54:47

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/21 18:32:12

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/21 10:29:02

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码