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

发布时间:2026/8/6 20:00:45
第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 的自动切换策略