簡(jiǎn)介
電話服務(wù)子系統(tǒng),提供了一系列的API用于獲取無(wú)線蜂窩網(wǎng)絡(luò)和SIM卡相關(guān)的一些信息。應(yīng)用可以通過(guò)調(diào)用API來(lái)獲取當(dāng)前注冊(cè)網(wǎng)絡(luò)名稱、網(wǎng)絡(luò)服務(wù)狀態(tài)、信號(hào)強(qiáng)度以及SIM卡的相關(guān)信息。
各個(gè)模塊主要作用如下:
- 核心服務(wù)模塊:主要功能是初始化RIL管理、SIM卡和搜網(wǎng)模塊。
- 通話管理模塊:主要功能是管理CS(Circuit Switch,電路交換)、IMS(IP Multimedia Subsystem,IP多媒體子系統(tǒng))和OTT(over the top,OTT解決方案)三種類型的通話,申請(qǐng)通話所需要的音視頻資源,處理多路通話時(shí)產(chǎn)生的各種沖突。
- 蜂窩通話模塊:主要功能是實(shí)現(xiàn)基于運(yùn)營(yíng)商網(wǎng)絡(luò)的基礎(chǔ)通話。
- 蜂窩數(shù)據(jù)模塊:主要功能是實(shí)現(xiàn)基于運(yùn)營(yíng)商網(wǎng)絡(luò)的蜂窩數(shù)據(jù)上網(wǎng)。
- 短彩信模塊:主要功能是短信收發(fā)和彩信編解碼。
- 狀態(tài)訂閱模塊:主要功能是提供電話服務(wù)子系統(tǒng)各種消息事件的訂閱以及取消訂閱的API。
- 數(shù)據(jù)存儲(chǔ)模塊:主要功能是持久化數(shù)據(jù)存儲(chǔ),提供DataAbility訪問(wèn)接口。
- RIL Adapter模塊: 主要功能是與modem通信接口的適配。
圖 1 子系統(tǒng)架構(gòu)圖
目錄
base/telephony/
├── core_service # 核心服務(wù)
├── call_manager # 通話管理
├── cellular_call # 蜂窩通話
├── cellular_data # 蜂窩數(shù)據(jù)
├── sms_mms # 短彩信
├── state_registry # 狀態(tài)訂閱
├── data_storage # 數(shù)據(jù)存儲(chǔ)
└── ril_adapter # RIL Adapter
約束
使用說(shuō)明
具體請(qǐng)參考子模塊README,下面以獲取當(dāng)前蜂窩網(wǎng)絡(luò)信號(hào)信息和觀察蜂窩網(wǎng)絡(luò)狀態(tài)變化為例,說(shuō)明電話服務(wù)子系統(tǒng)接口調(diào)用請(qǐng)求和狀態(tài)訂閱的使用方法。
獲取當(dāng)前蜂窩網(wǎng)絡(luò)信號(hào)信息
- 從@ohos.telephony.radio.d.ts中導(dǎo)入radio命名空間。
- 可以通過(guò)callback或者Promise的方式調(diào)用getSignalInformation(slotId: number)方法。
- 該接口為異步接口,結(jié)果會(huì)從callback中返回SignalInformation數(shù)組。
- 遍歷SignalInformation數(shù)組,獲取不同制式(signalType)的信號(hào)強(qiáng)度(signalLevel)。
// 引入包名 import radio from "@ohos.telephony.radio"; // 參數(shù)賦值 let slotId = 0; // 調(diào)用接口【callback方式】 radio.getSignalInformation(slotId, (err, value) = > { if (err) { // 接口調(diào)用失敗,err非空 console.error(`failed to getSignalInformation because ${err.message}`); return; } // 接口調(diào)用成功,err為空 for (let i = 0; i < value.length; i++) { console.log(`success to getSignalInformation: type is ${value[i].signalType}, level is ${value[i].signalLevel}`); } }); // 調(diào)用接口【Promise方式】 let promise = radio.getSignalInformation(slotId); promise.then((value) = > { // 接口調(diào)用成功,此處可以實(shí)現(xiàn)成功場(chǎng)景分支代碼。 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) = > { // 接口調(diào)用失敗,此處可以實(shí)現(xiàn)失敗場(chǎng)景分支代碼。 console.error(`failed to getSignalInformation because ${err.message}`); });
觀察蜂窩網(wǎng)絡(luò)狀態(tài)變化
添加觀察事件
- 從@ohos.telephony.observer.d.ts中導(dǎo)入observer命名空間。
- 調(diào)用on(type: 'networkStateChange')方法,傳入卡槽id(slotId)和收到事件的回調(diào)處理函數(shù)(callback),其中slotId為可選參數(shù)。
- 當(dāng)網(wǎng)絡(luò)狀態(tài)發(fā)生變更時(shí),調(diào)用者會(huì)收到回調(diào)。
// 引入包名 import observer from '@ohos.telephony.observer'; // 開(kāi)啟訂閱 observer.on('networkStateChange', {slotId: 0}, (value) = > { console.log(`network state is ` + value); });
停止觀察
從@ohos.telephony.observer.d.ts中導(dǎo)入observer命名空間。
調(diào)用off(type: 'networkStateChange')方法,傳入添加觀察事件時(shí)的callback對(duì)象(可選)。
// 引入包名 import observer from '@ohos.telephony.observer'; // 關(guān)閉訂閱 observer.off('networkStateChange');
審核編輯 黃宇
-
API
+關(guān)注
關(guān)注
2文章
1502瀏覽量
62080 -
蜂窩網(wǎng)絡(luò)
+關(guān)注
關(guān)注
2文章
209瀏覽量
21657 -
鴻蒙
+關(guān)注
關(guān)注
57文章
2358瀏覽量
42876
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論