HarmonyOS電話服務開發指導

HarmonyOS開發者社群發表於2023-10-31



電話服務開發概述

H armonyOS 電話服務系統提供了一系列的API用於 撥打電話 、獲取 無線蜂窩網路 SIM卡 相關資訊。

應用可以透過呼叫API來獲取當前註冊網路名稱、網路服務狀態、訊號強度以及SIM卡的相關資訊,具體可參考 獲取當前蜂窩網路訊號資訊 開發指導。

直接撥打電話需要系統許可權ohos.permission.PLACE_CALL,建議應用使用makeCall(),跳轉到撥號介面,並顯示撥號的號碼,具體可參考 跳轉撥號介面 開發指導。

約束與限制

搭載裝置需要支援以下硬體:

可以進行獨立蜂窩通訊的Modem以及SIM卡。

跳轉撥號介面

當應用需要跳轉到撥號介面,並顯示撥號的號碼時,使用本業務。當開發者呼叫makeCall介面時,裝置會自動跳轉到撥號介面。和正常撥打電話一樣,使用者可以選擇音訊或影片呼叫,卡1或卡2撥出。

介面說明

call模組為開發者提供呼叫管理功能。observer模組為開發者提供訂閱和取消訂閱通話業務狀態的功能。具體介面說明如下表。

功能分類

介面名

描述

所需許可權

能力獲取

call.hasVoiceCapability()

是否具有語音功能

跳轉撥號介面

call.makeCall()

跳轉到撥號介面,並顯示撥號的號碼

訂閱通話業務狀態變化

observer.on('callStateChange')

訂閱通話業務狀態變化

ohos.permission.READ_CALL_LOG (獲取通話號碼需要該許可權)

取消訂閱通話業務狀態變化

observer.off('callStateChange')

取消訂閱通話業務狀態變化

開發步驟

1.  import需要的模組。

2.  呼叫hasVoiceCapability()介面獲取當前裝置呼叫能力,如果支援繼續下一步;如果不支援則無法發起呼叫。

3.  跳轉到撥號介面,並顯示撥號的號碼。

4.  (可選)訂閱通話業務狀態變化。


// import需要的模組

import  call  from '@ohos.telephony.call' ;
import  observer  from '@ohos.telephony.observer' ;

// 呼叫查詢能力介面
let  isSupport  =  call . hasVoiceCapability ();
if ( ! isSupport ) {
    console . log ( "not support voice capability, return." );
return ;
}
// 如果裝置支援呼叫能力,則繼續跳轉到撥號介面,並顯示撥號的號碼
call . makeCall ( "13xxxx" , ( err ) => {
if ( ! err ) {
        console . log ( "make call success." );
} else {
        console . log ( "make call fail, err is:" + JSON . stringify ( err ));
}
});
// 訂閱通話業務狀態變化(可選)
observer . on ( "callStateChange" , ( data ) => {
    console . log ( "call state change, data is:" + JSON . stringify ( data ));
});

獲取當前蜂窩網路訊號資訊

場景介紹

應用通常需要獲取使用者所在蜂窩網路下訊號資訊,以便獲取當前駐網質量。開發者可以透過本業務,獲取到使用者指定SIM卡當前所在網路下的訊號資訊。

介面說明

radio模組提供了獲取當前網路訊號資訊的方法。observer模組為開發者提供蜂窩網路狀態訂閱和取消訂閱功能。具體介面說明如下表。

功能分類

介面名

描述

所需許可權

訊號強度資訊

radio.getSignalInformation  ()

獲取當前註冊蜂窩網路訊號強度資訊

訂閱蜂窩網路訊號變化

observer.on('signalInfoChange')

訂閱蜂窩網路訊號變化

取消訂閱蜂窩網路訊號變化

observer.off('signalInfoChange')

取消訂閱蜂窩網路訊號變化

開發步驟

1.  import需要的模組。

2.  呼叫getSignalInformation()方法,返回所有SignalInformation列表。

3.  遍歷SignalInformation陣列,並分別根據不同的signalType得到不同制式的訊號強度。

4.  訂閱蜂窩網路訊號變化(可選)。


import radio from '@ohos.telephony.radio'

import observer from '@ohos.telephony.observer';

// 以獲取卡1的訊號強度為例
let slotId = 0;
radio.getSignalInformation(slotId, (err, data) => {
    if (!err) {
        console.log("get signal information success.");
        // 遍歷陣列,輸出不同網路制式下的訊號強度
        for (let j = 0; j < data.length; j++) {
            console.log("type:" + data[j].signalType + ", level:" + data[j].signalLevel);
        }
    } else {
        console.log("get signal information fail, err is:" + JSON.stringify(err));
    }
});
// 訂閱蜂窩網路訊號變化(可選)
observer.on("signalInfoChange", (data) => {
    console.log("signal info change, data is:" + JSON.stringify(data));
});


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70009402/viewspace-2992181/,如需轉載,請註明出處,否則將追究法律責任。

相關文章