当前位置: 首页 > news >正文

第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)、手机连的是哪种网络(NetworkType:5G/LTE/3G),以及网络服务状态(网络是否可用)。RadioStateObserver 则像你雇了一个助手,他会持续帮你盯着信号变化,一旦信号从 5G 掉到 4G,他会立刻通知你。

25.2 网络类型对照表

NetworkType 值网络类型说明
0UNKNOWN未知网络
1GPRS2.5G
2CDMA2G CDMA
3EVDO3G CDMA
4WCDMA3G WCDMA
5LTE4G
6NR5G(New Radio)

25.3 信号信息获取与状态监听

// 获取信号信息RadioInfoManagerradioInfoManager=RadioInfoManager.getInstance(context);List<SignalInformation>signalList=radioInfoManager.getSignalInfoList(0);// slotId=0 主卡for(SignalInformationsignal:signalList){HiLog.info(TAG,"网络类型: "+signal.getNetworkType()+", 信号等级: "+signal.getSignalLevel());}// 注册状态观察者classMyRadioStateObserverextendsRadioStateObserver{publicMyRadioStateObserver(intslotId){super(slotId);}@OverridepublicvoidonNetworkStateUpdated(NetworkStatestate){HiLog.info(TAG,"网络状态更新: "+state.getState());}@OverridepublicvoidonSignalInfoUpdated(List<SignalInformation>signalInfoList){for(SignalInformationsignal:signalInfoList){HiLog.info(TAG,"信号变化: type="+signal.getNetworkType()+", level="+signal.getSignalLevel());}}}// 添加/移除观察者MyRadioStateObserverobserver=newMyRadioStateObserver(0);radioInfoManager.addObserver(observer);// radioInfoManager.removeObserver(observer);

25.4 SIM 卡状态检查

// 检查 SIM 卡是否在位booleanhasSim=radioInfoManager.hasSimCard(0);// slotId=0if(!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
网络类型SignalInformationNetworkTypeCTRadioAccessTechnology
SIM 卡检查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 的自动切换策略
http://www.jsqmd.com/news/1341675/

相关文章:

  • 2026深圳GEO服务商对比盘点:GEO技术路线与选型指南 - 机客
  • 基于Python与Django的新闻舆情分析系统:从数据采集到可视化实战
  • Awesome Restic完全指南:发现30+顶级备份工具与资源
  • 应届生如何搭上低空经济红利?这份选岗指南请收好
  • 5 银行同业存单业务
  • LAION-5B数据集详解:CLIP-ViT-B-16-laion2B-s34B-b88K训练数据的机遇与挑战
  • 终极指南:PyTorch-Spectral-Normalization-GAN架构对比(DCGAN vs ResNet)
  • Dell PowerEdge 服务器苏州采购渠道对比|授权代理商甄别方法
  • 智能体安全实战:OpenClaw如何防范越权与供应链投毒
  • 技术深度拆解:激光光谱检测为何比传统传感器稳定性高出一个量级
  • 2026年8月青岛到东莞物流,究竟何时能预约提货?快来一探究竟!
  • 百分书童“讲题+同步”、作业帮搜题、学而思上课?一文看懂哪款AI学习软件真的适合孩子使用
  • 如何快速掌握ppInk:10个高效屏幕标注技巧与快捷键指南
  • YoloDotNet开源贡献指南:如何参与项目开发与改进
  • 10Eros-conversions项目全面解析:从文本到视频的革命性量化模型转换方案
  • 揭秘HealDA核心技术:HPX Vision Transformer如何实现1°精度大气模拟
  • 多智能体(Multi-Agent)编排实战:用 LangGraph 构建生产级 AI 系统
  • 用了段时间 Qoder,随便聊聊感受
  • 如何在Windows上轻松安装安卓应用:APK Installer完全指南
  • 3分钟免安装微信解决方案:wechat-need-web浏览器插件详解
  • 新兴网站建设如何助力中小企业在数字化浪潮中脱颖而出
  • Kubernetes权限管理实战:Headlamp如何让RBAC配置变得简单直观
  • 从1.0到1.3:forensictools的进化之路与未来路线图
  • 单片机毕设项目:基于 STM32 的水位传感器采集与分级 LED 指示控制系统设计 基于 STM32 单片机的多按键阈值配置智能水体管控系统(011802)
  • PyTorch框架——基于深度学习MobileViT神经网络鸟类识别分类系统源码
  • 外贸独立站推广获客技巧及案例
  • vite-plugin-html高级技巧:EJS模板语法与数据注入的艺术
  • 一图四席!派拉软件入选《2026人工智能安全产业全景图》四大核心赛道
  • 达梦数据库同构异构 DBLINK
  • 想在开平买纯种圆环观赏鸽,养殖场怎么选才靠谱啊?