0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-03-14 21:49 次阅读

简介

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

    审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • API
    API
    +关注

    关注

    2

    文章

    1382

    浏览量

    60992
  • 蜂窝网络
    +关注

    关注

    2

    文章

    201

    浏览量

    21416
  • 鸿蒙
    +关注

    关注

    55

    文章

    1629

    浏览量

    42120
收藏 人收藏

    评论

    相关推荐

    鸿蒙开发图形图像:【图形子系统

    图形子系统主要包括UI组件、布局、动画、字体、输入事件、窗口管理、渲染绘制等模块,构建基于轻量OS应用框架满足硬件资源较小的物联网设备或者构建基于标准OS的应用框架满足富设备的OpenHarmony系统应用开发
    的头像 发表于 03-23 16:50 342次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>图形图像:【图形<b class='flag-5'>子系统</b>】

    鸿蒙开发实战:【Hdf Framework】

    该仓主要存放OpenHarmony驱动子系统核心源码信息(包括驱动框架、配置管理、配置解析、驱动通用框架模型、硬件通用平台能力接口等),旨在为开发者提供更精准、更高效的开发环境,力求做到一次
    的头像 发表于 03-21 20:29 112次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b><b class='flag-5'>实战</b>:【Hdf Framework】

    鸿蒙开发实战:【系统服务管理部件】

    samgr组件是OpenHarmony的核心组件,提供OpenHarmony系统服务启动、注册、查询等功能。
    的头像 发表于 03-21 17:56 163次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b><b class='flag-5'>实战</b>:【<b class='flag-5'>系统</b><b class='flag-5'>服务</b>管理部件】

    鸿蒙开发实战:【系统服务框架部件】

    系统服务管理子系统中safwk组件定义OpenHarmony中SystemAbility的实现方法,并提供启动、注册等接口实现。
    的头像 发表于 03-21 15:44 129次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b><b class='flag-5'>实战</b>:【<b class='flag-5'>系统</b><b class='flag-5'>服务</b>框架部件】

    鸿蒙开发实战:【包管理子系统

    包管理子系统负责应用安装包的管理,提供安装包的信息查询、安装、更新、卸载和包信息存储等能力
    的头像 发表于 03-14 15:23 145次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b><b class='flag-5'>实战</b>:【包管理<b class='flag-5'>子系统</b>】

    鸿蒙实战应用开发:【拨打电话】功能

    概述 本示例通过输入电话,进行电话拨打,及电话相关信息的显示。 样例展示 涉及OpenHarmony技术特性 网络通信 基础信息 拨打电话 介绍 本示例使用call相关接口实现了拨
    发表于 03-04 20:22

    鸿蒙实战项目开发:【短信服务

    数据管理 电话服务 分布式应用开发 通知与窗口管理 多媒体技术 安全技能 任务管理 WebGL 国际化开发 应用测试 DFX面向未来设计 鸿蒙
    发表于 03-03 21:29

    鸿蒙这么大声势,为何迟迟看不见岗位?最新数据来了

    基础》 ArkTS语言 安装DevEco Studio 运用你的第一个ArkTS应用 ArkUI声明式UI开发 .…… 《鸿蒙开发进阶》 Stage模型入门 网络管理 数据管理 电话
    发表于 02-29 20:53

    鸿蒙系统优缺点,能否作为开发者选择

    星河版已经是纯血鸿蒙,但是它的发展一些周期。生态圈的建立难度大,各大厂商加入鸿蒙原生开发需要时间累积。 鸿蒙开发人才空缺,由于
    发表于 02-16 21:00

    使用 Taro 开发鸿蒙原生应用 —— 快速上手,鸿蒙应用开发指南

    随着鸿蒙系统的不断完善,许多应用厂商都希望将自己的应用移植到鸿蒙平台上。最近,Taro 发布了 v4.0.0-beta.x 版本,支持使用 Taro 快速开发
    的头像 发表于 02-02 16:09 384次阅读
    使用 Taro <b class='flag-5'>开发</b><b class='flag-5'>鸿蒙</b>原生应用 —— 快速上手,<b class='flag-5'>鸿蒙</b>应用<b class='flag-5'>开发</b>指南

    鸿蒙原生应用/元服务实战-Web隐私声明

    这个位置的隐私申明是需要在WEB网页下完成的,ArkTS鸿蒙原生应用与元服务开发者,不一定熟悉这块,一些公司也不一定有自己的服务器和域名、网站网页或者相关权限是外包,没法进行实时操作。
    发表于 01-24 15:05

    鸿蒙原生应用/元服务实战-AGC团队账户

    多人及内外结合去开发运营鸿蒙原生应用元服务时,需要用到团队账户,AGC提供了强大的团队角色与权限分工能力。 团队帐号是开发者联盟为实名开发
    发表于 01-18 16:38

    1月18号“纯鸿蒙”千帆启航,程序员预备!

    …… 《鸿蒙开发进阶》http://qr61.cn/oWQPaX/qU3VHZO 1.Stage模型入门 2.网络管理 3.数据管理 4.电话服务 5.分布式应用
    发表于 01-16 22:13

    免费学习鸿蒙(HarmonyOS)开发,一些地址分享

    国内一流高校。通过鸿蒙班的设立,高校可以为学生提供专业的鸿蒙OS学习环境和丰富的实践机会,培养出更多的鸿蒙开发人才,为鸿蒙OS
    发表于 01-12 20:48

    鸿蒙原生应用/元服务开发-消息通知整体说明

    。显示当前正在进行的事件,如下载等。HarmonyOS通过ANS(Advanced Notification Service,通知系统服务)对通知类型的消息进行管理,支持多种通知类型,如基础类型通知
    发表于 01-08 15:26