蓝牙优化通话 1352/1
authorhcj <1224667075@qq.com>
Tue, 5 Nov 2024 13:30:42 +0000 (21:30 +0800)
committerhcj <1224667075@qq.com>
Tue, 5 Nov 2024 13:30:42 +0000 (21:30 +0800)
code/sdk/application/wearable/fd230app/nativeui/callerlog/src/CallerLogModel.cpp
code/sdk/application/wearable/fd230app/nativeui/phoneservice/include/PhoneService.h
code/sdk/application/wearable/fd230app/nativeui/phoneservice/src/PhoneService.cpp

index 3ff0c24..811271c 100644 (file)
@@ -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())
index 69aeef9..cff8d26 100644 (file)
@@ -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;
     }
 }