199da06d0Sopenharmony_ci/** 299da06d0Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 399da06d0Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 499da06d0Sopenharmony_ci * you may not use this file except in compliance with the License. 599da06d0Sopenharmony_ci * You may obtain a copy of the License at 699da06d0Sopenharmony_ci * 799da06d0Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 899da06d0Sopenharmony_ci * 999da06d0Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1099da06d0Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1199da06d0Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1299da06d0Sopenharmony_ci * See the License for the specific language governing permissions and 1399da06d0Sopenharmony_ci * limitations under the License. 1499da06d0Sopenharmony_ci */ 1599da06d0Sopenharmony_ci 1699da06d0Sopenharmony_ci/** 1799da06d0Sopenharmony_ci * @file: Voice call API interface call 1899da06d0Sopenharmony_ci */ 1999da06d0Sopenharmony_ci 2099da06d0Sopenharmony_ciimport call from '@ohos.telephony.call'; 2199da06d0Sopenharmony_ciimport LogUtils from '../common/utils/LogUtils'; 2299da06d0Sopenharmony_ci 2399da06d0Sopenharmony_ciconst prefixLog = 'callui service:@ohos.telephony.call:'; 2499da06d0Sopenharmony_ciconst TAG = 'TelephonyApi'; 2599da06d0Sopenharmony_ci 2699da06d0Sopenharmony_ciexport default class TelephonyApi { 2799da06d0Sopenharmony_ci 2899da06d0Sopenharmony_ci /** 2999da06d0Sopenharmony_ci * register call state callback 3099da06d0Sopenharmony_ci * 3199da06d0Sopenharmony_ci * @param { Function } callBack - inject an Function 3299da06d0Sopenharmony_ci */ 3399da06d0Sopenharmony_ci public registerCallStateCallback(callBack) { 3499da06d0Sopenharmony_ci try { 3599da06d0Sopenharmony_ci call.on('callDetailsChange', (data) => { 3699da06d0Sopenharmony_ci if (!data) { 3799da06d0Sopenharmony_ci LogUtils.i(TAG, prefixLog + 'call.on registerCallStateCallback') 3899da06d0Sopenharmony_ci return; 3999da06d0Sopenharmony_ci } 4099da06d0Sopenharmony_ci LogUtils.i(TAG, prefixLog + 'call.on registerCallStateCallback callState: ' + JSON.stringify(data.callState)) 4199da06d0Sopenharmony_ci callBack(data); 4299da06d0Sopenharmony_ci }); 4399da06d0Sopenharmony_ci } catch (err) { 4499da06d0Sopenharmony_ci LogUtils.i(TAG, 'call.on registerCallStateCallback catch:' + JSON.stringify(err)); 4599da06d0Sopenharmony_ci } 4699da06d0Sopenharmony_ci } 4799da06d0Sopenharmony_ci 4899da06d0Sopenharmony_ci /** 4999da06d0Sopenharmony_ci * onRegister call state callback 5099da06d0Sopenharmony_ci */ 5199da06d0Sopenharmony_ci public unRegisterCallStateCallback() { 5299da06d0Sopenharmony_ci try { 5399da06d0Sopenharmony_ci call.off('callDetailsChange', (data) => { 5499da06d0Sopenharmony_ci if (!data) { 5599da06d0Sopenharmony_ci LogUtils.i(TAG, prefixLog + 'call.off unRegisterCallStateCallback') 5699da06d0Sopenharmony_ci return; 5799da06d0Sopenharmony_ci } 5899da06d0Sopenharmony_ci LogUtils.i(TAG, prefixLog + 'call.off unRegisterCallStateCallback') 5999da06d0Sopenharmony_ci }); 6099da06d0Sopenharmony_ci } catch (err) { 6199da06d0Sopenharmony_ci LogUtils.i(TAG, 'call.off unRegisterCallStateCallback catch:' + JSON.stringify(err)); 6299da06d0Sopenharmony_ci } 6399da06d0Sopenharmony_ci } 6499da06d0Sopenharmony_ci 6599da06d0Sopenharmony_ci /** 6699da06d0Sopenharmony_ci * accept call 6799da06d0Sopenharmony_ci * 6899da06d0Sopenharmony_ci * @param { number } callId - call id 6999da06d0Sopenharmony_ci */ 7099da06d0Sopenharmony_ci public acceptCall = function (callId) { 7199da06d0Sopenharmony_ci call.answerCall(callId).then((res) => { 7299da06d0Sopenharmony_ci LogUtils.i(TAG, prefixLog + 'call.answerCall callId: ' + JSON.stringify(callId)) 7399da06d0Sopenharmony_ci }).catch((err) => { 7499da06d0Sopenharmony_ci LogUtils.i(TAG, prefixLog + 'call.answerCall catch : ' + JSON.stringify(err)) 7599da06d0Sopenharmony_ci }) 7699da06d0Sopenharmony_ci } 7799da06d0Sopenharmony_ci 7899da06d0Sopenharmony_ci /** 7999da06d0Sopenharmony_ci * reject call 8099da06d0Sopenharmony_ci * 8199da06d0Sopenharmony_ci * @param { number } callId - call id 8299da06d0Sopenharmony_ci * 8399da06d0Sopenharmony_ci * @param { boolean } isSendSms - is send sms 8499da06d0Sopenharmony_ci * 8599da06d0Sopenharmony_ci * @param { string } msg - message string 8699da06d0Sopenharmony_ci */ 8799da06d0Sopenharmony_ci public rejectCall = function (callId, isSendSms = false, msg = '') { 8899da06d0Sopenharmony_ci const rejectCallPromise = isSendSms ? call.rejectCall(callId, { 8999da06d0Sopenharmony_ci messageContent: msg 9099da06d0Sopenharmony_ci }) : call.rejectCall(callId); 9199da06d0Sopenharmony_ci rejectCallPromise.then((res) => { 9299da06d0Sopenharmony_ci LogUtils.i(TAG, prefixLog + 'then:rejectCall') 9399da06d0Sopenharmony_ci }) 9499da06d0Sopenharmony_ci .catch((err) => { 9599da06d0Sopenharmony_ci LogUtils.i(TAG, prefixLog + 'catch:rejectCall : ' + JSON.stringify(err)) 9699da06d0Sopenharmony_ci }); 9799da06d0Sopenharmony_ci }; 9899da06d0Sopenharmony_ci 9999da06d0Sopenharmony_ci /** 10099da06d0Sopenharmony_ci * hang up Call 10199da06d0Sopenharmony_ci * 10299da06d0Sopenharmony_ci * @param { number } callId - call id 10399da06d0Sopenharmony_ci * 10499da06d0Sopenharmony_ci * @return { Object } promise object 10599da06d0Sopenharmony_ci */ 10699da06d0Sopenharmony_ci public hangUpCall = (callId) => new Promise((resolve, reject) => { 10799da06d0Sopenharmony_ci call.hangUpCall(callId).then((res) => { 10899da06d0Sopenharmony_ci resolve(res); 10999da06d0Sopenharmony_ci LogUtils.i(TAG, prefixLog + 'then:hangUpCall : %s' + JSON.stringify(callId)) 11099da06d0Sopenharmony_ci }).catch((err) => { 11199da06d0Sopenharmony_ci reject(err); 11299da06d0Sopenharmony_ci LogUtils.i(TAG, prefixLog + 'catch:hangUpCall : %s' + JSON.stringify(err)) 11399da06d0Sopenharmony_ci }); 11499da06d0Sopenharmony_ci }); 11599da06d0Sopenharmony_ci} 11699da06d0Sopenharmony_ci 11799da06d0Sopenharmony_ci 118