新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OS發(fā)起一路呼叫
場景介紹

當應用需要發(fā)起一路呼叫給一個指定的號碼時,使用本業(yè)務。呼叫可以是音頻呼叫,也可以是視頻呼叫。
如果設備支持同時插入兩張 SIM 卡,且撥打電話時兩張SIM 卡均在位,呼叫時會彈出彈框讓用戶選擇從卡 1 還是卡 2 呼出。
接口說明
DistributedCallManager 為開發(fā)者提供呼叫管理功能,具體功能分類如下表。
| 功能分類 | 接口名 | 描述 | 所需權限 |
|---|---|---|---|
| 能力獲取 | hasVoiceCapability() | 檢查當前設備是否支持語音呼叫。 | 無 |
| 獲取管理對象 | getInstance(Context context) | 獲取呼叫管理對象。 | 無 |
| 發(fā)起呼叫 | dial(String number, boolean isVideoCall) | 發(fā)起音頻或視頻呼叫。 | ohos.permission.PLACE_CALL |
| 觀察通話業(yè)務狀態(tài)變化 | addObserver(CallStateObserver observer, int mask) | 觀察通話業(yè)務狀態(tài)變化。 | ohos.permission.READ_CALL_LOG(獲取通話號碼需要該權限) |
開發(fā)步驟
- 調(diào)用 DistributedCallManager 的 getInstance 接口,創(chuàng)建/獲取呼叫管理對象。
- 調(diào)用 hasVoiceCapability() 接口獲取當前設備呼叫能力,如果支持繼續(xù)下一步;如果不支持則無法發(fā)起呼叫。
- 發(fā)起一路呼叫。
- 注冊觀察呼叫狀態(tài)變化。
// 創(chuàng)建呼叫管理對象
DistributedCallManager dcManager = DistributedCallManager.getInstance(context);
// 調(diào)用查詢能力接口
if (!dcManager.hasVoiceCapability()) {
return;
}
// 如果設備支持呼叫能力,則繼續(xù)發(fā)起呼叫
dcManager.dial(destinationNum, isVideoCall);
// 創(chuàng)建繼承CallStateObserver的類MyCallStateObserver
class MyCallStateObserver extends CallStateObserver {
// 構造方法,在當前線程的runner中執(zhí)行回調(diào),slotId需要傳入要觀察的卡槽ID(0或1)
MyCallStateObserver(int slotId) {
super(slotId);
}
// 構造方法,在執(zhí)行runner中執(zhí)行回調(diào),slotId需要傳入要觀察的卡槽ID(0或1)
MyCallStateObserver(int slotId, EventRunner runner) {
super(slotId, runner);
}
// 通話狀態(tài)變化的回調(diào)方法
@Override
public void onCallStateUpdated(int state, String number) {
...
}
}
// 執(zhí)行回調(diào)的runner
EventRunner runner = EventRunner.create();
// 創(chuàng)建MyCallStateObserver的對象
MyCallStateObserver observer = new MyCallStateObserver(slotId, runner);
// 觀察OBSERVE_CALL_STATE的變化
dcManager.addObserver(observer, CallStateObserver.OBSERVE_CALL_STATE); 標題名稱:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OS發(fā)起一路呼叫
標題網(wǎng)址:http://m.fisionsoft.com.cn/article/dhdsjoc.html


咨詢
建站咨詢
