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

    文章

    2515

    浏览量

    67175
  • 蜂窝网络
    +关注

    关注

    2

    文章

    215

    浏览量

    23435
  • 鸿蒙
    +关注

    关注

    60

    文章

    3074

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    开源鸿蒙开发者的跨界成长之路

    在开源鸿蒙开发者里,有一群“跨界先锋”,他们带着不同行业的积淀,在这片创新土壤上书写着独特的技术故事。张宇昕,浙江众合科技的鸿蒙系统服务
    的头像 发表于 01-23 09:13 1264次阅读

    M4-R1 开源鸿蒙(OpenHarmory)开发板丨串口调试助手实战案例

    支持与高集成度设计,成为开发者体验与学习鸿蒙系统的理想平台。无论是智慧家居、教学实验,还是设备通信,M4-R1都能提供稳定可靠的开发环境。本次分享的
    的头像 发表于 12-31 11:16 9468次阅读
    M4-R1 开源<b class='flag-5'>鸿蒙</b>(OpenHarmory)<b class='flag-5'>开发</b>板丨串口调试助手<b class='flag-5'>实战</b>案例

    【项目实战】基于Hi3861的鸿蒙智能小车(循迹、超声波避障、远程控制、语音控制、4G定位)有教程代码

    ,同时整理了详细开发文档资料,新手跟着也能慢慢搭起来,提升实战能力。项目硬件清单鸿蒙智能小车项目使用的是红框部分鸿蒙智能小车豪华套餐硬件以及语音控制项目模块。项目功能
    的头像 发表于 09-10 17:13 1651次阅读
    【项目<b class='flag-5'>实战</b>】基于Hi3861的<b class='flag-5'>鸿蒙</b>智能小车(循迹、超声波避障、远程控制、语音控制、4G定位)有教程代码

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

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

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

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

    迅为RK3568开发板新增topeet子系统-在产品中新增子系统

    build/subsystem_config.json文件中增加名为topeet的子系统,在3.4节已经新建了topeet 文件夹存放子系统代码。添加 topeet 子系统进行一个登记,说明
    发表于 06-16 10:43

    鸿蒙5开发宝藏案例分享---瀑布流优化实战分享

    鸿蒙瀑布流性能优化实战:告别卡顿的宝藏指南! 大家好!最近在鸿蒙文档里挖到一个 性能优化宝藏库 ,原来官方早就准备好了各种场景的最佳实践!今天重点分享「瀑布流加载慢丢帧」的解决方案,附完整代码解析
    发表于 06-12 17:41

    鸿蒙5开发宝藏案例分享---性能体验设计

    ;性能优化\"关键词! **如果大家在实战中遇到卡顿难题,欢迎在评论区交流~ 也欢迎关注我,后续会持续分享鸿蒙开发实战技巧! **✨ 希望这篇接地气的总结能帮你避开性能深坑!如果觉得有
    发表于 06-12 16:45

    鸿蒙5开发宝藏案例分享---性能优化案例解析

    鸿蒙性能优化宝藏指南:实战工具与代码案例解析 大家好呀!今天在翻鸿蒙开发者文档时,意外挖到一个 性能优化宝藏库 ——原来官方早就提供了超多实用工具和案例,但很多小伙伴可能没发现!这篇就
    发表于 06-12 16:36

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

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

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

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

    鸿蒙5开发宝藏案例分享---应用架构实战技巧

    大家好! 今天咱们聊聊鸿蒙开发中那些“官方文档提了但实际开发难找”的架构设计技巧。结合官方文档,我会用 真实代码案例+通俗讲解 ,帮你把分层架构和线程通信落地到项目里,告别“理论会了,代码不会
    发表于 06-12 16:14

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

    ?【开发者必看】鸿蒙隐藏宝箱大公开!这些实战案例让你的开发效率翻倍! 哈喽各位开发者小伙伴!今天要和大家分享一个让我拍大腿的发现——原来
    发表于 06-03 18:22

    鸿蒙5开发案例分享揭秘---一多开发实例(商务办公)

    车载系统应有尽有。建议大家直接去官网搜【一多开发实例】,保准打开新世界的大门! 最后送大家一句话: \"读十篇博客不如精研一个官方案例\" **,这些经过实战检验的代码才是真正的\"免坑金牌\"呀~如果大家发现了其他宝藏案例,欢
    发表于 06-03 16:24

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

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