简介
电话服务子系统,提供了一系列的API用于获取无线蜂窝网络和SIM卡相关的一些信息。应用可以通过调用API来获取当前注册网络名称、网络服务状态、信号强度以及SIM卡的相关信息。
各个模块主要作用如下:
- 核心服务模块:主要功能是初始化RIL管理、SIM卡和搜网模块。
- 通话管理模块:主要功能是管理CS(Circuit Switch,电路交换)、IMS(IP Multimedia Subsystem,IP多媒体子系统)和OTT(over the top,OTT解决方案)三种类型的通话,申请通话所需要的音视频资源,处理多路通话时产生的各种冲突。
- 蜂窝通话模块:主要功能是实现基于运营商网络的基础通话。
- 蜂窝数据模块:主要功能是实现基于运营商网络的蜂窝数据上网。
- 短彩信模块:主要功能是短信收发和彩信编解码。
- 状态订阅模块:主要功能是提供电话服务子系统各种消息事件的订阅以及取消订阅的API。
- 数据存储模块:主要功能是持久化数据存储,提供DataAbility访问接口。
- RIL Adapter模块: 主要功能是与modem通信接口的适配。
图 1 子系统架构图
目录
base/telephony/
├── core_service # 核心服务
├── call_manager # 通话管理
├── cellular_call # 蜂窝通话
├── cellular_data # 蜂窝数据
├── sms_mms # 短彩信
├── state_registry # 状态订阅
├── data_storage # 数据存储
└── ril_adapter # RIL Adapter
约束
使用说明
具体请参考子模块README,下面以获取当前蜂窝网络信号信息和观察蜂窝网络状态变化为例,说明电话服务子系统接口调用请求和状态订阅的使用方法。
获取当前蜂窝网络信号信息
- 从@ohos.telephony.radio.d.ts中导入radio命名空间。
- 可以通过callback或者Promise的方式调用getSignalInformation(slotId: number)方法。
- 该接口为异步接口,结果会从callback中返回SignalInformation数组。
- 遍历SignalInformation数组,获取不同制式(signalType)的信号强度(signalLevel)。
// 引入包名 import radio from "@ohos.telephony.radio"; // 参数赋值 let slotId = 0; // 调用接口【callback方式】 radio.getSignalInformation(slotId, (err, value) = > { if (err) { // 接口调用失败,err非空 console.error(`failed to getSignalInformation because ${err.message}`); return; } // 接口调用成功,err为空 for (let i = 0; i < value.length; i++) { console.log(`success to getSignalInformation: type is ${value[i].signalType}, level is ${value[i].signalLevel}`); } }); // 调用接口【Promise方式】 let promise = radio.getSignalInformation(slotId); promise.then((value) = > { // 接口调用成功,此处可以实现成功场景分支代码。 for (let i = 0; i < value.length; i++) { console.log(`success to getSignalInformation: type is ${value[i].signalType}, level is ${value[i].signalLevel}`); } }).catch((err) = > { // 接口调用失败,此处可以实现失败场景分支代码。 console.error(`failed to getSignalInformation because ${err.message}`); });
观察蜂窝网络状态变化
添加观察事件
- 从@ohos.telephony.observer.d.ts中导入observer命名空间。
- 调用on(type: 'networkStateChange')方法,传入卡槽id(slotId)和收到事件的回调处理函数(callback),其中slotId为可选参数。
- 当网络状态发生变更时,调用者会收到回调。
// 引入包名 import observer from '@ohos.telephony.observer'; // 开启订阅 observer.on('networkStateChange', {slotId: 0}, (value) = > { console.log(`network state is ` + value); });
停止观察
从@ohos.telephony.observer.d.ts中导入observer命名空间。
调用off(type: 'networkStateChange')方法,传入添加观察事件时的callback对象(可选)。
// 引入包名 import observer from '@ohos.telephony.observer'; // 关闭订阅 observer.off('networkStateChange');
审核编辑 黄宇
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网
网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
API
+关注
关注
2文章
1499浏览量
61960 -
蜂窝网络
+关注
关注
2文章
208浏览量
21643 -
鸿蒙
+关注
关注
57文章
2339浏览量
42805
发布评论请先 登录
相关推荐
【书籍评测活动NO.53】鸿蒙操作系统设计原理与架构
操作系统从2019年8月9日正式发布,历时1778天,历经4代,鸿蒙生态设备数量已超过9亿,已有254万HarmonyOS开发者投入到鸿蒙世界的开发
发表于 12-16 15:10
鸿蒙原生开发手记:03-元服务开发全流程(开发元服务,只需要看这一篇文章)
获取和使用
相较于小程序系统原生丝滑流畅
轻量应用程序形态具备秒开直达纯净清爽服务相伴恰合时宜即用即走账号相随一体两面嵌入运行原生智能全域搜索高效开发生而可信等特征。
特点
秒开直达即开即用无开屏
发表于 11-23 21:52
鸿蒙原生开发手记:01-元服务开发
简介
元服务是鸿蒙中的一种轻量应用形态,无需下载,直接运行。类似于微信小程序,但与小程序不同的是,元服务更加轻量。
元服务使用原生开发,是
发表于 11-14 17:28
鸿蒙Flutter实战:08-如何调试代码
# 鸿蒙Flutter实战:如何调试代码
## 1.环境搭建
参考文章[鸿蒙Flutter实战:01-搭建开发环境](https://g
发表于 10-23 16:29
鸿蒙Flutter实战:07混合开发
# 鸿蒙Flutter实战:混合开发
鸿蒙Flutter混合开发主要有两种形式。
## 1.基于har
将flutter module
发表于 10-23 16:00
鸿蒙开发实战:【Hdf Framework】
该仓主要存放OpenHarmony驱动子系统核心源码信息(包括驱动框架、配置管理、配置解析、驱动通用框架模型、硬件通用平台能力接口等),旨在为开发者提供更精准、更高效的开发环境,力求做到一次开
鸿蒙开发学习:【驱动子系统】
OpenHarmony驱动子系统采用C面向对象编程模型构建,通过平台解耦、内核解耦,兼容不同内核,提供了归一化的驱动平台底座,旨在为开发者提供更精准、更高效的开发环境,力求做到一次开发
软通动力与鸿蒙生态服务双方将共同聚焦鸿蒙原生应用开发和培训领域
3月8日,软通动力与鸿蒙生态服务(深圳)有限公司(以下简称“鸿蒙生态服务公司”)签署合作协议,双方将共同聚焦鸿蒙原生应用
鸿蒙实战应用开发:【拨打电话】功能
概述
本示例通过输入电话,进行电话拨打,及电话相关信息的显示。
样例展示
涉及OpenHarmony技术特性
网络通信
基础信息
拨打电话
介绍
本示例使用call相关接口实现了拨
发表于 03-04 20:22
鸿蒙实战项目开发:【短信服务】
数据管理
电话服务
分布式应用开发
通知与窗口管理
多媒体技术
安全技能
任务管理
WebGL
国际化开发
应用测试
DFX面向未来设计
鸿蒙
发表于 03-03 21:29
鸿蒙原生应用/元服务实战-Web隐私声明
这个位置的隐私申明是需要在WEB网页下完成的,ArkTS鸿蒙原生应用与元服务开发者,不一定熟悉这块,一些公司也不一定有自己的服务器和域名、网站网页或者相关权限是外包,没法进行实时操作。
发表于 01-24 15:05
评论