第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 的自动切换策略

相关新闻

单应用下RabbitMQ如何保证线程安全,及多应用下抢数据问题

单应用下RabbitMQ如何保证线程安全,及多应用下抢数据问题

ˆRabbitMQ—š„„‹¡Œ‚•¢‡š„ˆŒˆConsumerŒ‹‰…šŒ‰…˜‘›š„¢˜…ž‹†™•ˆ Retrieving Messages By Subscription ("push API") ‰ ˆ‘‘ŽŒRabbitMQœŠ¡™šœŸ——†…‘€‡š„ˆ™C…

2026/10/18 4:45:37 阅读更多 →
建站公司告诉你,网站建设包括哪些方面(全流程深度解析)

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

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

2026/10/18 17:53:01 阅读更多 →
3d-vehicle-tracking常见问题解答:新手必知的8个关键知识点

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/10/18 8:45:14 阅读更多 →

最新新闻

数据范围决定算法选型:从O(n log n)到O(n)

数据范围决定算法选型:从O(n log n)到O(n)

我去年处理过一个挺有意思的活儿:某内部工具需要在上亿条日志里按时间窗口做聚合统计,数据的时间戳全部落在最近三个月内。一开始我按教科书思路上了红黑树、跳表这类“高级”结构,结果在真实数据上跑得还不如后来换上的一个普通数组快。原因…

2026/10/19 22:32:32 阅读更多 →
Open Code Review:面向可复现与可审计的代码审查新范式

Open Code Review:面向可复现与可审计的代码审查新范式

1. “open-code-review”不是工具名,而是一类新型代码审查范式的代号你搜“open-code-review”,大概率会撞上一堆零散的 GitHub 仓库、CLI 工具片段、LLM 集成脚本,甚至有人把它当成某个具体开源项目的名称——但其实它根本不是。它是一个正在…

2026/10/19 22:32:32 阅读更多 →
基于YOLOv10的野生动物识别检测系统实战解析

基于YOLOv10的野生动物识别检测系统实战解析

1. 项目概述先聊点实际的。野生动物识别这事儿,放在几年前做,门槛比现在高得多——你得懂图像特征提取、懂 SVM 分类器、还得手工设计一堆特征描述子,等你把这些搞定,野外环境的复杂光照、树枝遮挡、动物姿态变化,随手…

2026/10/19 22:32:32 阅读更多 →
具身智能认知架构:从脑到本体的神经符号融合与工程落地

具身智能认知架构:从脑到本体的神经符号融合与工程落地

1. 具身智能认知架构到底在解决什么问题1.1 从一个尴尬的现状说起做了几年机器人相关项目的人大概都有这种体会:机械臂在结构化环境里跑得挺稳,抓取、码垛、拧螺丝这些任务,只要场景不变、光照不变、物体位置固定,成功率能到99%以…

2026/10/19 22:24:16 阅读更多 →
5个AI工具让创业者效率翻倍:会议纪要、内容生成、数据解读、客户跟进、流程自动化

5个AI工具让创业者效率翻倍:会议纪要、内容生成、数据解读、客户跟进、流程自动化

如果只给自己留一个判断标准来选AI工具,我会选这一个:它能不能把一个星期里重复十几次的机械动作,压缩成一次性的规则和提示词。创业者最值钱的不是执行力,而是判断力和决策质量,但现实是,大部分人的精力都…

2026/10/19 22:23:15 阅读更多 →
Atlas数据库迁移实战:声明式与版本化工作流解析

Atlas数据库迁移实战:声明式与版本化工作流解析

1. Atlas是什么:一个让数据库变更不再“失控”的迁移工具1.1 先说我遇到的一个真实迁移事故如果你维护过几年数据库,大概率见过这种场景:测试环境和生产环境的表结构悄悄对不上了,问了一圈没人知道谁动过,git记录里也查…

2026/10/19 22:23:15 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →