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

    文章

    2177

    浏览量

    66270
  • 蜂窝网络
    +关注

    关注

    2

    文章

    214

    浏览量

    23013
  • 鸿蒙
    +关注

    关注

    60

    文章

    2864

    浏览量

    45373
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【HarmonyOS 5】金融应用开发鸿蒙组件实践

    【HarmonyOS 5】金融应用开发鸿蒙组件实践 ##鸿蒙开发能力 ##HarmonyOS SDK应用服务##
    的头像 发表于 07-11 18:20 763次阅读
    【HarmonyOS 5】金融应用<b class='flag-5'>开发</b><b class='flag-5'>鸿蒙</b>组件实践

    鸿蒙5开发宝藏案例分享---一多开发实例(音乐)

    关联实际开发中的高频痛点,比如内存泄漏、跨端适配、服务卡片设计等。我整理了一份超全解读,带你解锁鸿蒙开发的“隐藏Buff”! 一、动态布局实战
    的头像 发表于 06-30 11:54 626次阅读

    鸿蒙5开发宝藏案例分享---埋点开发实战指南

    鸿蒙埋点开发宝藏指南:官方案例实战解析,轻松搞定数据追踪! 大家好呀!我是HarmonyOS开发路上的探索者。最近在折腾应用埋点时,意外发现了鸿蒙
    发表于 06-12 16:30

    鸿蒙5开发宝藏案例分享---切面编程实战揭秘

    鸿蒙切面编程(AOP)实战指南:隐藏的宝藏功能大揭秘! 大家好!今天在翻鸿蒙开发者文档时,意外发现了官方埋藏的「切面编程」宝藏案例!实际开发
    发表于 06-12 16:21

    鸿蒙5开发宝藏案例分享---一多开发实例(地图导航)

    ? 鸿蒙开发隐藏宝藏大公开!手把手教你玩转\"一多\"地图导航案例 ? 大家好呀!我是你们的老朋友,今天要给大家扒一扒鸿蒙官方文档里那些\"藏得深\"的实战
    发表于 06-03 16:17

    迅为RK3568开发板驱动指南GPIO子系统GPIO子系统API函数的引入

    迅为RK3568开发板驱动指南GPIO子系统GPIO子系统API函数的引入
    的头像 发表于 05-29 14:05 851次阅读
    迅为RK3568<b class='flag-5'>开发</b>板驱动指南GPIO<b class='flag-5'>子系统</b>GPIO<b class='flag-5'>子系统</b>API函数的引入

    迅为RK3568驱动指南GPIO子系统实战:实现动态切换引脚复用功能

    迅为RK3568驱动指南GPIO子系统实战:实现动态切换引脚复用功能
    的头像 发表于 05-22 14:27 1711次阅读
    迅为RK3568驱动指南GPIO<b class='flag-5'>子系统</b><b class='flag-5'>实战</b>:实现动态切换引脚复用功能

    开源鸿蒙开发新体验,开鸿Bot系列今日开启预售!

    开发者大礼包,其中含KaihongOS桌面版镜像包、KaihongOS桌面版二次开发包、实战课程、烧录指南等。同时,用户还可享受一对一技术顾问服务、优先体验新版本KaihongOS
    发表于 05-16 14:13

    鸿蒙服务实战-笑笑五子棋(1)

    鸿蒙服务实战-笑笑五子棋(1) 前言 作为鸿蒙应用的深度开发者都应该知道,经历了 波澜壮阔 12 月风波 ,到 2025 年新的开始。鸿蒙
    的头像 发表于 03-31 09:23 573次阅读
    <b class='flag-5'>鸿蒙</b>元<b class='flag-5'>服务实战</b>-笑笑五子棋(1)

    本周三晚7点!《手把手教你做PC》第四课:驱动子系统开发流程上-KHDF

    本周三晚七点,《KaihongOS笔记本电脑开发实战④——驱动子系统开发流程上-KHDF》即将启动!本次课程旨在帮助开发者了解KaihongOS驱动
    的头像 发表于 03-10 17:32 548次阅读
    本周三晚7点!《手把手教你做PC》第四课:驱动<b class='flag-5'>子系统开发</b>流程上-KHDF

    震撼发布!CodeArts 解锁全新技能,鸿蒙应用与元服务开发轻松拿捏

    随着物联网和智能设备的迅速发展,操作系统的多元化需求日益凸显。鸿蒙系统作为华为研发的面向全场景的分布式操作系统,旨在打破不同设备之间的生态壁垒,实现跨设备的无缝协同。 在
    的头像 发表于 02-26 11:45 2979次阅读
    震撼发布!CodeArts 解锁全新技能,<b class='flag-5'>鸿蒙</b>应用与元<b class='flag-5'>服务</b><b class='flag-5'>开发</b>轻松拿捏

    名单公布!【书籍评测活动NO.56】极速探索HarmonyOS NEXT:纯血鸿蒙应用开发实践

    开发的核心技术,以及鸿蒙应用在实际开发中的应用方法。 本书共分为四篇,共计16章,分别为鸿蒙开发基础篇、
    发表于 01-20 16:53

    《HarmonyOS第一课》焕新升级,赋能开发者快速掌握鸿蒙应用开发

    全局思维的人才,使其能够独立完成中大型应用和元服务开发、架构设计等复杂任务。涵盖中大型应用架构设计、鸿蒙特性开发、性能调优等核心技能,要求学员熟练掌握HarmonyOS各
    发表于 01-02 14:24

    鸿蒙Flutter实战:14-现有Flutter 项目支持鸿蒙 II

    分别安装官方的3.22版本,以及鸿蒙社区的 3.22.0 版本 3.搭建 Flutter鸿蒙开发环境 参考文章《鸿蒙Flutter实战:0
    发表于 12-26 14:59

    名单公布!【书籍评测活动NO.53】鸿蒙操作系统设计原理与架构

    操作系统从2019年8月9日正式发布,历时1778天,历经4代,鸿蒙生态设备数量已超过9亿,已有254万HarmonyOS开发者投入到鸿蒙世界的开发
    发表于 12-16 15:10