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

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

3天内不再提示

鸿蒙开发实战【通话管理】

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-03-14 20:10 次阅读

简介

通话管理模块主要管理CS(Circuit Switch,电路交换)、IMS(IP Multimedia Subsystem,IP多媒体子系统)和OTT(over the top,OTT解决方案)三种类型的通话,负责申请通话所需要的音视频资源,并处理多路通话时产生的各种冲突。通话管理主要分为UI交互、服务管理、系统通话管理、通话音频管理、通话视频管理和蓝牙通话管理六大模块,各模块简介如下:

  1. UI交互模块:负责和通话UI交互,如UI调用接口拨号,上报来电等状态给UI。
  2. 服务管理模块:负责启动和初始化系统通话管理服务。
  3. 系统通话管理模块:负责处理通话下行操作(如拨号、接听、挂断等)和上行状态(来电状态、呼叫等待状态等)的处理,并解决通话过程中产生的冲突。
  4. 通话音频管理模块:负责通话时需要的音频资源的申请和释放,依赖多媒体子系统,需要调用多媒体子系统接口进行音频相关的操作。
  5. 通话视频管理模块:负责通话时需要的视频资源的申请和释放,依赖多媒体子系统,需要调用多媒体子系统接口进行视频相关的操作。
  6. 蓝牙通话管理模块:负责通话时需要的蓝牙资源的申请和释放,并处理蓝牙设备发起的通话操作,如接听和挂断等。

其主要的结构及流程如下图所示:

图 1 通话管理模块架构图

约束

  • 开发语言:JavaScript。
  • 软件上,需要与以下子系统和服务配合使用:安全子系统,多媒体子系统,软总线基础通信子系统(蓝牙模块),Telephony核心服务(core_service),蜂窝通话服务(cellular_call)。
  • 硬件上,需要搭载的设备支持以下硬件:扬声器或听筒、麦克风。

接口说明

表 1 通话管理对外提供的接口

[]()[]()接口内容[]()[]()接口描述[]()[]()所需权限
[]()[]()function dial(phoneNumber: string, options: DialOptions, callback: AsyncCallback): void;[]()[]()拨号接口,调用此接口可以进行拨号操作[]()[]()ohos.permission.PLACE_CALL

表 2 拨号接口参数说明

[]()[]()参数[]()[]()描述
[]()[]()phoneNumber: string[]()[]()电话号码
[]()[]()options: DialOptions[]()[]()扩展参数(详见下表)
[]()[]()callback: AsyncCallback[]()[]()异步执行结果,true表示执行成功,false表示执行失败

表 3 options: DialOptions参数说明

[]()[]()参数[]()[]()类型[]()[]()描述[]()[]()是否必填[]()[]()默认值
[]()[]()extras[]()[]()boolean[]()[]()false:音频 true:视频[]()[]()否[]()[]()false

使用说明

拨打电话接口调用流程及示例代码

  1. 构造phoneNumber和options参数;

  2. 可以通过callback或者Promise的方式调用dial接口。

  3. 该接口为异步接口,相关执行结果会从callback中返回。

    import call from "@ohos.telephony.call";
    
    let phoneNumber = "12312312312";
    
    // 调用接口【callback方式】
    call.dial(phoneNumber, {extras: false}, (err, value) = > {
      if (err) {
        // 接口调用失败,err非空
        console.error(`failed to dial because ${err.message}`);
        return;
      }
      // 接口调用成功,err为空
      console.log(`success to dial: ${value}`);
    });
    
    // 调用接口【Promise方式】
    let promise = call.dial(phoneNumber, {extras: false});
    promise.then((value) = > {
      // 接口调用成功,此处可以实现成功场景分支代码。
      console.log(`success to dial: ${value}`);
    }).catch((err) = > {
      // 接口调用失败,此处可以实现失败场景分支代码。
      console.error(`failed to dial because ${err.message}`);
    });
    

    审核编辑 黄宇

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

    关注

    57

    文章

    2398

    浏览量

    43133
收藏 人收藏

    评论

    相关推荐

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

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

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

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

    鸿蒙Flutter实战:11-使用 Flutter SDK 3.22.0

    # 使用 Flutter SDK 3.22.0 ## SDK 安装 参考[鸿蒙Flutter实战:01-搭建开发环境]文章的说明,首先安装 Flutter SDK 3.22.0。 目前鸿
    发表于 11-01 15:03

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

    # 鸿蒙Flutter实战:现有Flutter项目支持鸿蒙 ## 背景 原来使用Flutter开发的项目,需要适配鸿蒙。 ## 环境搭
    发表于 10-23 16:36

    鸿蒙Flutter实战:08-如何调试代码

    # 鸿蒙Flutter实战:如何调试代码 ## 1.环境搭建 参考文章[鸿蒙Flutter实战:01-搭建开发环境](https://g
    发表于 10-23 16:29

    鸿蒙Flutter实战:07混合开发

    # 鸿蒙Flutter实战:混合开发 鸿蒙Flutter混合开发主要有两种形式。 ## 1.基于har 将flutter module
    发表于 10-23 16:00

    鸿蒙Flutter实战:01-搭建开发环境

    Studio\\\\tools\\\\node 管理多个 Flutter 版本 如果在项目开发中,需要使用多个 Flutter 版本,可以考虑使用 fvm 安装 FVM 使用 fvm 官方 flutter
    发表于 10-21 19:35

    鸿蒙开发就业前景到底怎么样?

    有帮助,我想邀请大家帮我三个小忙: 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。 关注小编,同时可以期待后续文章ing?,不定期分享原创知识。 更多鸿蒙最新技术知识点,请关注作者博客:鸿蒙实战经验分享:
    发表于 05-09 17:37

    36岁了还有必要转行鸿蒙开发吗?

    。 关注小编,同时可以期待后续文章ing?,不定期分享原创知识。 更多鸿蒙最新技术知识点,请关注作者博客:鸿蒙实战经验分享:鸿蒙基础入门开发
    发表于 05-09 17:01

    鸿蒙开发实战:【Hdf Framework】

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

    鸿蒙开发实战:【文件管理

    文件管理相关的功能,使用[@ohos.multimedia.medialibrary]、[@ohos.filemanagement.userFileManager] 、[@ohos.fileio
    的头像 发表于 03-20 21:57 748次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b><b class='flag-5'>实战</b>:【文件<b class='flag-5'>管理</b>】

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

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

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

    电话相关信息的功能 效果预览 使用说明 1.输入电话号码后,点击电话按钮,进行拨打电话。 2.拨打电话后文本框会显示拨打是否成功,是否存在通话通话状态,是否紧急号码,格式化后的电话号码。 工程目录
    发表于 03-04 20:22

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

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

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

    管理 多媒体技术 安全技能 任务管理 WebGL 国际化开发 应用测试 DFX面向未来设计 鸿蒙系统移植和裁剪定制 …… 《鸿蒙
    发表于 02-29 20:53