點(diǎn)擊藍(lán)字 ╳ 關(guān)注我們
開源項(xiàng)目 OpenHarmony是每個(gè)人的 OpenHarmony徐建國(guó)
潤(rùn)和軟件生態(tài)技術(shù)專家
以下內(nèi)容來(lái)自嘉賓分享,不代表開放原子開源基金會(huì)觀點(diǎn)一、簡(jiǎn)介
日常生活中,打電話是最常見的交流方式之一,那么如何在OpenAtom OpenHarmony(簡(jiǎn)稱“OpenHarmony”)中進(jìn)行電話服務(wù)相關(guān)的開發(fā)呢?今天我們可以一起來(lái)了解一下如何通過(guò)電話服務(wù)系統(tǒng)支持的API實(shí)現(xiàn)撥打電話的功能。二、效果展示
? 應(yīng)用可以通過(guò)調(diào)用call和observer模塊的API來(lái)獲取當(dāng)前注冊(cè)網(wǎng)絡(luò)名稱、網(wǎng)絡(luò)服務(wù)狀態(tài)、信號(hào)強(qiáng)度以及SIM卡的相關(guān)信息,具體可參考獲取當(dāng)前蜂窩網(wǎng)絡(luò)信號(hào)信息開發(fā)指導(dǎo)。 直接撥打電話需要提供系統(tǒng)權(quán)限ohos.permission.PLACE_CALL,在這里建議應(yīng)用使用makeCall(),跳轉(zhuǎn)到撥號(hào)界面,并顯示撥號(hào)的號(hào)碼,當(dāng)開發(fā)者調(diào)用makeCall接口時(shí),設(shè)備會(huì)自動(dòng)跳轉(zhuǎn)到撥號(hào)界面。 ?三、接口說(shuō)明
call模塊為開發(fā)者提供呼叫管理功能。observer模塊為開發(fā)者提供通話業(yè)務(wù)狀態(tài)訂閱和取消訂閱功能。 call.hasVoiceCapability():能力獲取,表示是否具有語(yǔ)音功能。 call.makeCall()跳轉(zhuǎn)撥號(hào)界面,跳轉(zhuǎn)到撥號(hào)界面,并顯示撥號(hào)的號(hào)碼。 observer.on(‘callStateChange’):訂閱通話業(yè)務(wù)狀態(tài)變化,ohos.permission.READ_CALL_LOG (獲取通話號(hào)碼需要該權(quán)限)。 observer.off(‘callStateChange’):取消訂閱通話業(yè)務(wù)狀態(tài)變化。四、開發(fā)步驟
1.import需要的模塊。
// import需要的模塊
import call from '@ohos.telephony.call';
importobserverfrom'@ohos.telephony.observer';
2.調(diào)用hasVoiceCapability()接口獲取當(dāng)前設(shè)備呼叫能力,如果支持繼續(xù)下一步;如果不支持則無(wú)法發(fā)起呼叫。
// 調(diào)用查詢能力接口
let isSupport = call.hasVoiceCapability();
if (!isSupport) {
console.log("not support voice capability, return.");
return;
}
3.跳轉(zhuǎn)到撥號(hào)界面,并顯示撥號(hào)的號(hào)碼。
// 如果設(shè)備支持呼叫能力,則繼續(xù)跳轉(zhuǎn)到撥號(hào)界面,并顯示撥號(hào)的號(hào)碼
call.makeCall("13xxxx", (err)=> {
if (!err) {
console.log("make call success.");
} else {
console.log("make call fail, err is:" + JSON.stringify(err));
}
});
4.訂閱通話業(yè)務(wù)狀態(tài)變化。(可選)
// 訂閱通話業(yè)務(wù)狀態(tài)變化(可選)
observer.on("callStateChange", (data) => {
console.log("call state change, data is:" + JSON.stringify(data));
});
5.取消訂閱通話業(yè)務(wù)狀態(tài)變?cè)?。(可選)
// 取消訂閱通話業(yè)務(wù)狀態(tài)變化
observer.off("callStateChange", (data) => {
console.log("call state change, data is:" + JSON.stringify(data));
});
五、完整代碼
//import需要的模塊
import call from '@ohos.telephony.call';
import observer from '@ohos.telephony.observer';
struct CAllTest{
build(){
Column(){
Button("打電話給堅(jiān)果").width(300).height(80) .fontSize(30).fontColor(Color.Orange).onClick(()=>{
// 調(diào)用查詢能力接口
let isSupport = call.hasVoiceCapability();
if (!isSupport) {
console.info(" support voice capability, return");
return;
}
// 如果設(shè)備支持呼叫能力,則繼續(xù)跳轉(zhuǎn)到撥號(hào)界面,并顯示撥號(hào)的號(hào)碼
call.makeCall("17752170152", (err)=> {
if (!err) {
console.info(" make call success.");
} else {
console.info("make call fail, err is:" + JSON.stringify(err));
}
});
})
}.width("100%").height("100%").justifyContent(FlexAlign.Center)
}
}
源碼地址
https://gitee.com/jianguo888/callphone
六、總結(jié)
本文通過(guò)一個(gè)按鈕,實(shí)現(xiàn)了跳轉(zhuǎn)撥號(hào)的功能。首先為按鈕添加點(diǎn)擊事件,其次導(dǎo)入需要的模塊,調(diào)用hasVoiceCapability()接口獲取當(dāng)前設(shè)備呼叫能力,最終實(shí)現(xiàn)一鍵跳轉(zhuǎn)到撥號(hào)界面。大家可以將這個(gè)功能擴(kuò)展到自己的應(yīng)用里。比如,在一鍵呼叫,售后服務(wù)等場(chǎng)景。
原文標(biāo)題:在DAYU200上實(shí)現(xiàn)OpenHarmony跳轉(zhuǎn)撥號(hào)界面
文章出處:【微信公眾號(hào):OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
OpenHarmony
+關(guān)注
關(guān)注
25文章
3727瀏覽量
16379
原文標(biāo)題:在DAYU200上實(shí)現(xiàn)OpenHarmony跳轉(zhuǎn)撥號(hào)界面
文章出處:【微信號(hào):gh_e4f28cfa3159,微信公眾號(hào):OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論