1 Star 0 Fork 353

hehao / telephony_call_manager

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README_zh.md 10.97 KB
一键复制 编辑 原始数据 按行查看 历史
Aurora 提交于 2023-04-25 11:29 . fix link

通话管理

简介

通话管理模块主要管理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 通话管理模块架构图

目录

/base/telephony/call_manager
├─ figures                                 # Readme资源文件
├─ frameworks                              # 框架层目录
│  ├─ js                                   # js相关代码
│  └─ native                               # native相关代码
├─ interfaces                              # 接口目录
│  ├─ innerkits                            # 部件间的内部接口
│  └─ kits                                 # 对应用提供的接口(例如JS接口)
├─ sa_profile                              # 启动配置文件
├─ services                                # 服务内部代码
│  ├─ audio                                # 音频管理相关代码
│  ├─ bluetooth                            # 蓝牙通话相关代码
│  ├─ call                                 # 通话业务相关代码
│  ├─ call_manager_service                 # 进程服务管理相关代码
│  ├─ call_report                          # 通话状态等信息上报相关代码
│  ├─ call_setting                         # 通话设置相关代码
│  ├─ telephony_interaction                # 电话核心服务交互相关代码
│  └─ video                                # 视频管理相关代码
├─ test                                    # 测试相关代码
│  ├─ fuzztest                             # 模糊测试相关代码
│  ├─ mock                                 # 模拟测试相关代码
│  └─ unittest                             # 单元测试相关代码
└─ utils                                   # 通用工具代码目录

约束

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

接口说明

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

接口内容

接口描述

所需权限

function dial(phoneNumber: string, options: DialOptions, callback: AsyncCallback<boolean>): void;

拨号接口,调用此接口可以进行拨号操作

ohos.permission.PLACE_CALL

表 2 拨号接口参数说明

参数

描述

phoneNumber: string

电话号码

options: DialOptions

扩展参数(详见下表)

callback: AsyncCallback<boolean>

异步执行结果,true表示执行成功,false表示执行失败

表 3 options: DialOptions参数说明

参数

类型

描述

是否必填

默认值

extras

boolean

false:音频 true:视频

false

完整的JS API说明以及实例代码请参考:拨打电话

使用说明

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

  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}`);
    });

相关仓

电话服务子系统

telephony_call_manager

telephony_core_service

telephony_cellular_call

telephony_state_registry

1
https://gitee.com/h00840185/telephony_call_manager.git
git@gitee.com:h00840185/telephony_call_manager.git
h00840185
telephony_call_manager
telephony_call_manager
master

搜索帮助