簡介
通話管理模塊主要管理CS(Circuit Switch,電路交換)、IMS(IP Multimedia Subsystem,IP多媒體子系統(tǒng))和OTT(over the top,OTT解決方案)三種類型的通話,負(fù)責(zé)申請通話所需要的音視頻資源,并處理多路通話時產(chǎn)生的各種沖突。通話管理主要分為UI交互、服務(wù)管理、系統(tǒng)通話管理、通話音頻管理、通話視頻管理和藍(lán)牙通話管理六大模塊,各模塊簡介如下:
- UI交互模塊:負(fù)責(zé)和通話UI交互,如UI調(diào)用接口撥號,上報來電等狀態(tài)給UI。
- 服務(wù)管理模塊:負(fù)責(zé)啟動和初始化系統(tǒng)通話管理服務(wù)。
- 系統(tǒng)通話管理模塊:負(fù)責(zé)處理通話下行操作(如撥號、接聽、掛斷等)和上行狀態(tài)(來電狀態(tài)、呼叫等待狀態(tài)等)的處理,并解決通話過程中產(chǎn)生的沖突。
- 通話音頻管理模塊:負(fù)責(zé)通話時需要的音頻資源的申請和釋放,依賴多媒體子系統(tǒng),需要調(diào)用多媒體子系統(tǒng)接口進(jìn)行音頻相關(guān)的操作。
- 通話視頻管理模塊:負(fù)責(zé)通話時需要的視頻資源的申請和釋放,依賴多媒體子系統(tǒng),需要調(diào)用多媒體子系統(tǒng)接口進(jìn)行視頻相關(guān)的操作。
- 藍(lán)牙通話管理模塊:負(fù)責(zé)通話時需要的藍(lán)牙資源的申請和釋放,并處理藍(lán)牙設(shè)備發(fā)起的通話操作,如接聽和掛斷等。
其主要的結(jié)構(gòu)及流程如下圖所示:
圖 1 通話管理模塊架構(gòu)圖
約束
- 開發(fā)語言:JavaScript。
- 軟件上,需要與以下子系統(tǒng)和服務(wù)配合使用:安全子系統(tǒng),多媒體子系統(tǒng),軟總線基礎(chǔ)通信子系統(tǒng)(藍(lán)牙模塊),Telephony核心服務(wù)(core_service),蜂窩通話服務(wù)(cellular_call)。
- 硬件上,需要搭載的設(shè)備支持以下硬件:揚(yáng)聲器或聽筒、麥克風(fēng)。
接口說明
表 1 通話管理對外提供的接口
[]()[]()接口內(nèi)容 | []()[]()接口描述 | []()[]()所需權(quán)限 |
---|---|---|
[]()[]()function dial(phoneNumber: string, options: DialOptions, callback: AsyncCallback): void; | []()[]()撥號接口,調(diào)用此接口可以進(jìn)行撥號操作 | []()[]()ohos.permission.PLACE_CALL |
表 2 撥號接口參數(shù)說明
[]()[]()參數(shù) | []()[]()描述 |
---|---|
[]()[]()phoneNumber: string | []()[]()電話號碼 |
[]()[]()options: DialOptions | []()[]()擴(kuò)展參數(shù)(詳見下表) |
[]()[]()callback: AsyncCallback | []()[]()異步執(zhí)行結(jié)果,true表示執(zhí)行成功,false表示執(zhí)行失敗 |
表 3 options: DialOptions參數(shù)說明
[]()[]()參數(shù) | []()[]()類型 | []()[]()描述 | []()[]()是否必填 | []()[]()默認(rèn)值 |
---|---|---|---|---|
[]()[]()extras | []()[]()boolean | []()[]()false:音頻 true:視頻 | []()[]()否 | []()[]()false |
使用說明
撥打電話接口調(diào)用流程及示例代碼
構(gòu)造phoneNumber和options參數(shù);
可以通過callback或者Promise的方式調(diào)用dial接口。
該接口為異步接口,相關(guān)執(zhí)行結(jié)果會從callback中返回。
import call from "@ohos.telephony.call"; let phoneNumber = "12312312312"; // 調(diào)用接口【callback方式】 call.dial(phoneNumber, {extras: false}, (err, value) = > { if (err) { // 接口調(diào)用失敗,err非空 console.error(`failed to dial because ${err.message}`); return; } // 接口調(diào)用成功,err為空 console.log(`success to dial: ${value}`); }); // 調(diào)用接口【Promise方式】 let promise = call.dial(phoneNumber, {extras: false}); promise.then((value) = > { // 接口調(diào)用成功,此處可以實現(xiàn)成功場景分支代碼。 console.log(`success to dial: ${value}`); }).catch((err) = > { // 接口調(diào)用失敗,此處可以實現(xiàn)失敗場景分支代碼。 console.error(`failed to dial because ${err.message}`); });
審核編輯 黃宇
-
鴻蒙
+關(guān)注
關(guān)注
56文章
2267瀏覽量
42484
發(fā)布評論請先 登錄
相關(guān)推薦
評論