簡介
電話服務子系統,提供了一系列的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
約束
使用說明
具體請參考子模塊README,下面以獲取當前蜂窩網絡信號信息和觀察蜂窩網絡狀態變化為例,說明電話服務子系統接口調用請求和狀態訂閱的使用方法。
獲取當前蜂窩網絡信號信息
- 從@ohos.telephony.radio.d.ts中導入radio命名空間。
- 可以通過callback或者Promise的方式調用getSignalInformation(slotId: number)方法。
- 該接口為異步接口,結果會從callback中返回SignalInformation數組。
- 遍歷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}`); });
觀察蜂窩網絡狀態變化
添加觀察事件
- 從@ohos.telephony.observer.d.ts中導入observer命名空間。
- 調用on(type: 'networkStateChange')方法,傳入卡槽id(slotId)和收到事件的回調處理函數(callback),其中slotId為可選參數。
- 當網絡狀態發生變更時,調用者會收到回調。
// 引入包名 import observer from '@ohos.telephony.observer'; // 開啟訂閱 observer.on('networkStateChange', {slotId: 0}, (value) = > { console.log(`network state is ` + value); });
停止觀察
從@ohos.telephony.observer.d.ts中導入observer命名空間。
調用off(type: 'networkStateChange')方法,傳入添加觀察事件時的callback對象(可選)。
// 引入包名 import observer from '@ohos.telephony.observer'; // 關閉訂閱 observer.off('networkStateChange');
審核編輯 黃宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
API
+關注
關注
2文章
1505瀏覽量
62181 -
蜂窩網絡
+關注
關注
2文章
209瀏覽量
21680 -
鴻蒙
+關注
關注
57文章
2371瀏覽量
42911
發布評論請先 登錄
相關推薦
《HarmonyOS第一課》煥新升級,賦能開發者快速掌握鴻蒙應用開發
全局思維的人才,使其能夠獨立完成中大型應用和元服務的開發、架構設計等復雜任務。涵蓋中大型應用架構設計、鴻蒙特性開發、性能調優等核心技能,要求學員熟練掌握HarmonyOS各
發表于 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實戰:08-如何調試代碼
# 鴻蒙Flutter實戰:如何調試代碼
## 1.環境搭建
參考文章[鴻蒙Flutter實戰:01-搭建開發環境](https://g
發表于 10-23 16:29
鴻蒙Flutter實戰:07混合開發
# 鴻蒙Flutter實戰:混合開發
鴻蒙Flutter混合開發主要有兩種形式。
## 1.基于har
將flutter module
發表于 10-23 16:00
鴻蒙開發實戰:【Hdf Framework】
該倉主要存放OpenHarmony驅動子系統核心源碼信息(包括驅動框架、配置管理、配置解析、驅動通用框架模型、硬件通用平臺能力接口等),旨在為開發者提供更精準、更高效的開發環境,力求做到一次開
鴻蒙開發學習:【驅動子系統】
OpenHarmony驅動子系統采用C面向對象編程模型構建,通過平臺解耦、內核解耦,兼容不同內核,提供了歸一化的驅動平臺底座,旨在為開發者提供更精準、更高效的開發環境,力求做到一次開發
軟通動力與鴻蒙生態服務雙方將共同聚焦鴻蒙原生應用開發和培訓領域
3月8日,軟通動力與鴻蒙生態服務(深圳)有限公司(以下簡稱“鴻蒙生態服務公司”)簽署合作協議,雙方將共同聚焦鴻蒙原生應用
鴻蒙實戰應用開發:【撥打電話】功能
概述
本示例通過輸入電話,進行電話撥打,及電話相關信息的顯示。
樣例展示
涉及OpenHarmony技術特性
網絡通信
基礎信息
撥打電話
介紹
本示例使用call相關接口實現了撥
發表于 03-04 20:22
鴻蒙實戰項目開發:【短信服務】
數據管理
電話服務
分布式應用開發
通知與窗口管理
多媒體技術
安全技能
任務管理
WebGL
國際化開發
應用測試
DFX面向未來設計
鴻蒙
發表于 03-03 21:29
鴻蒙原生應用/元服務實戰-Web隱私聲明
這個位置的隱私申明是需要在WEB網頁下完成的,ArkTS鴻蒙原生應用與元服務開發者,不一定熟悉這塊,一些公司也不一定有自己的服務器和域名、網站網頁或者相關權限是外包,沒法進行實時操作。
發表于 01-24 15:05
評論