phoneservice 文件夹更新
authorluozheng <1732036298@qq.com>
Wed, 29 May 2024 06:56:29 +0000 (14:56 +0800)
committerluozheng <1732036298@qq.com>
Wed, 29 May 2024 06:56:29 +0000 (14:56 +0800)
code/sdk/application/wearable/fd230app/nativeui/phoneservice/include/PhoneAudio.h
code/sdk/application/wearable/fd230app/nativeui/phoneservice/include/PhoneService.h
code/sdk/application/wearable/fd230app/nativeui/phoneservice/src/PhoneAudio.cpp
code/sdk/application/wearable/fd230app/nativeui/phoneservice/src/PhoneService.cpp

index 1666ee0..fd0b6c9 100644 (file)
@@ -7,8 +7,7 @@
 #ifndef PHONE_AUDIO_H
 #define PHONE_AUDIO_H
 
-#include <stdint.h>
-#include "stdbool.h"
+#include <cstdint>
 #include "audio_base_type.h"
 #include "ohos_types.h"
 
index 05146c7..1e3f0fa 100644 (file)
@@ -7,7 +7,6 @@
 #ifndef PHONE_SERVICE_H
 #define PHONE_SERVICE_H
 
-#include "stdbool.h"
 #include "bts_br_gap.h"
 #include "bts_hfp_hf.h"
 #include "ohos_types.h"
@@ -21,7 +20,7 @@ extern "C" {
 #define CALL_LOG_MAX_NUM 30 // 最多记录30条通话记录,超出后删除最老的记录
 #define NAME_SIZE 20
 #define MAX_PHONE_NUM 20
-#define CALL_VOLUME_MAX 100
+#define CALL_VOLUME_MAX 15
 
 typedef struct {
     int operate;
@@ -30,8 +29,8 @@ typedef struct {
     unsigned char nameLen;
     unsigned char tel[MAX_PHONE_NUM];
     unsigned char telLen;
-    uint32 activeTime; // 首次电话接通时间点
-    uint32 creationTime; // 通话创建时间(不是接通时间)
+    uint64 activeTime; // 首次电话接通时间点
+    uint64 creationTime; // 通话创建时间(不是接通时间)
     hfp_hf_calls_info_t unitCalls;
 } PhoneCallInfo;
 
@@ -69,7 +68,7 @@ typedef struct {
     unsigned char tel[MAX_PHONE_NUM];
     unsigned char telLen;
     CallFinishStatus status;
-    uint64 creationTime; // 通话创建时间(不是接通时间)
+    uint32 creationTime; // 通话创建时间(不是接通时间)
     uint64 callDurTime; // 通话持续时间
 } CallLogInfo;
 
@@ -86,8 +85,6 @@ typedef struct {
     PhoneServiceScoStatusCb scoStatusCb;
 } PhoneServiceCb;
 
-
-void AddToCallLog(CallLogInfo *info);
 /**
  * @brief 注册电话服务回调函数
  *
@@ -117,8 +114,6 @@ int DialCall(unsigned char *number, unsigned char len);
  */
 int AcceptIncomingCall(void);
 
-void CallChangeIncomePro(const hfp_hf_calls_info_t *call);
-
 /**
  * @brief 手表拒接呼入来电
  *
@@ -258,6 +253,9 @@ void AudioRelease(void);
 
 uint32 GetCallCodec(void);
 
+// 添加通话进通话记录文件
+void AddToCallLog(CallLogInfo *info);
+
 #ifdef __cplusplus
 }
 #endif
index 2d32b2b..8b695c8 100644 (file)
@@ -85,7 +85,7 @@ bool PhoneAudioSetSpeakerMute(bool isMute)
         return true;
     }
 
-    if (isMute == true) {
+    if (isMute) {
         ret = g_amInstance.Mute(AUDIO_STREAM_VOICE_CALL_BT_SCO);
     } else {
         ret = g_amInstance.UnMute(AUDIO_STREAM_VOICE_CALL_BT_SCO);
@@ -166,7 +166,7 @@ int32 PhoneAudioManagerSetDeviceConnState(AudioDeviceType deviceType, AudioDevic
     }
 
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%s] line:%d success, deviceType = 0x%x connectState = %d",
-            __FUNCTION__, __LINE__, deviceType, connectState);
+                  __FUNCTION__, __LINE__, deviceType, connectState);
     return AUDIO_SUCCESS;
 }
 
index 5de08d3..bada5b8 100644 (file)
@@ -7,12 +7,12 @@
 #include "PhoneService.h"
 #include "PhoneAudio.h"
 #include "securec.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
 #include "audio_base_type.h"
 #include "audio_manager.h"
-#include "time.h"
+#include <ctime>
 #include "wearable_log.h"
 #include "unistd.h"
 #include "dirent.h"
 #include "service_id_define.h"
 #include "samgr_lite.h"
 #include "ui_service.h"
+#include "msg_center_msg.h"
 #include "cat1_server_hal.h"
 
-#if defined(SUPPORT_POWER_MANAGER)
-#include "power_display_service.h"
-#endif
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -77,18 +75,12 @@ void HfpIncomingEventPublish(uint16 topic, hfp_hf_calls_info_t callsInfo);
 
 static void PhoneServiceScreenCtr(bool turnOnFlag)
 {
-#if defined(SUPPORT_POWER_MANAGER)
-    const power_display_svr_api_t *display_api = power_display_svr_get_api();
     if (turnOnFlag) {
-        if (display_api->get_screen_state() != SCREEN_ON) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PhoneServiceScreenCtr] turn_on_screen");
-            display_api->turn_on_screen();
-        }
-        display_api->set_screen_set_keepon_timeout(-1);
+        int32_t timeout = -1;
+        SendMsgToUIService(SCREEN_TURN_ON_TO_UI, 0, &timeout, sizeof(int32_t));
     } else {
-        display_api->set_screen_set_keepon_timeout(0);
+        SendMsgToUIService(SCREEN_TURN_OFF_TO_UI, 0, nullptr, 0);
     }
-#endif
 }
 
 static void InitMutex(void)
@@ -103,7 +95,7 @@ uint32 GetCallCodec(void)
 
 int RegisterCallChangedCb(PhoneServiceCb *phoneServiceFun)
 {
-    if (phoneServiceFun == NULL) {
+    if (phoneServiceFun == nullptr) {
         return OHOS_FAILURE;
     }
 
@@ -135,18 +127,17 @@ int GetCurrCallState(void)
 // 初始化媒体
 static void AudioInit(void)
 {
-    int ret;
-    ret = PhoneAudioManagerInit();
+    int32_t ret = PhoneAudioManagerInit();
     if (ret != OHOS_SUCCESS) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioInit] [PhoneAudioManagerInit] failed!");
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioInit] failed!");
     }
 }
 
 // 释放音频焦点
 static void AudioDeactInterrupt(AudioStreamType type)
 {
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioDeactInterrupt] start type: 0x%x, g_audioState: 0x%x",
-                type, g_audioState);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioDeactInterrupt] start type:0x%x, audioState:0x%x",
+                  type, g_audioState);
 
     if ((type == AUDIO_STREAM_VOICE_CALL_BT_SCO && g_audioState >= AUDIO_ACT_INTERRUPT_BT_SCO) ||
         (type == AUDIO_STREAM_RING && g_audioState == AUDIO_ACT_INTERRUPT_WATCH_RING)) {
@@ -159,12 +150,12 @@ static void AudioActInterrupt(AudioStreamType type)
 {
     int ret = OHOS_SUCCESS;
 
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioActInterrupt] start type: 0x%x, g_audioState: 0x%x",
-                type, g_audioState);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioActInterrupt] start type:0x%x, audioState:0x%x",
+                  type, g_audioState);
 
     if (type != AUDIO_STREAM_VOICE_CALL_BT_SCO && type != AUDIO_STREAM_RING) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioActInterrupt] failed! type: 0x%x, g_audioState: 0x%x",
-                    type, g_audioState);
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioActInterrupt] failed! type:0x%x, audioState:0x%x",
+                      type, g_audioState);
         return;
     }
 
@@ -187,8 +178,8 @@ static void AudioActInterrupt(AudioStreamType type)
     }
 
     if (ret != OHOS_SUCCESS) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioActInterrupt] failed! type: 0x%x, g_audioState: 0x%x",
-                    type, g_audioState);
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioActInterrupt] failed! type:0x%x, audioState:0x%x",
+                      type, g_audioState);
     }
 
     MUTEX_Unlock(g_audioMutex);
@@ -199,8 +190,8 @@ static void AudioConnectScoDevInit(void)
 {
     int ret;
 
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioConnectScoDevInit] start g_scoFlag: 0x%x, g_audioState: 0x%x",
-                g_scoFlag, g_audioState);
+    WEARABLE_LOGD(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) {
         return;
     }
@@ -211,8 +202,7 @@ static void AudioConnectScoDevInit(void)
             // 配置媒体连接SCO设配状态(下行),只有在SCO连接后才能设置
             ret = PhoneAudioManagerSetDeviceConnState(IN_BLUETOOTH_SCO, AUDIO_DEVICE_CONNECTED);
             if (ret != OHOS_SUCCESS) {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioConnectScoDevInit] [PhoneAudioManagerSetDeviceConnState] \
-                IN_BLUETOOTH_SCO failed! ret = %d", ret);
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioConnectScoDevInit] sco in ret:%d", ret);
                 MUTEX_Unlock(g_audioMutex);
                 return;
             } else {
@@ -224,8 +214,7 @@ static void AudioConnectScoDevInit(void)
             // 配置媒体连接SCO设配状态(上行),只有在SCO连接后才能设置
             ret = PhoneAudioManagerSetDeviceConnState(OUT_BLUETOOTH_SCO, AUDIO_DEVICE_CONNECTED);
             if (ret != OHOS_SUCCESS) {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioConnectScoDevInit] [PhoneAudioManagerSetDeviceConnState] \
-                OUT_BLUETOOTH_SCO failed! ret = %d", ret);
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioConnectScoDevInit] sco out ret:%d", ret);
                 MUTEX_Unlock(g_audioMutex);
                 return;
             } else {
@@ -245,8 +234,8 @@ static void AudioConnectScoDevInit(void)
             g_audioState = AUDIO_STREAM_INIT;
         }
     }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioConnectScoDevInit] end g_audioState: %d, g_hdlUpSco: %d, g_hdlDnSco: %d",
-                g_audioState, g_hdlUpSco, g_hdlDnSco);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioConnectScoDevInit] end audioState:%d, hdlUpSco:%d, hdlDnSco:%d",
+                  g_audioState, g_hdlUpSco, g_hdlDnSco);
     MUTEX_Unlock(g_audioMutex);
 
     return;
@@ -258,7 +247,7 @@ static void AudioUpStart(void)
     int ret = OHOS_SUCCESS;
     uint32 micShmId = 0;
 
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioUpStart] start g_scoFlag: %d, g_audioState: %d", g_scoFlag, g_audioState);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioUpStart] start scoFlag:%d, audioState:%d", g_scoFlag, g_audioState);
 
     if (g_scoFlag != HFP_SCO_STATE_CONNECTED || g_audioState < AUDIO_STREAM_INIT) {
         return;
@@ -270,15 +259,15 @@ static void AudioUpStart(void)
             g_hdlUpMic = PhoneAudioStreamInInit(AUDIO_UP_LINK);
         }
 
-       if (g_audioState < AUDIO_STREAM_START_SCO) {
+        if (g_audioState < AUDIO_STREAM_START_SCO) {
             ret = PhoneAudioStreamInStart(g_hdlDnSco);
             if (ret != OHOS_SUCCESS) {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpStart] [AudioStreamInStart] [dn_sco] error! ret: %d", ret);
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpStart] dn_sco ret:%d", ret);
             }
 
             ret |= PhoneAudioStreamOutStart(g_hdlUpSco);
             if (ret != OHOS_SUCCESS) {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpStart] [AudioStreamOutStart] [up_sco] error ret: %d", ret);
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpStart] up_sco ret:%d", ret);
             }
             if (ret == OHOS_SUCCESS) {
                 g_audioState = AUDIO_STREAM_START_SCO;
@@ -287,24 +276,24 @@ static void AudioUpStart(void)
 
         ret |= PhoneAudioStreamInStart(g_hdlUpMic);
         if (ret != OHOS_SUCCESS) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpStart] [PhoneAudioStreamInStart] [up_mic] error! ret = %d", ret);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpStart] up_mic ret:%d", ret);
         }
 
         ret |= PhoneAudioStreamInGetChannelId(g_hdlUpMic, &micShmId);
         if (ret != OHOS_SUCCESS) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpStart] [AudioStreamInGetChannelId] [up_mic] error ret: %d", ret);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpStart] up_mic shm ret:%d", ret);
         }
 
         ret |= PhoneAudioStreamOutAttachFrontend(g_hdlUpSco, micShmId);
         if (ret != OHOS_SUCCESS) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpStart] [AudioStreamOutAttachFrontend] [up_sco] error ret:%d", ret);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpStart] up_sco attach ret:%d", ret);
         }
 
         if (ret == OHOS_SUCCESS) {
             g_audioState = AUDIO_STREAM_START_UP;
         }
     }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioUpStart] end g_audioState:%d, g_hdlUpMic:%d, g_hdlUpSco:%d, micShmId:0x%x",
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioUpStart] end audioState:%d, hdlUpMic:%d, hdlUpSco:%d, micShmId:0x%x",
         g_audioState, g_hdlUpMic, g_hdlUpSco, micShmId);
     MUTEX_Unlock(g_audioMutex);
     return;
@@ -316,7 +305,7 @@ static void AudioDnStart(void)
     int ret = OHOS_SUCCESS;
     uint32 spkShmId = 0;
 
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioDnStart] start g_scoFlag: %d, g_audioState: %d", g_scoFlag, g_audioState);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioDnStart] start scoFlag:%d, audioState:%d", g_scoFlag, g_audioState);
 
     if (g_scoFlag != HFP_SCO_STATE_CONNECTED || g_audioState < AUDIO_STREAM_INIT) {
         return;
@@ -331,12 +320,12 @@ static void AudioDnStart(void)
         if (g_audioState < AUDIO_STREAM_START_SCO) {
             ret = PhoneAudioStreamOutStart(g_hdlUpSco);
             if (ret != OHOS_SUCCESS) {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnStart] [AudioStreamOutStart] [up_sco] error! ret = %d", ret);
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnStart] up_sco ret:%d", ret);
             }
 
             ret |= PhoneAudioStreamInStart(g_hdlDnSco);
             if (ret != OHOS_SUCCESS) {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnStart] [AudioStreamInStart] [dn_sco] error! ret = %d", ret);
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnStart] dn_sco ret:%d", ret);
             }
 
             if (ret == OHOS_SUCCESS) {
@@ -346,24 +335,24 @@ static void AudioDnStart(void)
 
         ret |= PhoneAudioStreamOutStart(g_hdlDnSpk);
         if (ret != OHOS_SUCCESS) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnStart] [PhoneAudioStreamOutStart] [dn_spk] error! ret = %d", ret);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnStart] dn_spk ret:%d", ret);
         }
 
         ret |= PhoneAudioStreamOutGetChannelId(g_hdlDnSpk, &spkShmId);
         if (ret != OHOS_SUCCESS) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnStart] [AudioStreamOutGetChannelId] [dn_spk] error ret: %d", ret);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnStart] dn_spk shm ret:%d", ret);
         }
 
         ret |= PhoneAudioStreamInAttachBackend(g_hdlDnSco, spkShmId);
         if (ret != OHOS_SUCCESS) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnStart] [AudioStreamInAttachBackend] [dn_sco] error ret: %d", ret);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnStart] dn_sco attach ret:%d", ret);
         }
 
         if (ret == OHOS_SUCCESS) {
             g_audioState = AUDIO_STREAM_START_DN;
         }
     }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioDnStart] end g_audioState:%d, g_hdlDnSpk:%d, g_hdlDnSco:%d, spkShmId: 0x%x",
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioDnStart] end audioState:%d, hdlDnSpk:%d, hdlDnSco:%d, spkShmId:0x%x",
         g_audioState, g_hdlDnSpk, g_hdlDnSco, spkShmId);
     MUTEX_Unlock(g_audioMutex);
 
@@ -396,8 +385,6 @@ static void PostGraphicEvent(void (*fun)(void))
 // 蓝牙通话下行
 static void AudioDn(void)
 {
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioDn] start g_audioState: %d", g_audioState);
-
     // 申请蓝牙通话音频焦点
     AudioActInterrupt(AUDIO_STREAM_VOICE_CALL_BT_SCO);
 
@@ -408,16 +395,14 @@ static void AudioDn(void)
     AudioDnStart();
     if (g_audioState == AUDIO_STREAM_START_DN) {
         // 同步音量
-        PostGraphicEvent(SyncVolume);
+        SyncVolume();
     }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioDn] end g_audioState: %d", g_audioState);
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "[AudioDn] audioState:%d", g_audioState);
 }
 
 // 蓝牙通话上行
 static void AudioUp(void)
 {
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioUp] start g_audioState: %d", g_audioState);
-
     // 申请蓝牙通话音频焦点
     AudioActInterrupt(AUDIO_STREAM_VOICE_CALL_BT_SCO);
 
@@ -426,8 +411,18 @@ static void AudioUp(void)
 
     // 建立音频上行通路
     AudioUpStart();
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioUp] end g_audioState: %d", g_audioState);
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "[AudioUp] audioState:%d", g_audioState);
+}
 
+static void AudioSetup(void)
+{
+    if (g_audioState < AUDIO_STREAM_START_DN) {
+        AudioDn();
+    }
+
+    if (g_audioState != AUDIO_STREAM_START_UP) {
+        AudioUp();
+    }
 }
 
 static void AudioUpRelease(void)
@@ -437,35 +432,34 @@ static void AudioUpRelease(void)
     if (g_hdlUpSco != INVALID_PHONE_SERVICE_VALUE) {
         ret = PhoneAudioStreamOutStop(g_hdlUpSco);
         if (ret != OHOS_SUCCESS) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpRelease] [OutStop] g_hdlUpSco error! ret = %d", ret);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpRelease] [OutStop] hdlUpSco ret:%d", ret);
         }
         ret = PhoneAudioStreamOutDeinit(g_hdlUpSco);
         if (ret != OHOS_SUCCESS) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpRelease] [OutDeinit] g_hdlUpSco error! ret = %d", ret);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpRelease] [OutDeinit] hdlUpSco ret:%d", ret);
         }
     }
 
     if (g_hdlUpMic != INVALID_PHONE_SERVICE_VALUE) {
         ret = PhoneAudioStreamInStop(g_hdlUpMic);
         if (ret != OHOS_SUCCESS) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnRelease] [InStop] g_hdlUpMic error! ret = %d", ret);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnRelease] [InStop] hdlUpMic ret:%d", ret);
         }
         ret = PhoneAudioStreamInDeinit(g_hdlUpMic);
         if (ret != OHOS_SUCCESS) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnRelease] [InDeinit] g_hdlUpMic error! ret = %d", ret);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnRelease] [InDeinit] hdlUpMic ret:%d", ret);
         }
     }
 
     if (g_audioState >= AUDIO_CONN_OUT_BT_SCO) {
         ret = PhoneAudioManagerSetDeviceConnState(OUT_BLUETOOTH_SCO, AUDIO_DEVICE_DISCONNECTED);
         if (ret != OHOS_SUCCESS) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnRelease] OUT_BLUETOOTH_SCO error! ret = %d", ret);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnRelease] sco out ret:%d", ret);
         }
     }
 
     g_hdlUpSco = INVALID_PHONE_SERVICE_VALUE;
     g_hdlUpMic = INVALID_PHONE_SERVICE_VALUE;
-
 }
 
 static void AudioDnRelease(void)
@@ -475,29 +469,29 @@ static void AudioDnRelease(void)
     if (g_hdlDnSco != INVALID_PHONE_SERVICE_VALUE) {
         ret = PhoneAudioStreamInStop(g_hdlDnSco);
         if (ret != OHOS_SUCCESS) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpRelease] [InStop] g_hdlDnSco error! ret = %d", ret);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpRelease] [InStop] hdlDnSco ret:%d", ret);
         }
         ret = PhoneAudioStreamInDeinit(g_hdlDnSco);
         if (ret != OHOS_SUCCESS) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpRelease] [InDeinit] g_hdlDnSco error! ret = %d", ret);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioUpRelease] [InDeinit] hdlDnSco ret:%d", ret);
         }
     }
 
     if (g_hdlDnSpk != INVALID_PHONE_SERVICE_VALUE) {
         ret = PhoneAudioStreamOutStop(g_hdlDnSpk);
         if (ret != OHOS_SUCCESS) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnRelease] [OutStop] g_hdlDnSpk error! ret = %d", ret);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnRelease] [OutStop] hdlDnSpk ret:%d", ret);
         }
         ret = PhoneAudioStreamOutDeinit(g_hdlDnSpk);
         if (ret != OHOS_SUCCESS) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnRelease] [OutDeinit] g_hdlDnSpk error! ret = %d", ret);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnRelease] [OutDeinit] hdlDnSpk ret:%d", ret);
         }
     }
 
     if (g_audioState >= AUDIO_CONN_IN_BT_SCO) {
         ret = PhoneAudioManagerSetDeviceConnState(IN_BLUETOOTH_SCO, AUDIO_DEVICE_DISCONNECTED);
         if (ret != OHOS_SUCCESS) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnRelease] IN_BLUETOOTH_SCO error! ret = %d", ret);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AudioDnRelease] sco in ret:%d", ret);
         }
     }
 
@@ -522,7 +516,7 @@ void AudioRelease(void)
     AudioDeactInterrupt(AUDIO_STREAM_RING); // 适配某些机型不触发SCO
     g_audioState = AUDIO_UNKNOW;
 
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AudioRelease] end g_audioState: %d,", g_audioState);
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "[AudioRelease] audioState:%d,", g_audioState);
     MUTEX_Unlock(g_audioMutex);
 }
 
@@ -579,8 +573,13 @@ static void BtDisconnectedPro(void)
     PhoneServiceErrorCallback(ERROR_BT, PROFILE_STATE_DISCONNECTED);
     CallListInit();
 
-    // 释放媒体资源
-    PostGraphicEvent(AudioRelease);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtDisconnectedPro callState:%d", g_currCallState);
+    if (g_currCallState == HFP_HF_CALL_STATE_INCOMING) {
+        /* 处理呼入阶段,取消手表配对 */
+        hfp_hf_calls_info_t call = {0};
+        HfpIncomingEventPublish(TOPIC_EVENT_HFP_FINISHED, call);
+    }
+
     g_currCallState = HFP_HF_CALL_STATE_FINISHED;
     g_scoFlag = HFP_SCO_STATE_DISCONNECTED;
     g_completeCallFlag = false;
@@ -589,15 +588,9 @@ static void BtDisconnectedPro(void)
 // 蓝牙状态连接
 static void ConnStateChanged(const bd_addr_t *bdAddr, profile_connect_state_t state)
 {
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ConnStateChanged] state = 0x%X bdAddr: ", state);
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "[ConnStateChanged] state = 0x%X bdAddr: ", state);
     CatBdAddr(bdAddr);
 
-    if (state == PROFILE_STATE_CONNECTED) {
-        SendMsgToUIService(BT_CONNECTED_TO_UI, 0, NULL, 0);
-    } else if (state == PROFILE_STATE_DISCONNECTED) {
-        SendMsgToUIService(BT_DISCONNECTED_TO_UI, 0, NULL, 0);
-    }
-
     switch (state) {
         case PROFILE_STATE_CONNECTING: // 蓝牙正在连接
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ConnStateChanged] BT connecting");
@@ -605,6 +598,8 @@ static void ConnStateChanged(const bd_addr_t *bdAddr, profile_connect_state_t st
         case PROFILE_STATE_CONNECTED: // 蓝牙连接成功
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ConnStateChanged] BT connected");
             BtConnectedPro(bdAddr);
+            SendMsgToUIService(BT_CONNECTED_TO_UI, 0, nullptr, 0);
+            SendMsgToMsgCenterService(BT_CONNECTED_TO_MSGCENTER, 0, nullptr, 0);
             break;
         case PROFILE_STATE_DISCONNECTING: // 蓝牙连接断连
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ConnStateChanged] BT disconnecting");
@@ -612,6 +607,8 @@ static void ConnStateChanged(const bd_addr_t *bdAddr, profile_connect_state_t st
         case PROFILE_STATE_DISCONNECTED: // 蓝牙断开连接
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ConnStateChanged] BT disconnected");
             BtDisconnectedPro();
+            SendMsgToUIService(BT_DISCONNECTED_TO_UI, 0, nullptr, 0);
+            SendMsgToMsgCenterService(BT_DISCONNECTED_TO_MSGCENTER, 0, nullptr, 0);
             break;
         default:
             break;
@@ -628,7 +625,7 @@ uint32 GetBtConnectStatus(void)
 // SCO连接处理
 static void ScoConnectPro(void)
 {
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScoConnectPro] g_currCallNum = %d, g_scoFlag = %d", g_currCallNum, g_scoFlag);
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "[ScoConnectPro] CallNum:%d, ScoFlag:%d", g_currCallNum, g_scoFlag);
     // 通知sco建立连接(或通话转移:手机 -> 手表)
     ScoStatusCb(HFP_SCO_STATE_CONNECTED);
     if (g_currCallState == HFP_HF_CALL_STATE_ACTIVE && g_scoFlag == HFP_SCO_STATE_CONNECTED) {
@@ -636,49 +633,31 @@ static void ScoConnectPro(void)
         hfp_hf_calls_info_t call = {0};
         HfpIncomingEventPublish(TOPIC_EVENT_HFP_PHONE_TO_WATCH, call);
     }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScoConnectPro] g_audioState: %d ", g_audioState);
-
-    if (g_audioState < AUDIO_STREAM_START_DN) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScoConnectPro] post AudioDn");
-        PostGraphicEvent(AudioDn);
-    }
-
-    if (g_audioState != AUDIO_STREAM_START_UP) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScoConnectPro] post AudioUp");
-        PostGraphicEvent(AudioUp);
-    }
 
+    PostGraphicEvent(AudioSetup);
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "[ScoConnectPro] audioState:%d", g_audioState);
 }
 
 // SCO断连处理
 static void ScoDisconnectPro(void)
 {
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScoDisconnectPro] start  g_currCallState = %d", g_currCallState);
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "[ScoDisconnectPro] start CallState:%d", g_currCallState);
 
-    // 通知sco断开连接(或通话转移:手表 -> 手机)
-    if (g_currCallState != HFP_HF_CALL_STATE_INCOMING) {
-        ScoStatusCb(HFP_SCO_STATE_DISCONNECTED);
-    }
+    ScoStatusCb(HFP_SCO_STATE_DISCONNECTED);
     if (g_currCallState == HFP_HF_CALL_STATE_ACTIVE && g_scoFlag == HFP_SCO_STATE_DISCONNECTED) {
         // The call is transferred from the watch to the phone. Need to close the call notification view.
         hfp_hf_calls_info_t call = {0};
         HfpIncomingEventPublish(TOPIC_EVENT_HFP_WATCH_TO_PHONE, call);
     }
-
-    usleep(5000); // 增加延时确保SCO断开后状态复位成功
-
-    if (g_currCallState == HFP_HF_CALL_STATE_INCOMING) { // 规避某些型号手机在电话呼入时重复断开和连接SCO
-        return;
-    }
-
-    PostGraphicEvent(AudioRelease);
+    AudioRelease(); // 为了保持时序,此处采取同步调用
+    usleep(5000); // 增加延时确保SCO断开AUDIO通路释放成功
 }
 
 // Sco连接状态变化回调函数,音频连接状态
 static void ScoStateChanged(const bd_addr_t *bdAddr, hfp_sco_connect_state_t state)
 {
     g_scoFlag = state;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScoStateChanged] state = %d, g_scoFlag = %d, g_currCallNum = %d", state,
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "[ScoStateChanged] hfpState:%d, ScoFlag:%d, CallNum:%d", state,
         g_scoFlag, g_currCallNum);
 
     switch (state) {
@@ -714,9 +693,9 @@ static void ScoStateChanged(const bd_addr_t *bdAddr, hfp_sco_connect_state_t sta
 
 static void CallLogCreatDir(void)
 {
-    DIR *dir = NULL;
+    DIR *dir = nullptr;
     dir = opendir(CALL_LOG_DIR);
-    if (dir == NULL) {
+    if (dir == nullptr) {
         mkdir(CALL_LOG_DIR, S_IREAD | S_IWRITE);
     } else {
         closedir(dir);
@@ -729,8 +708,8 @@ static int GetCallLogFileSize(void)
 {
     int len = 0;
     FILE *fp = fopen(CALL_LOG_PATH, "rb");
-    if (fp == NULL) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[GetCallLogFileSize] fopen CALL_LOG_PATH error");
+    if (fp == nullptr) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[GetCallLogFileSize] fopen %s failed", CALL_LOG_PATH);
         return OHOS_FAILURE;
     }
 
@@ -739,25 +718,25 @@ static int GetCallLogFileSize(void)
     fseek(fp, 0, SEEK_SET);
     fclose(fp);
 
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[GetCallLogFileSize] len = %d", len);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[GetCallLogFileSize] len:%d", len);
     return len;
 }
 
 // 添加通话进通话记录文件
 void AddToCallLog(CallLogInfo *info)
 {
-    FILE *fp = NULL;
+    FILE *fp = nullptr;
     size_t ret;
 
     fp = fopen(CALL_LOG_PATH, "ab");
-    if (fp == NULL) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AddToCallLog] fopen failed!");
+    if (fp == nullptr) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AddToCallLog] fopen %s failed!", CALL_LOG_PATH);
         return;
     }
 
     ret = fwrite(info, sizeof(CallLogInfo), 1, fp);
     if (ret != 1) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AddToCallLog] fwrite failed! ret = %d", ret);
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AddToCallLog] fwrite failed! ret:%d", ret);
     }
 
     fclose(fp);
@@ -766,13 +745,12 @@ void AddToCallLog(CallLogInfo *info)
 
 static int CopyPhoneLogToTmpLog(void)
 {
-    FILE *fp = NULL;
-    FILE *ftp = NULL;
-    CallLogInfo *info = NULL;
+    FILE *fp = nullptr;
+    FILE *ftp = nullptr;
+    CallLogInfo *info = nullptr;
 
     int retLen;
     int fileSize = GetCallLogFileSize();
-
     if (fileSize == OHOS_FAILURE || fileSize == 0) {
         return fileSize;
     }
@@ -782,30 +760,30 @@ static int CopyPhoneLogToTmpLog(void)
         return ClearCallLogFile(); // 只有一条记录,清空通话记录
     }
 
-    fp = fopen(CALL_LOG_PATH,"rb");
-    if (fp == NULL) {
+    fp = fopen(CALL_LOG_PATH, "rb");
+    if (fp == nullptr) {
         return OHOS_FAILURE;
     }
     ftp = fopen(CALL_TMP_LOG_PATH, "wb+");
-    if (ftp == NULL) {
+    if (ftp == nullptr) {
         fclose(fp);
         return OHOS_FAILURE;
     }
 
     info = (CallLogInfo *)malloc(fileSize);
-    if (info == NULL) {
+    if (info == nullptr) {
         fclose(fp);
         fclose(ftp);
         return OHOS_FAILURE;
     }
 
     (void)memset_s(info, fileSize, 0, fileSize);
-    if(fread(info, fileSize, 1, fp) != 1) {
+    if (fread(info, fileSize, 1, fp) != 1) {
         retLen = OHOS_FAILURE;
         goto END;
     }
 
-    if(fwrite((info + 1), retLen, 1, ftp) != 1) {
+    if (fwrite((info + 1), retLen, 1, ftp) != 1) {
         retLen = OHOS_FAILURE;
         goto END;
     }
@@ -814,16 +792,16 @@ END:
     fclose(fp);
     fclose(ftp);
     free(info);
-    info = NULL;
+    info = nullptr;
     return retLen;
 }
 
 // 删除第一条通话记录
 int RemoveFirstCallLog(void)
 {
-    FILE *fp = NULL;
-    FILE *ftp = NULL;
-    CallLogInfo *info = NULL;
+    FILE *fp = nullptr;
+    FILE *ftp = nullptr;
+    CallLogInfo *info = nullptr;
 
     int ret = OHOS_SUCCESS;
     int fileSize = CopyPhoneLogToTmpLog();
@@ -831,29 +809,29 @@ int RemoveFirstCallLog(void)
         return fileSize;
     }
 
-    fp = fopen(CALL_LOG_PATH,"wb+");
-    if (fp == NULL) {
+    fp = fopen(CALL_LOG_PATH, "wb+");
+    if (fp == nullptr) {
         return OHOS_FAILURE;
     }
     ftp = fopen(CALL_TMP_LOG_PATH, "rb");
-    if (ftp == NULL) {
+    if (ftp == nullptr) {
         fclose(fp);
         return OHOS_FAILURE;
     }
 
     info = (CallLogInfo *)malloc(fileSize);
-    if (info == NULL) {
+    if (info == nullptr) {
         fclose(fp);
         fclose(ftp);
         return OHOS_FAILURE;
     }
     (void)memset_s(info, fileSize, 0, fileSize);
-    if(fread(info, fileSize, 1, ftp) != 1) {
+    if (fread(info, fileSize, 1, ftp) != 1) {
         ret = OHOS_FAILURE;
         goto END;
     }
 
-    if(fwrite(info, fileSize, 1, fp) != 1) {
+    if (fwrite(info, fileSize, 1, fp) != 1) {
         ret = OHOS_FAILURE;
         goto END;
     }
@@ -862,33 +840,31 @@ END:
     fclose(fp);
     fclose(ftp);
     free(info);
-    info = NULL;
+    info = nullptr;
     return ret;
 }
 
 // 添加通话记录
 static void AddToCallLogPro(PhoneCallInfo *callInfo)
 {
-    int ret, num, fileSize;
-    CallLogInfo info;
-
-    if (callInfo == NULL) {
+    if (callInfo == nullptr) {
         return;
     }
 
-    fileSize = GetCallLogFileSize();
-    num = fileSize / sizeof(CallLogInfo);
+    int fileSize = GetCallLogFileSize();
+    int num = fileSize / sizeof(CallLogInfo);
     if (num >= CALL_LOG_MAX_NUM) {
-        ret = RemoveFirstCallLog();
+        int ret = RemoveFirstCallLog();
         if (ret == OHOS_FAILURE) {
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AddToCallLogPro] RemoveFirstCallLog error");
             return;
         }
     }
 
+    CallLogInfo info;
     (void)memset_s(info.name, NAME_SIZE, '\0', NAME_SIZE);
     (void)memset_s(info.tel, MAX_PHONE_NUM, '\0', MAX_PHONE_NUM);
-    ret = memcpy_s(info.name, NAME_SIZE, callInfo->name, callInfo->nameLen);
+    int ret = memcpy_s(info.name, NAME_SIZE, callInfo->name, callInfo->nameLen);
     if (ret != EOK) {
         info.nameLen = 0;
     } else {
@@ -905,7 +881,7 @@ static void AddToCallLogPro(PhoneCallInfo *callInfo)
     info.creationTime = callInfo->creationTime;
     if (callInfo->lastStatus == HFP_HF_CALL_STATE_ACTIVE || callInfo->lastStatus == HFP_HF_CALL_STATE_HELD ||
         callInfo->lastStatus == HFP_HF_CALL_STATE_RESPONSE_HELD) {
-        info.callDurTime = time(NULL) - callInfo->activeTime;
+        info.callDurTime = time(nullptr) - callInfo->activeTime;
     } else {
         info.callDurTime = 0;
     }
@@ -924,40 +900,36 @@ static void AddToCallLogPro(PhoneCallInfo *callInfo)
 // 获取通话记录
 int GetCallLog(CallLogInfo **info, int *num)
 {
-    FILE *fp = NULL;
-    int ret, fileSize, number;
-    CallLogInfo *callInfo = NULL;
-
-    fp = fopen(CALL_LOG_PATH, "rb");
-    if (fp == NULL) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AddToCallLog] fopen CALL_LOG_PATH failed!");
+    FILE *fp = fopen(CALL_LOG_PATH, "rb");
+    if (fp == nullptr) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AddToCallLog] fopen %s failed!", CALL_LOG_PATH);
         return OHOS_FAILURE;
     }
 
-    fileSize = GetCallLogFileSize();
+    int fileSize = GetCallLogFileSize();
     if (fileSize == 0) {
-        *info = NULL;
+        *info = nullptr;
         *num = 0;
         fclose(fp);
         return OHOS_SUCCESS;
     }
 
-    number = fileSize / sizeof(CallLogInfo);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[GetCallLog] fileSize = %d, number = %d", fileSize, number);
-    callInfo = (CallLogInfo *)malloc(fileSize);
-    if (callInfo == NULL) {
+    int number = fileSize / sizeof(CallLogInfo);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[GetCallLog] fileSize:%d, number:%d", fileSize, number);
+    CallLogInfo *callInfo = (CallLogInfo *)malloc(fileSize);
+    if (callInfo == nullptr) {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[GetCallLog] malloc callInfo fail!");
-        *info = NULL;
+        *info = nullptr;
         *num = 0;
         fclose(fp);
         return OHOS_FAILURE;
     }
     (void)memset_s(callInfo, fileSize, 0, fileSize);
 
-    ret = fread(callInfo, sizeof(CallLogInfo), number, fp);
+    int ret = fread(callInfo, sizeof(CallLogInfo), number, fp);
     if (ret != number) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[GetCallLog] fread fp fail ret = %d", ret);
-        *info = NULL;
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[GetCallLog] fread fp fail ret:%d", ret);
+        *info = nullptr;
         *num = 0;
         fclose(fp);
         return OHOS_FAILURE;
@@ -973,8 +945,8 @@ int GetCallLog(CallLogInfo **info, int *num)
 int ClearCallLogFile(void)
 {
     FILE *fp = fopen(CALL_LOG_PATH, "wb");
-    if (fp == NULL) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[ClearCallLogFile] fopen CALL_LOG_PATH failed!");
+    if (fp == nullptr) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[ClearCallLogFile] fopen %s failed!", CALL_LOG_PATH);
         return OHOS_FAILURE;
     }
 
@@ -986,11 +958,11 @@ int ClearCallLogFile(void)
 static PhoneCallInfo *FindCallInfoInCallList(const unsigned char *number, unsigned char numberLen)
 {
     int i;
-    const char *str1 = NULL;
-    const char *str2 = NULL;
+    const char *str1 = nullptr;
+    const char *str2 = nullptr;
 
     if (g_currCallNum == 0) {
-        return NULL;
+        return nullptr;
     }
 
     for (i = 0; i < MULTI_CALL_MAX_NUME; i++) {
@@ -1006,7 +978,7 @@ static PhoneCallInfo *FindCallInfoInCallList(const unsigned char *number, unsign
         }
     }
 
-    return NULL;
+    return nullptr;
 }
 
 static void CatPhoneNumber(char *number, unsigned char len)
@@ -1024,26 +996,23 @@ static void CatPhoneNumber(char *number, unsigned char len)
 
 static void AddCurrCallToCallList(const hfp_hf_calls_info_t *call)
 {
-    PhoneCallInfo *phoneCall = NULL;
-    int tmp, ret;
-
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AddCurrCallToCallList] start, call->state = %d", call->state);
-    if (call == NULL || g_currCallNum >= MULTI_CALL_MAX_NUME ||
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AddCurrCallToCallList] state:%d", call->state);
+    if (call == nullptr || g_currCallNum >= MULTI_CALL_MAX_NUME ||
         (call->state != HFP_HF_CALL_STATE_ACTIVE && call->state != HFP_HF_CALL_STATE_HELD &&
         call->state != HFP_HF_CALL_STATE_ALERTING)) {
         return;
     }
 
     g_currCallNum++;
-    tmp = g_currCallNum - 1;
-    phoneCall = &g_callList[tmp];
+    int32_t tmp = g_currCallNum - 1;
+    PhoneCallInfo *phoneCall = &g_callList[tmp];
 
     if (call->state == HFP_HF_CALL_STATE_ACTIVE) { // 正在通话
         phoneCall->operate = OPERATE_PHONE_ACTIVE;
-        phoneCall->activeTime = time(NULL);
+        phoneCall->activeTime = time(nullptr);
     } else if (call->state == HFP_HF_CALL_STATE_HELD) { // 挂起
         phoneCall->operate = OPERATE_PHONE_HOLD;
-        phoneCall->activeTime = time(NULL);
+        phoneCall->activeTime = time(nullptr);
     } else if (call->state == HFP_HF_CALL_STATE_ALERTING) { // 呼出,对方响铃
         phoneCall->operate = OPERATE_ALERTING;
     }
@@ -1051,11 +1020,11 @@ static void AddCurrCallToCallList(const hfp_hf_calls_info_t *call)
     // 使用通讯录接口获取当前电话对应的备注人名(通讯录待开发)
 
     phoneCall->lastStatus = call->state;
-    phoneCall->creationTime = time(NULL);
+    phoneCall->creationTime = time(nullptr);
 
-    ret = memcpy_s(phoneCall->tel, MAX_PHONE_NUM, call->number, call->number_len);
+    int32_t ret = memcpy_s(phoneCall->tel, MAX_PHONE_NUM, call->number, call->number_len);
     if (ret != EOK) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AddCurrCallToCallList] memcpy_s tel fail, ret = %d", ret);
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AddCurrCallToCallList] copy tel ret:%d", ret);
         CatPhoneNumber(call->number, call->number_len);
     }
     phoneCall->telLen = call->number_len;
@@ -1069,26 +1038,23 @@ static void AddCurrCallToCallList(const hfp_hf_calls_info_t *call)
 // 通话状态变化--呼出,正在拨号处理
 static void CallChangeDialPro(const hfp_hf_calls_info_t *call)
 {
-    PhoneCallInfo *phoneCall = NULL;
-    int tmp, ret;
-
-    if (call == NULL) {
+    if (call == nullptr) {
         return;
     }
-    g_currCallNum++;
-    tmp = g_currCallNum - 1;
 
-    phoneCall = &g_callList[tmp];
+    g_currCallNum++;
+    int32_t tmp = g_currCallNum - 1;
+    PhoneCallInfo *phoneCall = &g_callList[tmp];
 
     // 使用通讯录接口获取当前电话对应的备注人名(通讯录待开发)
 
     phoneCall->operate = OPERATE_DIALING;
     phoneCall->lastStatus = call->state;
-    phoneCall->creationTime = time(NULL);
+    phoneCall->creationTime = time(nullptr);
 
-    ret = memcpy_s(phoneCall->tel, MAX_PHONE_NUM, call->number, call->number_len);
+    int32_t ret = memcpy_s(phoneCall->tel, MAX_PHONE_NUM, call->number, call->number_len);
     if (ret != EOK) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CallChangeDialPro] memcpy_s tel fail, ret = %d", ret);
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CallChangeDialPro] copy tel ret:%d", ret);
         CatPhoneNumber(call->number, call->number_len);
     }
     phoneCall->telLen = call->number_len;
@@ -1102,15 +1068,15 @@ static void CallChangeDialPro(const hfp_hf_calls_info_t *call)
 // 通话状态变化--呼出,对方响铃
 static void CallChangeAlertPro(const hfp_hf_calls_info_t *call)
 {
-    PhoneCallInfo *phoneCall = NULL;
+    PhoneCallInfo *phoneCall = nullptr;
 
-    if (call == NULL) {
+    if (call == nullptr) {
         return;
     }
 
     phoneCall = FindCallInfoInCallList((const unsigned char*)call->number, call->number_len);
-    if (phoneCall == NULL) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallChangeAlertPro] FindCallInfoInCallList Alert no this call");
+    if (phoneCall == nullptr) {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallChangeAlertPro] Alert no this call");
         AddCurrCallToCallList(call);
         return;
     }
@@ -1127,22 +1093,22 @@ void HfpIncomingEventPublish(uint16 topic, hfp_hf_calls_info_t callsInfo)
 {
     int32 ret;
     uint32 size = sizeof(hfp_hf_calls_info_t);
-    Request *request = NULL;
-    BroadcastApi *broadcastApi = NULL;
-    IUnknown *api = NULL;
+    Request *request = nullptr;
+    BroadcastApi *broadcastApi = nullptr;
+    IUnknown *api = nullptr;
 
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HfpIncomingEventPublish topic=%u!!", topic);
 
     /* alloc request */
     request = SAMGR_AllocRequestMsg(0, PLATFORM_CORE, BROADCAST_SVR_ID, size);
-    if (request == NULL) {
+    if (request == nullptr) {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SAMGR_AllocRequestMsg failed");
         return;
     }
     request->msgId = topic;
     ret = memcpy_s(request->data, size, (const void *)&callsInfo, size);
     if (ret != EOK) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HfpIncomingEventPublish memcpy_s rateDataTmp fail! ret = %d", ret);
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HfpIncomingEventPublish memcpy_s rateDataTmp fail! ret:%d", ret);
         return;
     }
     request->len = size;
@@ -1150,13 +1116,13 @@ void HfpIncomingEventPublish(uint16 topic, hfp_hf_calls_info_t callsInfo)
 
     /* public request */
     api = SAMGR_GetInstance()->GetFeatureApi(BROADCAST_SERVICE_NAME, BROADCAST_FEATURE_NAME);
-    if (api == NULL) {
+    if (api == nullptr) {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetFeatureApi failed");
         SAMGR_FreeRequestMsg(request);
         return;
     }
     ret = api->QueryInterface(api, DEFAULT_VERSION, (void **)&broadcastApi);
-    if (ret != 0 || broadcastApi == NULL) {
+    if (ret != 0 || broadcastApi == nullptr) {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "QueryInterface failed");
         SAMGR_FreeRequestMsg(request);
         return;
@@ -1169,23 +1135,19 @@ void HfpIncomingEventPublish(uint16 topic, hfp_hf_calls_info_t callsInfo)
 }
 
 // 通话状态变化--呼入处理
-void CallChangeIncomePro(const hfp_hf_calls_info_t *call)
+static void CallChangeIncomePro(const hfp_hf_calls_info_t *call)
 {
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[hu] call");
-    PhoneCallInfo *phoneCall = NULL;
-    int tmp, ret;
-
-    if (call == NULL || g_currCallNum >= MULTI_CALL_MAX_NUME ||
+    if (call == nullptr || g_currCallNum >= MULTI_CALL_MAX_NUME ||
         (call->state != HFP_HF_CALL_STATE_INCOMING && call->state != HFP_HF_CALL_STATE_WAITING)) {
         return;
     }
 
-    phoneCall = FindCallInfoInCallList((const unsigned char*)call->number, call->number_len);
-    if (phoneCall != NULL) {
+    PhoneCallInfo *phoneCall = FindCallInfoInCallList((const unsigned char*)call->number, call->number_len);
+    if (phoneCall != nullptr) {
         // 通话状态由呼入等待转换成呼入情况
     } else {
         g_currCallNum++;
-        tmp = g_currCallNum - 1;
+        int32_t tmp = g_currCallNum - 1;
         phoneCall = &g_callList[tmp];
     }
 
@@ -1197,11 +1159,11 @@ void CallChangeIncomePro(const hfp_hf_calls_info_t *call)
         phoneCall->operate = OPERATE_WAITING;
     }
     phoneCall->lastStatus = call->state;
-    phoneCall->creationTime = time(NULL);
+    phoneCall->creationTime = time(nullptr);
 
-    ret = memcpy_s(phoneCall->tel, MAX_PHONE_NUM, call->number, call->number_len);
+    int32_t ret = memcpy_s(phoneCall->tel, MAX_PHONE_NUM, call->number, call->number_len);
     if (ret != EOK) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CallChangeIncomePro] memcpy_s tel fail, ret = %d", ret);
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CallChangeIncomePro] copy tel ret:%d", ret);
         CatPhoneNumber(call->number, call->number_len);
     }
     phoneCall->telLen = call->number_len;
@@ -1217,22 +1179,23 @@ void CallChangeIncomePro(const hfp_hf_calls_info_t *call)
 // 通话状态变化--接听流程处理
 static void CallChangeActivePro(const hfp_hf_calls_info_t *call)
 {
-    PhoneCallInfo *phoneCall = NULL;
+    PhoneCallInfo *phoneCall = nullptr;
 
-    if (call == NULL) {
+    if (call == nullptr) {
         return;
     }
 
     phoneCall = FindCallInfoInCallList((const unsigned char*)call->number, call->number_len);
-    if (phoneCall == NULL) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallChangeActivePro] FindCallInfoInCallList Active no this call");
+    if (phoneCall == nullptr) {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallChangeActivePro] Active no this call");
         AddCurrCallToCallList(call);
+        TransCallToMobilePhone();
         return;
     }
 
-    if (phoneCall->lastStatus == HFP_HF_CALL_STATE_HELD && IsCompleteCallFlow() == true) { // 挂起状态切换到接听状态
+    if (phoneCall->lastStatus == HFP_HF_CALL_STATE_HELD && IsCompleteCallFlow()) { // 挂起状态切换到接听状态
         phoneCall->operate = OPERATE_WATCH_ACTIVE;
-    } else if (phoneCall->lastStatus == HFP_HF_CALL_STATE_HELD && IsCompleteCallFlow() == false) {
+    } else if (phoneCall->lastStatus == HFP_HF_CALL_STATE_HELD && (!IsCompleteCallFlow())) {
         phoneCall->operate = OPERATE_PHONE_ACTIVE;
     } else if (phoneCall->operate == OPERATE_WATCH_ACTIVE) { // 手表接听
         // 不做操作
@@ -1250,7 +1213,7 @@ static void CallChangeActivePro(const hfp_hf_calls_info_t *call)
     if (phoneCall->activeTime == 0 &&
         (phoneCall->lastStatus == HFP_HF_CALL_STATE_DIALING || phoneCall->lastStatus == HFP_HF_CALL_STATE_ALERTING ||
         phoneCall->lastStatus == HFP_HF_CALL_STATE_INCOMING || phoneCall->lastStatus == HFP_HF_CALL_STATE_WAITING)) {
-        phoneCall->activeTime = time(NULL);
+        phoneCall->activeTime = time(nullptr);
     }
 
     phoneCall->lastStatus = call->state;
@@ -1258,7 +1221,7 @@ static void CallChangeActivePro(const hfp_hf_calls_info_t *call)
     if (phoneCall->operate == OPERATE_PHONE_ACTIVE) {
         // 发布电话接听事件,手表关闭来电通知
         HfpIncomingEventPublish(TOPIC_EVENT_HFP_PHONE_ACTIVE, phoneCall->unitCalls);
-    } else if (phoneCall->operate == OPERATE_WATCH_ACTIVE) {
+    } else if (phoneCall->operate == OPERATE_WATCH_ACTIVE && g_scoFlag == HFP_SCO_STATE_CONNECTED) {
         // 发布手表接听事件,通知切换接听界面
         HfpIncomingEventPublish(TOPIC_EVENT_HFP_WATCH_ACTIVE, phoneCall->unitCalls);
     }
@@ -1269,18 +1232,18 @@ static void CallChangeActivePro(const hfp_hf_calls_info_t *call)
 // 通话状态变化--拒接/结束流程处理
 static void CallChangeFinishPro(const hfp_hf_calls_info_t *call)
 {
-    PhoneCallInfo *phoneCall = NULL;
+    PhoneCallInfo *phoneCall = nullptr;
     PhoneCallInfo tmp;
 
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallChangeFinishPro] start g_scoFlag = %d, g_currCallNum = %d",
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallChangeFinishPro] start scoFlag:%d, CallNum:%d",
         g_scoFlag, g_currCallNum);
-    if (call == NULL || g_currCallNum == 0) {
+    if (call == nullptr || g_currCallNum == 0) {
         return;
     }
 
     phoneCall = FindCallInfoInCallList((const unsigned char*)call->number, call->number_len);
-    if (phoneCall == NULL) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallChangeFinishPro] FindCallInfoInCallList Finish no this call");
+    if (phoneCall == nullptr) {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallChangeFinishPro] Finish no this call");
         return;
     }
     if (g_finishOperate == OPERATE_WATCH_FINISH) {
@@ -1308,22 +1271,22 @@ static void CallChangeFinishPro(const hfp_hf_calls_info_t *call)
     // 通知手表通话结束
     CallChangedCb(&tmp);
 
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallChangeFinishPro] end  g_scoFlag = %d, g_currCallNum = %d",
-                g_scoFlag, g_currCallNum);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallChangeFinishPro] end  scoFlag:%d, CallNum:%d",
+                  g_scoFlag, g_currCallNum);
 }
 
 // 通话状态变化--挂起通话(当前只有手机挂起触发(并且手表不需感知),手表不支持挂起触发,对方挂起不感知)
 static void CallChangeHeldPro(const hfp_hf_calls_info_t *call)
 {
-    PhoneCallInfo *phoneCall = NULL;
+    PhoneCallInfo *phoneCall = nullptr;
 
-    if (call == NULL) {
+    if (call == nullptr) {
         return;
     }
 
     phoneCall = FindCallInfoInCallList((const unsigned char*)call->number, call->number_len);
-    if (phoneCall == NULL) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallChangeHeldPro] FindCallInfoInCallList Held no this call");
+    if (phoneCall == nullptr) {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallChangeHeldPro] Held no this call");
         AddCurrCallToCallList(call);
         return;
     }
@@ -1331,7 +1294,7 @@ static void CallChangeHeldPro(const hfp_hf_calls_info_t *call)
     // 手机挂起通话
     phoneCall->operate = OPERATE_PHONE_HOLD;
     if (phoneCall->lastStatus == HFP_HF_CALL_STATE_INCOMING || phoneCall->lastStatus == HFP_HF_CALL_STATE_WAITING) {
-        phoneCall->activeTime = time(NULL);
+        phoneCall->activeTime = time(nullptr);
     }
     phoneCall->lastStatus = call->state;
     (void)memcpy_s(&phoneCall->unitCalls, sizeof(hfp_hf_calls_info_t), call, sizeof(hfp_hf_calls_info_t));
@@ -1343,20 +1306,15 @@ static void CallChangeHeldPro(const hfp_hf_calls_info_t *call)
 static void PlayWatchRing(void)
 {
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayWatchRing] start");
-    // 申请手表铃声焦点
-    // AudioActInterrupt(AUDIO_STREAM_RING);
-    // 播放手表铃声(播放方案待定)
 }
 
 static void CallAudioHandle(const hfp_hf_calls_info_t *call)
 {
     int state = call->state;
 
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallAudioHandle] start g_audioState: %d", g_audioState);
-
     if (state == HFP_HF_CALL_STATE_INCOMING || state == HFP_HF_CALL_STATE_DIALING ||
         state == HFP_HF_CALL_STATE_ALERTING) { // 电话呼入,支持播放手机铃声
-        if (call->in_band_ring == true) {
+        if (call->in_band_ring) {
             // 播放手机端铃声
             PostGraphicEvent(AudioDn);
         } else {
@@ -1368,27 +1326,18 @@ static void CallAudioHandle(const hfp_hf_calls_info_t *call)
     } else if (state == HFP_HF_CALL_STATE_FINISHED) {
         return;
     } else if (g_scoFlag == HFP_SCO_STATE_CONNECTED) {
-        if (g_audioState < AUDIO_STREAM_START_DN) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallAudioHandle] post AudioDn");
-            PostGraphicEvent(AudioDn);
-        }
-        if (g_audioState != AUDIO_STREAM_START_UP) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallAudioHandle] post AudioUp");
-            PostGraphicEvent(AudioUp);
-        }
+        PostGraphicEvent(AudioSetup);
     }
-
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallAudioHandle] end g_audioState: %d", g_audioState);
 }
 
 static void CatCallStateChangedInfo(const bd_addr_t *bdAddr, const hfp_hf_calls_info_t *call)
 {
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "***************************CallStateChanged***************************");
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "g_scoFlag = %d, g_currCallNum = %d, bdAddr: ", g_scoFlag, g_currCallNum);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "scoFlag:%d, CallNum:%d, bdAddr: ", g_scoFlag, g_currCallNum);
     CatBdAddr(bdAddr);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "id = %d, state = %d", call->id, call->state);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "id:%d, state:%d", call->id, call->state);
     CatPhoneNumber(call->number, call->number_len);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "multi_party = %d, outgoing = %d, in_band_ring = %d, creation_time = %ld",
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "multi_party:%d, outgoing:%d, in_band_ring:%d, creation_time:%ld",
         call->multi_party, call->outgoing, call->in_band_ring, call->creation_time);
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "***********************************************************************");
 }
@@ -1415,7 +1364,7 @@ bool IsCompleteCallFlow(void)
 static void CallStateChanged(const bd_addr_t *bdAddr, const hfp_hf_calls_info_t *call)
 {
     CopyBdAddr(bdAddr);
-    if (call == NULL || g_btConnState != PROFILE_STATE_CONNECTED) {
+    if (call == nullptr || g_btConnState != PROFILE_STATE_CONNECTED) {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "call is null or BT disconnected connStatus: 0x%X", g_btConnState);
         return;
     }
@@ -1424,7 +1373,7 @@ static void CallStateChanged(const bd_addr_t *bdAddr, const hfp_hf_calls_info_t
     CatCallStateChangedInfo(bdAddr, call);
     CallAudioHandle(call);
 
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallStateChanged state = %d", call->state);
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "CallStateChanged state:%d", call->state);
     switch (call->state) {
         case HFP_HF_CALL_STATE_ACTIVE: // 正在通话
             CallChangeActivePro(call);
@@ -1441,7 +1390,6 @@ static void CallStateChanged(const bd_addr_t *bdAddr, const hfp_hf_calls_info_t
             CallChangeAlertPro(call);
             break;
         case HFP_HF_CALL_STATE_INCOMING: // 呼入
-
             PhoneServiceScreenCtr(1);
             CallChangeIncomePro(call);
             break;
@@ -1467,37 +1415,31 @@ static void CallStateChanged(const bd_addr_t *bdAddr, const hfp_hf_calls_info_t
     }
 
     if (g_currCallNum == 0) {
-        PostGraphicEvent(AudioRelease);
         g_completeCallFlag = false;
     }
 }
 
-static int g_hfpVolumeType;
-static unsigned char g_hfpVolume;
-
-static void BtHfpVolumeChanged(void)
+static void BtHfpVolumeChanged(int volumeType, unsigned char hfpVolume)
 {
-    int maxVolume, minVolume, tmp;
-    bool ret;
-
     // mic
-    if (g_hfpVolumeType == HFP_VOLUME_MIC) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[BtHfpVolumeChanged] g_hfpVolumeType = %d, g_hfpVolume = %d  ",
-            g_hfpVolumeType, g_hfpVolume);
+    if (volumeType == HFP_VOLUME_MIC) {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "VolumeChanged Type:%d, hfpVolume:%d",
+            volumeType, hfpVolume);
     }
 
     // speak
-    if (g_hfpVolumeType == HFP_VOLUME_SPEAKER) {
-        minVolume = PhoneAudioGetMinVolume();
-        maxVolume = PhoneAudioGetMaxVolume();
-        tmp = g_hfpVolume * (maxVolume - minVolume) / CALL_VOLUME_MAX; // 转换
-
-        ret = PhoneAudioSetVolume(tmp);
-        if (ret != true) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[BtHfpVolumeChanged] g_hfpVolumeType: %d, ret: %d", g_hfpVolumeType, ret);
+    if (volumeType == HFP_VOLUME_SPEAKER) {
+        int32_t minVolume = PhoneAudioGetMinVolume();
+        int32_t maxVolume = PhoneAudioGetMaxVolume();
+        int32_t volume = hfpVolume * (maxVolume - minVolume) / CALL_VOLUME_MAX; // 转换
+        volume = (volume == 0) ? ((maxVolume - minVolume) / CALL_VOLUME_MAX) : volume;
+        bool ret = PhoneAudioSetVolume(volume);
+        if (!ret) {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VolumeChanged Type:%d, ret:%d",
+                          volumeType, ret);
         }
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[BtHfpVolumeChanged] g_hfpVolumeType: %d, minVolume: %d, maxVolume: %d tmp: %d\
-            ret:%d ", g_hfpVolumeType, minVolume, maxVolume, tmp, ret);
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "VolumeChanged Type:%d, min:%d, max:%d volume:%d ret:%d",
+                      volumeType, minVolume, maxVolume, volume, ret);
     }
 }
 
@@ -1505,17 +1447,15 @@ static void BtHfpVolumeChanged(void)
 static void VolumeChanged(const bd_addr_t *bdAddr, hfp_volume_type_t type, unsigned char volume)
 {
     UNUSED(bdAddr);
-    g_hfpVolumeType = type;
-    g_hfpVolume = volume;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VolumeChanged] type = %d volume = %d", type, volume);
-    PostGraphicEvent(BtHfpVolumeChanged); // 解决SdkMsgThread爆栈问题
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VolumeChanged] type:%d volume:%d", type, volume);
+    GraphicService::GetInstance()->PostGraphicEvent(std::bind(BtHfpVolumeChanged, type, volume));
 }
 
 // 拨号失败回调
 static void DialErrorCode(const bd_addr_t *bdAddr, int code)
 {
     UNUSED(bdAddr);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[DialErrorCode] code = %d", code);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[DialErrorCode] code:%d", code);
     PhoneServiceErrorCallback(ERROR_DIAL, code);
 }
 
@@ -1523,28 +1463,28 @@ static void HfpBatteryChanged(const bd_addr_t *bdAddr, int batteryLevel)
 {
     UNUSED(bdAddr);
     UNUSED(batteryLevel);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[HfpBatteryChanged] batteryLevel: %d", batteryLevel);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[HfpBatteryChanged] batteryLevel:%d", batteryLevel);
 }
 
 static void HfpSignalStrengthChanged(const bd_addr_t *bdAddr, int signalStrength)
 {
     UNUSED(bdAddr);
     UNUSED(signalStrength);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[HfpSignalStrengthChanged] signalStrength: %d", signalStrength);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[HfpSignalStrengthChanged] signalStrength:%d", signalStrength);
 }
 
 static void HfpRegistStatusChanged(const bd_addr_t *bdAddr, int status)
 {
     UNUSED(bdAddr);
     UNUSED(status);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[HfpRegistStatusChanged] status: %d", status);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[HfpRegistStatusChanged] status:%d", status);
 }
 
 static void HfpRoamingStatusChanged(const bd_addr_t *bdAddr, int status)
 {
     UNUSED(bdAddr);
     UNUSED(status);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[HfpRoamingStatusChanged] status: %d", status);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[HfpRoamingStatusChanged] status:%d", status);
 }
 
 static void HfpOperatorSelection(const bd_addr_t *bdAddr, unsigned char *name, unsigned int len)
@@ -1552,7 +1492,7 @@ static void HfpOperatorSelection(const bd_addr_t *bdAddr, unsigned char *name, u
     UNUSED(bdAddr);
     UNUSED(name);
     UNUSED(len);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[HfpOperatorSelection] name: %s, len: %d", name, len);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[HfpOperatorSelection] name: %s, len:%d", name, len);
 }
 
 static void HfpSubscriberNumber(const bd_addr_t *bdAddr, unsigned char *number, unsigned int len)
@@ -1560,21 +1500,21 @@ static void HfpSubscriberNumber(const bd_addr_t *bdAddr, unsigned char *number,
     UNUSED(bdAddr);
     UNUSED(number);
     UNUSED(len);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[HfpSubscriberNumber] number: %s, len: %d", number, len);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[HfpSubscriberNumber] number: %s, len:%d", number, len);
 }
 
 static void VoiceRecogStatusChanged(const bd_addr_t *bdAddr, int status)
 {
     UNUSED(bdAddr);
     UNUSED(status);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceRecogStatusChanged] status: %d", status);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceRecogStatusChanged] status:%d", status);
 }
 
 static void InbandRingtoneChanged(const bd_addr_t *bdAddr, int status)
 {
     UNUSED(bdAddr);
     UNUSED(status);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[InbandRingtoneChanged] status: %d", status);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[InbandRingtoneChanged] status:%d", status);
 }
 
 static void CodecChanged(const bd_addr_t *bdAddr, int codec)
@@ -1585,7 +1525,7 @@ static void CodecChanged(const bd_addr_t *bdAddr, int codec)
     } else if (codec == HFP_HF_CODEC_ID_MSBC) {
         g_call_codec = mSBC;
     }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CodecChanged] codec: %d, call_codec: %d", codec, g_call_codec);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CodecChanged] codec:%d, call_codec:%d", codec, g_call_codec);
 }
 
 
@@ -1612,7 +1552,7 @@ static void RegisterHfpHfCallbacks(void)
 
     ret = hfp_hf_register_callbacks(&callbacks);
     if (ret != 0) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[RegisterHfpHfCallbacks] ret = %d", ret);
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[RegisterHfpHfCallbacks] ret:%d", ret);
     }
 }
 
@@ -1636,7 +1576,7 @@ void PhoneServiceInit(void)
 int DialCall(unsigned char *number, unsigned char len)
 {
     int ret;
-    unsigned char *tel = NULL;
+    unsigned char *tel = nullptr;
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[DialCall] start");
     if (g_btConnState != PROFILE_STATE_CONNECTED) {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[DialCall] BT connStatus: 0x%X", g_btConnState);
@@ -1644,13 +1584,13 @@ int DialCall(unsigned char *number, unsigned char len)
     }
 
     // 有通话时,不允许拨出电话
-    if (g_currCallNum > 0 || len > MAX_PHONE_NUM || number == NULL) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[DialCall] g_currCallNum = %d", g_currCallNum);
+    if (g_currCallNum > 0 || len > MAX_PHONE_NUM || number == nullptr) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[DialCall] g_currCallNum:%d", g_currCallNum);
         return OHOS_FAILURE;
     }
 
     tel = (unsigned char *)malloc(len + 1);
-    if (tel == NULL) {
+    if (tel == nullptr) {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[DialCall] malloc tel error");
         return OHOS_FAILURE;
     }
@@ -1658,7 +1598,7 @@ int DialCall(unsigned char *number, unsigned char len)
     *(tel + len) = '\0';
     ret = hfp_hf_start_dial(&g_bdAddr, tel, len);
     if (ret != ERRCODE_BT_SUCCESS) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[DialCall] hfp_hf_start_dial error ret %d", ret);
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[DialCall] hfp_hf_start_dial ret %d", ret);
         free(tel);
         return OHOS_FAILURE;
     }
@@ -1671,8 +1611,8 @@ int DialCall(unsigned char *number, unsigned char len)
 int AcceptIncomingCall(void)
 {
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[AcceptIncomingCall] start");
-    int ret, i;
-    PhoneCallInfo *phoneCall = NULL;
+    int32_t ret;
+    PhoneCallInfo *phoneCall = nullptr;
     PhoneCallInfo *tmp = g_callList;
 
     if (g_btConnState != PROFILE_STATE_CONNECTED) {
@@ -1680,7 +1620,7 @@ int AcceptIncomingCall(void)
         return OHOS_FAILURE;
     }
 
-    for (i = 0; i < MULTI_CALL_MAX_NUME; i++) {
+    for (int32_t i = 0; i < MULTI_CALL_MAX_NUME; i++) {
         if (tmp->lastStatus == HFP_HF_CALL_STATE_INCOMING || tmp->lastStatus == HFP_HF_CALL_STATE_WAITING) {
             phoneCall = tmp;
             break;
@@ -1688,7 +1628,7 @@ int AcceptIncomingCall(void)
         tmp++;
     }
 
-    if (phoneCall == NULL) {
+    if (phoneCall == nullptr) {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AcceptIncomingCall] no incoming");
         return OHOS_FAILURE;
     }
@@ -1701,7 +1641,7 @@ int AcceptIncomingCall(void)
         ret = hfp_hf_accept_incoming_call(&g_bdAddr, HFP_HF_ACCEPT_CALL_ACTION_NONE); // 无人通话,有人呼入,接听呼入电话
     }
     if (ret != ERRCODE_BT_SUCCESS) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AcceptIncomingCall] hfp_hf_accept_incoming_call error ret = %d", ret);
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AcceptIncomingCall] ret:%d", ret);
         phoneCall->operate = OPERATE_NO_OPE;
         return OHOS_FAILURE;
     }
@@ -1709,13 +1649,11 @@ int AcceptIncomingCall(void)
     return OHOS_SUCCESS;
 }
 
-
 // 手表拒接呼入来电,成功:0,失败:错误码
 int RejectIncomingCall(void)
 {
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[RejectIncomingCall] start");
-    int ret, i;
-    PhoneCallInfo *phoneCall = NULL;
+    PhoneCallInfo *phoneCall = nullptr;
     PhoneCallInfo *tmp = g_callList;
 
     if (g_btConnState != PROFILE_STATE_CONNECTED) {
@@ -1723,21 +1661,21 @@ int RejectIncomingCall(void)
         return OHOS_FAILURE;
     }
 
-    for (i = 0; i < MULTI_CALL_MAX_NUME; i++) {
+    for (int32_t i = 0; i < MULTI_CALL_MAX_NUME; i++) {
         if (tmp->lastStatus == HFP_HF_CALL_STATE_INCOMING || tmp->lastStatus == HFP_HF_CALL_STATE_WAITING) {
             phoneCall = tmp;
         }
         tmp++;
     }
 
-    if (phoneCall == NULL) {
+    if (phoneCall == nullptr) {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AcceptIncomingCall] no incoming");
         return OHOS_SUCCESS;
     }
 
-    ret = hfp_hf_reject_incoming_call(&g_bdAddr);
+    int32_t ret = hfp_hf_reject_incoming_call(&g_bdAddr);
     if (ret != ERRCODE_BT_SUCCESS) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[RejectIncomingCall] hfp_hf_reject_incoming_call error ret = %d", ret);
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[RejectIncomingCall] ret:%d", ret);
         return OHOS_FAILURE;
     }
     g_finishOperate = OPERATE_WATCH_REJECT;
@@ -1748,19 +1686,17 @@ int RejectIncomingCall(void)
 // 手表结束通话
 int FinishCall(void)
 {
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[FinishCall] start");
-
     if (g_btConnState != PROFILE_STATE_CONNECTED) {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[FinishCall] BT connStatus: 0x%X", g_btConnState);
         return OHOS_FAILURE;
     }
     int ret = hfp_hf_finish_call(&g_bdAddr);
     if (ret != ERRCODE_BT_SUCCESS) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[FinishCall] hfp_hf_finish_call error ret = %d", ret);
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[FinishCall] ret:%d", ret);
         return OHOS_FAILURE;
     }
     g_finishOperate = OPERATE_WATCH_FINISH;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[FinishCall] success!");
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "FinishCall");
     return OHOS_SUCCESS;
 }
 
@@ -1780,11 +1716,10 @@ int GetCurrCallNum(void)
  */
 int GetCallInfoInCallList(PhoneCallInfo callList[], int listNum, int *retNum)
 {
-    int i, len;
     PhoneCallInfo *tmp = g_callList;
     PhoneCallInfo *tmp2 = callList;
 
-    if (callList == NULL || listNum < MULTI_CALL_MAX_NUME) {
+    if (callList == nullptr || listNum < MULTI_CALL_MAX_NUME) {
         *retNum = 0;
         return OHOS_FAILURE;
     }
@@ -1794,8 +1729,8 @@ int GetCallInfoInCallList(PhoneCallInfo callList[], int listNum, int *retNum)
         return OHOS_SUCCESS;
     }
 
-    len = sizeof(PhoneCallInfo);
-    for (i = 0; i < MULTI_CALL_MAX_NUME; i++) {
+    int32_t len = sizeof(PhoneCallInfo);
+    for (int32_t i = 0; i < MULTI_CALL_MAX_NUME; i++) {
         if (tmp->lastStatus == HFP_HF_CALL_STATE_FINISHED) {
             tmp++;
         } else {
@@ -1809,71 +1744,46 @@ int GetCallInfoInCallList(PhoneCallInfo callList[], int listNum, int *retNum)
     return OHOS_SUCCESS;
 }
 
-static unsigned char g_changeSpkVolume;
-
-static void GetCallCurrVolumeEvent(void)
-{
-    int volume;
-    int minVolume;
-    int maxVolume;
-    unsigned char tmp;
-
-    volume = PhoneAudioGetVolume();
-    minVolume = PhoneAudioGetMinVolume();
-    maxVolume = PhoneAudioGetMaxVolume();
-    tmp = (unsigned char)((volume * CALL_VOLUME_MAX) / (maxVolume - minVolume)); // 转换
-
-    if (volume != 0 && tmp == 0) {
-        tmp = 1;
-    }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[GetCallCurrVolumeEvent] volume = %d, minVolume = %d, maxVolume = %d, tmp = %d",
-        volume, minVolume, maxVolume, tmp);
-    g_changeSpkVolume = tmp;
-}
-
 // 获取当前通话音量大小 (0 - 15)
+// hfp音量范围 0-15, media 音量范围 0-100
 unsigned char GetCallCurrVolume(void)
 {
-    GetCallCurrVolumeEvent();
-    return g_changeSpkVolume;
+    int32_t volume = PhoneAudioGetVolume();
+    int32_t minVolume = PhoneAudioGetMinVolume();
+    int32_t maxVolume = PhoneAudioGetMaxVolume();
+    unsigned char hfpVolume = (unsigned char)((volume * CALL_VOLUME_MAX) / (maxVolume - minVolume)); // 转换
+
+    if (volume != 0 && hfpVolume == 0) {
+        hfpVolume = 1;
+    }
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[GetCallCurrVolume] volume:%d, minVolume:%d, maxVolume:%d, hfpVolume:%d",
+        volume, minVolume, maxVolume, hfpVolume);
+    return hfpVolume;
 }
 
-static void SetSpeakerVolumeEvent(void)
+void SetSpeakerVolume(unsigned char hfpVolume)
 {
-    int ret, minVolume, maxVolume, tmp;
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[SetSpeakerVolume] start, hfpVolume:%d", hfpVolume);
+    int32_t minVolume = PhoneAudioGetMinVolume();
+    int32_t maxVolume = PhoneAudioGetMaxVolume();
+    int32_t volume = hfpVolume * (maxVolume - minVolume) / CALL_VOLUME_MAX; // 转换
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[SetSpeakerVolume] minVolume:%d, maxVolume:%d, volume:%d",
+        minVolume, maxVolume, volume);
 
-    minVolume = PhoneAudioGetMinVolume();
-    maxVolume = PhoneAudioGetMaxVolume();
-    tmp = g_changeSpkVolume * (maxVolume - minVolume) / CALL_VOLUME_MAX; // 转换
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[SetSpeakerVolumeEvent] minVolume = %d, maxVolume = %d, tmp = %d",
-        minVolume, maxVolume, tmp);
-
-    ret = PhoneAudioSetVolume(tmp);
-    if (ret != true) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[SetSpeakerVolumeEvent] PhoneAudioSetVolume ret = %d", ret);
+    int32_t ret = PhoneAudioSetVolume(volume);
+    if (!ret) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[SetSpeakerVolume] PhoneAudioSetVolume ret:%d", ret);
         return;
     }
 
-    ret = hfp_hf_set_volume(&g_bdAddr, HFP_VOLUME_SPEAKER, g_changeSpkVolume);
+    ret = hfp_hf_set_volume(&g_bdAddr, HFP_VOLUME_SPEAKER, hfpVolume);
     if (ret != ERRCODE_BT_SUCCESS) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[SetSpeakerVolumeEvent] hfp_hf_set_volume fail ret = %d, g_changeSpkVolume = %d",
-            ret, g_changeSpkVolume);
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[SetSpeakerVolume] set_volume ret:%d, hfpVolume:%d",
+            ret, hfpVolume);
         return;
     }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[SetSpeakerVolumeEvent] success!");
-}
-
-// 设置手表通话Speaker音量:0 - 15
-void SetSpeakerVolume(unsigned char volume)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[SetSpeakerVolume] start, volume = %d", volume);
-    if (volume > CALL_VOLUME_MAX) {
-        g_changeSpkVolume = CALL_VOLUME_MAX;
-    } else {
-        g_changeSpkVolume = volume;
-    }
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[SetSpeakerVolume] success!");
 
-    SetSpeakerVolumeEvent();
     return;
 }
 
@@ -1912,7 +1822,7 @@ int TransCallToWatch(void)
     } else {
         ret = hfp_hf_connect_sco(&g_bdAddr);
         if (ret != 0) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[TransCallToWatch] ret = %d", ret);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[TransCallToWatch] ret:%d", ret);
         }
         return ret;
     }
@@ -1935,7 +1845,7 @@ int TransCallToMobilePhone(void)
     } else {
         ret = hfp_hf_disconnect_sco(&g_bdAddr);
         if (ret != 0) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[TransCallToMobilePhone] ret = %d", ret);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[TransCallToMobilePhone] ret:%d", ret);
         }
         return ret;
     }