Merge #1352 into sdk602patch0911 from refs/changes/1352/head
author胡传军 <1224667075@qq.com>
Wed, 6 Nov 2024 09:26:17 +0000 (09:26 +0000)
committer袁清梦 <3449750381@qq.com>
Wed, 6 Nov 2024 09:26:17 +0000 (09:26 +0000)
蓝牙优化通话

* refs/changes/1352/head: (3 commits squashed)

  - 蓝牙优化通话

  - 蓝牙铃声改为本地铃声,仍需多手机,多场景验证

  - 电话来电铃声修改

Signed-off-by: aliyun8003852482 <1224667075@qq.com>
Reviewed-by: Caisking <3449750381@qq.com>
Reviewed-by: 罗正 <1732036298@qq.com>
Reviewed-by: aliyun8003852482 <1224667075@qq.com>
Reviewed-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Reviewed-by: aliyun6865282430 <1624952103@qq.com>
Merged-by: Caisking <3449750381@qq.com>
link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/1352
code/sdk/application/wearable/fd230app/nativelauncher/include/UiConfig.h
code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmClockModel.cpp
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/Bluetooyhpabpserver.cpp
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
code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp
code/sdk/drivers/peripheral/config/src/ConfigModel.cpp

index b8afb16..7d08b4f 100644 (file)
@@ -77,6 +77,12 @@ namespace OHOS
 #define APP_LIST_PATH "/user/res/applist_icon"
 #define APP_HEARET_ICON_PATH "/user/res/heart_chart/hearticon"//心率动画
 
+#ifdef SINGLE_USER_PARTITION
+    #define RING_MUSIC "/user/music/ring/ring.mp3"
+#else
+    #define RING_MUSIC "/music/ring/ring.mp3"
+#endif
+
 #define MIN_BRIGHTNESS 51   /*最低亮度*/
 #define MAX_BRIGHTNESS 255  /*最高亮度*/
 #define MAX_BRIGHTNESS_HALF 127  /*最高亮度的一半*/
index 5f66a12..d884f81 100644 (file)
@@ -858,7 +858,7 @@ int AlarmClockModel::AlarmPlayerStat()
     }
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPlayer uri %s.", uri.c_str());
     playerCtr->SetSource(*source);
-    playerCtr->SetAudioStreamType(AUDIO_STREAM_ALARM_CLOCK);
+    playerCtr->SetAudioStreamType(AUDIO_STREAM_RING);
     playerCtr->Prepare();
 
     // 申请焦点
@@ -874,7 +874,7 @@ int AlarmClockModel::AlarmPlayerStat()
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerInterruptListener new fail");
         return OHOS_FAILURE;
     }
-    interrupt = { AUDIO_STREAM_ALARM_CLOCK, sessionId, playerInterruptListener };
+    interrupt = { AUDIO_STREAM_RING, sessionId, playerInterruptListener };
     // 激活音频中断 5s超时
     if (amIntance.ActivateAudioInterrupt(interrupt) == INTERRUPT_FAILED) {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ActivateAudioInterrupt faild");
index f9bc816..361e924 100644 (file)
@@ -70,10 +70,14 @@ static void sample_pbap_receive_data(const bd_addr_t *bd_addr, const uint8_t* da
     printf("receive %d bytes(%s)\n", len, data);
     if(strstr((char*)data,"vcard-listing.dtd"))
     {
-        char * name_str=strstr((char*)data,"name");
-        char *name_=strtok(name_str,"\"");
-        name_=strtok(NULL,"\"");
-        OHOS:: CallerLogModel::GetInstance()->Setphonebname(name_,strlen(name_));
+        if(strstr((char*)data,"name"))
+        {
+            char * name_str=strstr((char*)data,"name");
+            char *name_=strtok(name_str,"\"");
+            name_=strtok(NULL,"\"");
+            OHOS:: CallerLogModel::GetInstance()->Setphonebname(name_,strlen(name_));
+        }
+      
     }
 
     return;
index 3ff0c24..265b658 100644 (file)
@@ -25,7 +25,7 @@
 #include "dial_sos_c.h"
 #include "cat1_ctl.h"
 #include "cat1_server.h"
-
+#include "AlarmClockModel.h"
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -139,16 +139,18 @@ void StatusReset(void)
     CallerLogModel::GetInstance()->Setphonebname("0",0);
     CallerLogModel::GetInstance()->SetCallDial(CallerLogModel::HFP_PHONE_DIAL);
     CallerLogModel::GetInstance()->set_RejectIncomingCall_falg(0);
-    CallerLogModel::GetInstance()->SetCallSource(CallerLogModel::callleisure);
     NotificationManager::GetInstance()->SetWatchCallStatus(false);
     CallerLogModel::GetInstance()->SetCallSource(CallerLogModel::CallSource::CallSourcePhone);
     DisshakeTimer();
     set_call_hungup_flag(0);
-   
+    set_TransCallToMobilePhone_falg(0);
+
+    OHOS::AlarmClockModel::GetInstance()->AlarmPlayerStop(); 
 
     // If the call is handling in the notification, the slice is not switched
-    if (!CallerLogModel::GetInstance()->GetNotifyFlag())
+    //if (!CallerLogModel::GetInstance()->GetNotifyFlag())
     {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "xxxxxxxxxxxxx");
         PhoneServiceScreenCtr(false);
         if(NativeAbility::GetInstance().GetCurSliceId() == VIEW_INCOMING_CALL)
         {
@@ -156,10 +158,10 @@ void StatusReset(void)
             NativeAbility::GetInstance().Back_CountSlice_make_phone();
         }
        
-
-    } else {
-        g_isWatchCallView = false;
     }
+    // } else {
+    //     g_isWatchCallView = false;
+    // }
     return;
 }
 
@@ -473,7 +475,8 @@ 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); // 退出通话界面,回到主表盘应用
+            StatusReset();
         } else {
             g_isWatchCallView = false;
         }
@@ -591,8 +594,12 @@ static void NonWatchFinishHandle(int laststatus)
     }
     if (GetCurrCallNum() == 0) {
         g_phoneStatus = PHONE_SINGLE_STATUS;
+        StatusReset();
+        set_TransCallToMobilePhone_falg(0);
     }
 
+   
+
     if(get_falg_SOS())
     {
         sos_falg_add();
@@ -684,6 +691,7 @@ void UsingPhoneChangeStatusCallback(const PhoneCallInfo *phoneCall)
     else
     {
         uapi_SetSpeaker_Mute(false);
+        //OHOS::AlarmClockModel::GetInstance()->AlarmPlayerStop(); 
     }
     
     if (phoneCall->operate == OPERATE_WATCH_FINISH && GetCurrCallNum() == 0) {
@@ -773,7 +781,10 @@ static void ScoConnectHandle(void)
     else
     {
         uapi_SetSpeaker_Mute(false);
+        OHOS::AlarmClockModel::GetInstance()->AlarmPlayerStop(); 
     }
+
+
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScoConnectHandle] g_isCall = %d", g_isCall);
     switch (g_isCall) {
         case HFP_HF_CALL_STATE_ACTIVE:
index 69aeef9..0a36bfc 100644 (file)
@@ -39,6 +39,7 @@
 #include "gfx_utils/mem_api.h"
 #include "ConfigModelC.h"
 #include "cat1_ctl.h"
+#include "UiConfig.h"
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -82,6 +83,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 +222,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 +724,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 +778,21 @@ 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断连中
@@ -1474,16 +1493,23 @@ static void CallChangeHeldPro(const hfp_hf_calls_info_t *call)
 
 static void PlayWatchRing(void)
 {
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayWatchRing] start");
-    // if(true != OHOS::ConfigModel::GetInstance()->GetDnotdisturb() && (!uapi_sleep_mode_flag_get()) && true != OHOS::ConfigModel::GetInstance()->GetSilentMode())
-    // {
-    //     OHOS::AlarmClockModel::GetInstance()->testPlayerStart("/music/ring/ring.mp3");
-    // }
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[PlayWatchRing] start");
+    if(true != OHOS::ConfigModel::GetInstance()->GetDnotdisturb() && (!uapi_sleep_mode_flag_get()) && true != OHOS::ConfigModel::GetInstance()->GetSilentMode())
+    {
+
+        OHOS::AlarmClockModel::GetInstance()->testPlayerStart(RING_MUSIC);
+        g_audioState = AUDIO_ACT_INTERRUPT_WATCH_RING;
+
+    }
 }
 
 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) { // 电话呼入,支持播放手机铃声
@@ -1493,8 +1519,10 @@ static void CallAudioHandle(const hfp_hf_calls_info_t *call)
                 PostGraphicEvent(AudioDn);
             }
         } else {
-            if (g_scoFlag != HFP_SCO_STATE_CONNECTED) {
+            //if (g_scoFlag != HFP_SCO_STATE_CONNECTED && 
+            if(state == HFP_HF_CALL_STATE_INCOMING) {
                 // 播放手表铃声
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"xxxxxxxxxxx");
                 PostGraphicEvent(PlayWatchRing);
             }
         }
@@ -1541,6 +1569,11 @@ bool IsCompleteCallFlow(void)
     return g_completeCallFlag;
 }
 
+static void stop_ring(void)
+{
+    OHOS::AlarmClockModel::GetInstance()->AlarmPlayerStop();
+}
+
 // 通话状态变化上报回调
 static void CallStateChanged(const bd_addr_t *bdAddr, const hfp_hf_calls_info_t *call)
 {
@@ -1579,6 +1612,12 @@ static void CallStateChanged(const bd_addr_t *bdAddr, const hfp_hf_calls_info_t
     CallAudioHandle(call);
     uapi_pbap_cmd_pull_vcard_listing((unsigned char *)call->number);
 
+    if(HFP_HF_CALL_STATE_INCOMING!=call->state)
+    {
+        PostGraphicEvent(stop_ring);
+       //
+    }
+
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "CallStateChanged state:%d", call->state);
     
     switch (call->state) {
@@ -2091,8 +2130,9 @@ void uapi_SetSpeaker_Mute(bool isMute)
     //return;
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[SetSpeakerMute] start!");
 
-    if(isMute==true  && (true == OHOS::ConfigModel::GetInstance()->GetDnotdisturb() || 
-    (uapi_sleep_mode_flag_get()) || true == OHOS::ConfigModel::GetInstance()->GetSilentMode()))
+    if(isMute==true )
+    //  && (true == OHOS::ConfigModel::GetInstance()->GetDnotdisturb() || 
+    // (uapi_sleep_mode_flag_get()) || true == OHOS::ConfigModel::GetInstance()->GetSilentMode()))
     {
         if(isMute!=SetSpeaker)
         {
@@ -2132,12 +2172,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 +2211,11 @@ int TransCallToWatch(void)
     }
 }
 
+
+void set_TransCallToMobilePhone_falg(uint8_t date)
+{
+    TransCallToMobilePhone_falg=date;
+}
 // 通话转移到手机
 int TransCallToMobilePhone(void)
 {
@@ -2184,12 +2229,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;
     }
 }
index bce7e2a..f04395d 100644 (file)
@@ -75,6 +75,9 @@
 #include "system/include/SystemLogModelC.h"
 #include "cat1_ctl.h"
 #include "ui_service.h"
+
+#include "UiConfig.h"
+
 #define DIALDATASET 1
 //#include "Systemupgrade.h"
 namespace OHOS {
@@ -946,11 +949,7 @@ void MsgCenterNotifyCatIncomingCallProc(const Topic topic, Request* req)
 
         if(true != ConfigModel::GetInstance()->GetDnotdisturb() && (!uapi_sleep_mode_flag_get()) && true != ConfigModel::GetInstance()->GetSilentMode())
         {
-#ifdef SINGLE_USER_PARTITION
-            AlarmClockModel::GetInstance()->testPlayerStart("/user/music/ring/ring.mp3");
-#else
-            AlarmClockModel::GetInstance()->testPlayerStart("/music/ring/ring.mp3");
-#endif
+            AlarmClockModel::GetInstance()->testPlayerStart(RING_MUSIC);
         }
 
         CallerLogModel::GetInstance()->SetoperateNumber(call_data,strlen(call_data));
index 6732f9f..04da1a3 100644 (file)
@@ -1403,21 +1403,21 @@ void cm_initializeMotionRecognition(void)
 bool cm_get_SPP_switch(void)
 {
     bool isopen = OHOS::ConfigModel::GetInstance()->get_configData_bool(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPP);
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "getSPPSwitch %d",isopen);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "getSPPSwitch %d",isopen);
     return isopen;
 }
 
 bool cm_get_HFP_switch(void)
 {
     bool isopen = OHOS::ConfigModel::GetInstance()->GetHFPState();
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "getHFPSwitch %d",isopen);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "getHFPSwitch %d",isopen);
     return isopen;
 }
 
 bool cm_get_A2DP_switch(void)
 {
     bool isopen = OHOS::ConfigModel::GetInstance()->GetA2DPState();
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "getA2DPSwitch %d",isopen);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "getA2DPSwitch %d",isopen);
     return isopen;
 }
 void cm_set_timezone_quarters(int16_t timezone_quarters)