From a65c85f41579a209e18ccd973c014bc5aa631973 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E8=83=A1=E4=BC=A0=E5=86=9B?= <1224667075@qq.com> Date: Wed, 6 Nov 2024 09:26:17 +0000 Subject: [PATCH] Merge #1352 into sdk602patch0911 from refs/changes/1352/head MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 蓝牙优化通话 * 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 Reviewed-by: aliyun6865282430 <1624952103@qq.com> Merged-by: Caisking <3449750381@qq.com> CR-link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/1352 --- .../nativelauncher/include/UiConfig.h | 6 ++ .../nativeui/alarm/src/AlarmClockModel.cpp | 4 +- .../bluetooth/src/Bluetooyhpabpserver.cpp | 12 ++- .../nativeui/callerlog/src/CallerLogModel.cpp | 27 +++++-- .../phoneservice/include/PhoneService.h | 1 + .../phoneservice/src/PhoneService.cpp | 73 ++++++++++++++++--- .../msg_center/src/msg_center_customer.cpp | 9 +-- .../peripheral/config/src/ConfigModel.cpp | 6 +- 8 files changed, 104 insertions(+), 34 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/include/UiConfig.h b/code/sdk/application/wearable/fd230app/nativelauncher/include/UiConfig.h index b8afb16c1..7d08b4f60 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/include/UiConfig.h +++ b/code/sdk/application/wearable/fd230app/nativelauncher/include/UiConfig.h @@ -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 /*最高亮度的一半*/ diff --git a/code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmClockModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmClockModel.cpp index 5f66a125f..d884f8119 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmClockModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmClockModel.cpp @@ -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"); diff --git a/code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/Bluetooyhpabpserver.cpp b/code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/Bluetooyhpabpserver.cpp index f9bc8164a..361e924c9 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/Bluetooyhpabpserver.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/Bluetooyhpabpserver.cpp @@ -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; 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..265b6584d 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/callerlog/src/CallerLogModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/callerlog/src/CallerLogModel.cpp @@ -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: 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..0a36bfc4c 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/phoneservice/src/PhoneService.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/phoneservice/src/PhoneService.cpp @@ -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; } } diff --git a/code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp b/code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp index bce7e2ae6..f04395db4 100644 --- a/code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp +++ b/code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp @@ -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)); diff --git a/code/sdk/drivers/peripheral/config/src/ConfigModel.cpp b/code/sdk/drivers/peripheral/config/src/ConfigModel.cpp index 6732f9ff0..04da1a3a5 100644 --- a/code/sdk/drivers/peripheral/config/src/ConfigModel.cpp +++ b/code/sdk/drivers/peripheral/config/src/ConfigModel.cpp @@ -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) -- 2.17.1