簡介
通話管理模塊主要管理CS(Circuit Switch,電路交換)、IMS(IP Multimedia Subsystem,IP多媒體子系統)和OTT(over the top,OTT解決方案)三種類型的通話,負責申請通話所需要的音視頻資源,并處理多路通話時產生的各種沖突。通話管理主要分為UI交互、服務管理、系統通話管理、通話音頻管理、通話視頻管理和藍牙通話管理六大模塊,各模塊簡介如下:
- UI交互模塊:負責和通話UI交互,如UI調用接口撥號,上報來電等狀態給UI。
- 服務管理模塊:負責啟動和初始化系統通話管理服務。
- 系統通話管理模塊:負責處理通話下行操作(如撥號、接聽、掛斷等)和上行狀態(來電狀態、呼叫等待狀態等)的處理,并解決通話過程中產生的沖突。
- 通話音頻管理模塊:負責通話時需要的音頻資源的申請和釋放,依賴多媒體子系統,需要調用多媒體子系統接口進行音頻相關的操作。
- 通話視頻管理模塊:負責通話時需要的視頻資源的申請和釋放,依賴多媒體子系統,需要調用多媒體子系統接口進行視頻相關的操作。
- 藍牙通話管理模塊:負責通話時需要的藍牙資源的申請和釋放,并處理藍牙設備發起的通話操作,如接聽和掛斷等。
其主要的結構及流程如下圖所示:
圖 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 |
使用說明
撥打電話接口調用流程及示例代碼
構造phoneNumber和options參數;
可以通過callback或者Promise的方式調用dial接口。
該接口為異步接口,相關執行結果會從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}`); });
審核編輯 黃宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
鴻蒙
+關注
關注
59文章
2531瀏覽量
43788
發布評論請先 登錄
相關推薦
熱點推薦
鴻蒙5開發寶藏案例分享---一多開發實例(游戲)
?【開發者必看】鴻蒙隱藏寶箱大公開!這些實戰案例讓你的開發效率翻倍!
哈嘍各位開發者小伙伴!今天要和大家分享一個讓我拍大腿的發現——原來
發表于 06-03 18:22
鴻蒙5開發寶藏案例分享---一多開發實例(地圖導航)
? 鴻蒙開發隱藏寶藏大公開!手把手教你玩轉\"一多\"地圖導航案例 ?
大家好呀!我是你們的老朋友,今天要給大家扒一扒鴻蒙官方文檔里那些\"藏得深\"的實戰
發表于 06-03 16:17
鴻蒙5開發寶藏案例分享---一多開發實例(即時通訊)
?鴻蒙\"一多\"開發寶藏指南:原來官方案例還能這么玩!?
大家好呀!我是剛在鴻蒙開發路上踩完坑的某不知名碼農,今天要給大家分享一個重大發現——原來HarmonyOS官方早就給我
發表于 06-03 16:01
名單公布!【書籍評測活動NO.56】極速探索HarmonyOS NEXT:純血鴻蒙應用開發實踐
開發的核心技術,以及鴻蒙應用在實際開發中的應用方法。
本書共分為四篇,共計16章,分別為鴻蒙開發基礎篇、
發表于 01-20 16:53
《HarmonyOS第一課》煥新升級,賦能開發者快速掌握鴻蒙應用開發
《HarmonyOS第一課》煥新升級,賦能開發者快速掌握鴻蒙應用開發 隨著HarmonyOS NEXT發布,鴻蒙生態日益壯大,廣大開發者對于
發表于 01-02 14:24
鴻蒙Flutter實戰:14-現有Flutter 項目支持鴻蒙 II
分別安裝官方的3.22版本,以及鴻蒙社區的 3.22.0 版本
3.搭建 Flutter鴻蒙開發環境
參考文章《鴻蒙Flutter實戰:0
發表于 12-26 14:59
鴻蒙原生開發手記:01-元服務開發
簡介
元服務是鴻蒙中的一種輕量應用形態,無需下載,直接運行。類似于微信小程序,但與小程序不同的是,元服務更加輕量。
元服務使用原生開發,是系統級提供的,無論從易用性、性能、體驗上,都要比小程序好
發表于 11-14 17:28
鴻蒙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實戰:10-常見問題集合
# 鴻蒙Flutter實戰:10-常見問題集合
## 1. 學習路徑應該是怎樣的,需要掌握哪些技術才具備鴻蒙 Flutter 開發能力
1.1 學習和掌握 Flutter
發表于 10-23 17:05
鴻蒙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實戰:05-使用第三方插件
# 鴻蒙Flutter 實戰:使用第三方插件
在鴻蒙Flutter開發中,如果涉及到使用原生功能,就要使用插件。使用插件有兩種方式,一種是自己編寫原生ArkTS代碼,在Dart側調用
發表于 10-22 21:54
鴻蒙Flutter實戰:01-搭建開發環境
Studio\\\\tools\\\\node
管理多個 Flutter 版本
如果在項目開發中,需要使用多個 Flutter 版本,可以考慮使用 fvm
安裝 FVM
使用 fvm 官方 flutter
發表于 10-21 19:35
評論