鸿蒙开发实战:【电话服务子系统】

简介

电话服务子系统,提供了一系列的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

约束

  1. 目前开源的范围包括蜂窝通话(仅支持CS通话)、短信、数据上网,支持双SIM卡框架。
  2. 南向HDI依赖芯片厂商适配。

使用说明

具体请参考子模块README,下面以获取当前蜂窝网络信号信息和观察蜂窝网络状态变化为例,说明电话服务子系统接口调用请求和状态订阅的使用方法。

获取当前蜂窝网络信号信息

  1. 从@ohos.telephony.radio.d.ts中导入radio命名空间。

  2. 可以通过callback或者Promise的方式调用getSignalInformation(slotId: number)方法。

  3. 该接口为异步接口,结果会从callback中返回SignalInformation数组。

  4. 遍历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}`);
    });
    

观察蜂窝网络状态变化

添加观察事件

  1. 从@ohos.telephony.observer.d.ts中导入observer命名空间。

  2. 调用on(type: ‘networkStateChange’)方法,传入卡槽id(slotId)和收到事件的回调处理函数(callback),其中slotId为可选参数。

  3. 当网络状态发生变更时,调用者会收到回调。

    // 引入包名
    import observer from '@ohos.telephony.observer';// 开启订阅
    observer.on('networkStateChange', {slotId: 0}, (value) => {console.log(`network state is ` + value);
    });
    

停止观察

  1. 从@ohos.telephony.observer.d.ts中导入observer命名空间。

  2. 调用off(type: ‘networkStateChange’)方法,传入添加观察事件时的callback对象(可选)。

    // 引入包名
    import observer from '@ohos.telephony.observer';// 关闭订阅
    observer.off('networkStateChange');
    

    鸿蒙OpenHarmony知识已更新←前往

062b7e9f99042d0461e287c5c0ee8749.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/744691.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker进阶:深入了解 Dockerfile

Docker进阶&#xff1a;深入了解 Dockerfile 一、Dockerfile 概述二、Dockerfile 优点三、Dockerfile 编写规则四、Dockerfile 中常用的指令1、FROM2、LABEL3、RUN4、CMD5、ENTRYPOINT6、COPY7、ADD8、WORKDIR9、 ENV10、EXPOSE11、VOLUME12、USER13、注释14、ONBUILD 命令15、…

U盘启动盘 制作Linux Ubuntu CentOS系统启动盘 系统安装

U盘启动盘 制作Linux Ubuntu CentOS系统启动盘 系统安装 准备条件 准备一个U盘&#xff0c;建议容量至少为8GB&#xff0c;以便存放系统镜像文件 一台已经安装好操作系统的计算机&#xff0c;用于制作U盘启动盘 Ubuntu和CentOS的Linux ISO镜像文件。可以从官方网站或相关资源…

【学一点RISC-V】RISC-V IMSIC

IMSIC RISC-V AIA 文档 第三章 Incoming MSI Controller (IMSIC) 传入 MSI 控制器&#xff08;IMSIC&#xff09;是一个可选的 RISC-V 硬件组件&#xff0c;与 hart 紧密相连&#xff0c;每个 hart 有一个 IMSIC。IMSIC 接收并记录 Hart 的传入消息信号中断 (MSI)&#xff0c;并…

mysql笔记:8. 视图

文章目录 创建视图修改视图删除视图通过视图更新数据1. 插入数据2. 更新数据3. 删除数据 查看视图信息1. DESCRIBE2. SHOW TABLE STATUS3. SHOW CREATE VIEW4. 在views表中查看 数据库中的视图是一个虚拟表。同真实的表一样&#xff0c;视图包含一系列带有名称的列和行数据。行…

【框架学习 | 第五篇】SpringMVC(常用注解、获取请求参数、域对象共享数据、拦截器、异常处理、上传/下载文件)

文章目录 1.SpringMVC简介1.1定义1.2主要组件1.3工作流程1.3.1简要流程1.3.2详细流程 1.4优缺点 2.常用注解3.获取请求参数3.1通过 HttpServletRequest 获取请求参数3.2通过控制器方法的形参获取请求参数3.2.1请求路径参数与方法形参一致3.2.2请求路径参数与方法形参不一致3.2.…

【附学习笔记】现在学网络安全主要是实战还是打CTF?

作为一个5年资深网络安全工程师前来分享我的看法。 在我看来&#xff0c;无论是实战还是打CTF&#xff08;Capture The Flag&#xff0c;夺旗赛&#xff09;&#xff0c;都是学习网络安全的重要方面&#xff0c;只是侧重点可能有所不同。 网络安全是一个复杂且不断发展的领域…

优橙内推四川专场——5G网络优化(中高级)工程师

可加入就业QQ群&#xff1a;374637347 联系老师内推简历投递邮箱&#xff1a;hrictyc.com 内推公司1&#xff1a;中邮建技术有限公司 内推公司2&#xff1a;重庆爱信思科技有限责任公司 内推公司3&#xff1a;重庆信科通信工程有限公司 中邮建技术有限公司 中邮建技术有限…

Go微服务: 基于Go Micro框架实现微服务调用

Go Micro 1 &#xff09;概述 在具体的项目开发过程中&#xff0c;开发者聚焦的是业务逻辑的开发和功能的实现大量的环境配置&#xff0c;调试搭建等基础性工作会耗费相当一部分的精力因此有必要将微服务架构中所涉及到的&#xff0c;相关的解决方案做集中管理和维护Go Micro …

ThreadX(RTOS)在Ubuntu编译,并执行案例

关于ThreadX编程的调试&#xff0c;本篇不包含如何正确使用该系统应用在实际项目中&#xff0c;旨在无设备下想要了解该系统。 系统环境&#xff1a;Ubuntu20、gcc、cmake、ninja 代码下载&#xff1a;ThreadX版本6.4.1 https://github.com/eclipse-threadx/threadx/tree/ma…

Redis的快速入门【全方位进攻】

目录 什么是Redis? Redis的应用场景 Redis的常用指令 Redis的持久化机制 缓存穿透、缓存击穿与缓存雪崩 1.缓存穿透 2.缓存击穿 3.缓存雪崩 后续会持续更新!!! 什么是Redis? Redis是一个开源的、使用ANSI C语言编写的高性能Key-Value数据库,支持网络通信,并且可以基于内…

springboot学习(八十六) springboot使用graalvm编译native程序

一、windows环境下 1.下载graalvm的jdk https://injdk.cn/ 下载windows版本 配置java环境变量&#xff0c;配置过程略 2.下载visual Studio Build Tools 下载地址&#xff1a;https://aka.ms/vs/17/release/vs_BuildTools.exe 安装后选择组件&#xff1a; 其中windows S…

Java创建数组、赋值的四种方式,声明+创建+初始化 详解

文章目录 一、创建数组的四种方式二、详解三、数组存储的弊端 一、创建数组的四种方式 以int数据类型为例 Test public void testNewArray() {//创建数组//法一int[] arr1 new int[]{1,2,3,4,5};System.out.println(arr1.length " " arr1[2]); //5 3//Arr…

Linux发展史

Linux发展史 ​ Linux是一款较为安全、快速、稳定的操作系统&#xff0c;常用于后端的服务器&#xff1b; 一、计算机的发展史 ​ 1946年世界上第一台计算机埃尼阿克出世&#xff0c;此时的计算机主要是用于军事领域的&#xff0c;如&#xff1a;计算导弹的弹道轨迹。这个时…

《ElementPlus 与 ElementUI 差异集合》el-form-item CSS 属性 display 有变化

差异 element-ui el-form 中&#xff0c;属性display: flex; 导致元素在一排&#xff1b;element-plus el-form 中&#xff0c;属性display: block; 元素按照自己的属性排列&#xff1b; /* element ui */ display: block;/*element plus */ display: flex;如图所示 解决方案…

深度解析:cache的基本概念原理扫盲

引流关键词:缓存,高速缓存,cache, CCI,CMN,CCI-550,CCI-500,DSU,SCU,L1,L2,L3,system cache, Non-cacheable,Cacheable, non-shareable,inner-shareable,outer-shareable, optee、ATF、TF-A、Trustzone、optee3.14、MMU、VMSA、cache、TLB、arm、armv8、armv9、TEE、安全、内存…

【BUG 弹药库】Tortoise git 绿色的勾 ✔ 和 红色的 !突然不见了该如何解决呢?

文章目录 1. 出现的问题描述如下所示&#xff1a;2. 如何解决这个问题呢 &#xff1f; 1. 出现的问题描述如下所示&#xff1a; 用 TortoiseGit 提交代码的时候&#xff0c;红色的 ! 和 绿色的 ✔ 突然消失了&#xff1b; 2. 如何解决这个问题呢 &#xff1f; ① 首先按住快…

Windows / Mac应用程序在Linux系统中的兼容性问题 解决方案

Linux系统可以通过多种方式提高与Windows或Mac应用程序的兼容性。这里有一些解决方案 Windows应用程序兼容性解决方案&#xff1a; Wine Wine是一个允许Linux和Unix系统上运行Windows应用程序的兼容层。 它不是模拟器&#xff0c;而是实现了Windows API的开源实现。 许多W…

【OpenGL经验谈01】Vertex 规范最佳实践

目录 一、概述二、缓冲区对象的大小三、格式化VBO数据3.1 最小化顶点状态变化3.2 属性大小3.3 交织3.4 流属性 四、顶点、法线、特坐标五、动态VBO六、顶点布局规范 一、概述 在使用GLSL中&#xff0c;越是深入使用&#xff0c;越觉得难以把控&#xff0c;而且常常是黑屏无Deb…

flink重温笔记(十六): flinkSQL 顶层 API ——实时数据流结合外部系统

Flink学习笔记 前言&#xff1a;今天是学习 flink 的第 16 天啦&#xff01;学习了 flinkSQL 与企业级常用外部系统结合&#xff0c;主要是解决大数据领域数据计算后&#xff0c;写入到文件&#xff0c;kafka&#xff0c;还是mysql等 sink 的问题&#xff0c;即数据计算完后保存…

华为机试题-士兵的任务 2

题目 士兵在迷宫中执行任务,迷宫中危机重重,他需要在在最短的时间内到达指定的位置。你可以告诉土兵他最少需要多长时间吗? 输入一个 n m 的迷宫中,迷宫中 0 为路,1 为墙,2 为起点,3 为终点,4 为陷阱,6 为炸弹。士兵只能向上下左右四个方向移动,如果路径上为墙,不能移动。已知…