From 67c2f8ef5d99f008fb5ad5b4678e4dc9d88ef22c Mon Sep 17 00:00:00 2001 From: hcj <1224667075@qq.com> Date: Tue, 5 Nov 2024 21:30:42 +0800 Subject: [PATCH] =?utf8?q?=E8=93=9D=E7=89=99=E4=BC=98=E5=8C=96=E9=80=9A?= =?utf8?q?=E8=AF=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativeui/callerlog/src/CallerLogModel.cpp | 6 ++- .../phoneservice/include/PhoneService.h | 1 + .../phoneservice/src/PhoneService.cpp | 37 +++++++++++++++++-- 3 files changed, 38 insertions(+), 6 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/callerlog/src/CallerLogModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/callerlog/src/CallerLogModel.cpp index 3ff0c24e7..811271c5e 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/callerlog/src/CallerLogModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/callerlog/src/CallerLogModel.cpp @@ -144,7 +144,7 @@ void StatusReset(void) CallerLogModel::GetInstance()->SetCallSource(CallerLogModel::CallSource::CallSourcePhone); DisshakeTimer(); set_call_hungup_flag(0); - + set_TransCallToMobilePhone_falg(0); // If the call is handling in the notification, the slice is not switched if (!CallerLogModel::GetInstance()->GetNotifyFlag()) @@ -473,7 +473,7 @@ static void PhoneActiveHandle(void) TransCallToMobilePhone(); // If the call is handling in the notification, the slice is not switched if (!CallerLogModel::GetInstance()->GetNotifyFlag()) { - NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN); // 退出通话界面,回到主表盘应用 + // NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN); // 退出通话界面,回到主表盘应用 } else { g_isWatchCallView = false; } @@ -591,6 +591,8 @@ static void NonWatchFinishHandle(int laststatus) } if (GetCurrCallNum() == 0) { g_phoneStatus = PHONE_SINGLE_STATUS; + + set_TransCallToMobilePhone_falg(0); } if(get_falg_SOS()) diff --git a/code/sdk/application/wearable/fd230app/nativeui/phoneservice/include/PhoneService.h b/code/sdk/application/wearable/fd230app/nativeui/phoneservice/include/PhoneService.h index c4c7919f1..1a571d6c8 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/phoneservice/include/PhoneService.h +++ b/code/sdk/application/wearable/fd230app/nativeui/phoneservice/include/PhoneService.h @@ -293,6 +293,7 @@ void AudioActInterrupt(AudioStreamType type); void uapi_SetSpeaker_Mute(bool isMute); +void set_TransCallToMobilePhone_falg(uint8_t date); #ifdef __cplusplus diff --git a/code/sdk/application/wearable/fd230app/nativeui/phoneservice/src/PhoneService.cpp b/code/sdk/application/wearable/fd230app/nativeui/phoneservice/src/PhoneService.cpp index 69aeef9ee..cff8d2667 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/phoneservice/src/PhoneService.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/phoneservice/src/PhoneService.cpp @@ -82,6 +82,9 @@ static int g_hdlUpSco = INVALID_PHONE_SERVICE_VALUE; static int g_hdlDnSpk = INVALID_PHONE_SERVICE_VALUE; static int g_hdlDnSco = INVALID_PHONE_SERVICE_VALUE; + +static uint8_t TransCallToMobilePhone_falg=0; + PhoneServiceCb g_callChanged; void HfpIncomingEventPublish(uint16 topic, hfp_hf_calls_info_t callsInfo); @@ -218,9 +221,11 @@ static void AudioConnectScoDevInit(void) { int ret; - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioConnectScoDevInit] start scoFlag:0x%x, audioState:0x%x", + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioConnectScoDevInit] start scoFlag:0x%x, audioState:0x%x", g_scoFlag, g_audioState); if (g_scoFlag != HFP_SCO_STATE_CONNECTED || g_audioState < AUDIO_ACT_INTERRUPT_BT_SCO) { + + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"AudioConnectScoDevInit"); return; } @@ -718,6 +723,8 @@ static void ScoConnectPro(void) return; } + + ScoStatusCb(HFP_SCO_STATE_CONNECTED); if (g_currCallState == HFP_HF_CALL_STATE_ACTIVE && g_scoFlag == HFP_SCO_STATE_CONNECTED) { // The call is transferred from the phone to the watch. Need to show the call notification view. @@ -770,10 +777,19 @@ static void ScoStateChanged(const bd_addr_t *bdAddr, hfp_sco_connect_state_t sta ScoConnectPro(); WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScoStateChanged] SCO connecting!"); } + else + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[ScoStateChanged] SCO HFP_SCO_STATE_CONNECTING!"); + } + break; case HFP_SCO_STATE_CONNECTED: // 同步音量 SyncVolume(); + if(TransCallToMobilePhone_falg) + { + TransCallToMobilePhone(); + } WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScoStateChanged] SCO connected!"); break; // SCO断连中 @@ -1484,6 +1500,10 @@ static void PlayWatchRing(void) static void CallAudioHandle(const hfp_hf_calls_info_t *call) { int state = call->state; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CallAudioHandle] start %d %d",state,call->in_band_ring); + //不能主动连接 + // if (state == HFP_HF_CALL_STATE_INCOMING) + // TransCallToWatch(); if (state == HFP_HF_CALL_STATE_INCOMING || state == HFP_HF_CALL_STATE_DIALING || state == HFP_HF_CALL_STATE_ALERTING) { // 电话呼入,支持播放手机铃声 @@ -2132,12 +2152,12 @@ bool SetMicMute(bool isMute) return PhoneAudioSetMicMute(isMute); } -static bool data; +static uint8_t Mutecat1_data; int32_t SetMicMutecat1(bool isMute) { - data=isMute; - do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_CAT1_MIC_CTRL, &data, sizeof(bool)); + Mutecat1_data=isMute; + do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_CAT1_MIC_CTRL, &Mutecat1_data, sizeof(bool)); return 0; } @@ -2171,6 +2191,11 @@ int TransCallToWatch(void) } } + +void set_TransCallToMobilePhone_falg(uint8_t date) +{ + TransCallToMobilePhone_falg=date; +} // 通话转移到手机 int TransCallToMobilePhone(void) { @@ -2184,12 +2209,16 @@ int TransCallToMobilePhone(void) ret = GetScoConnectState(); if (ret == HFP_SCO_STATE_DISCONNECTED || ret == HFP_SCO_STATE_DISCONNECTING) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[TransCallToMobilePhone] >>"); + TransCallToMobilePhone_falg=1; + return OHOS_SUCCESS; } else { ret = hfp_hf_disconnect_sco(&g_bdAddr); if (ret != 0) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[TransCallToMobilePhone] ret:%d", ret); } + TransCallToMobilePhone_falg=1; return ret; } } -- 2.17.1