优化了手表与蓝牙耳机连接后本地音乐播放器声音进度条0-40范围内耳机基本没有声音问题。 1530/target/1
author罗正 <1732036298@qq.com>
Tue, 17 Dec 2024 11:29:37 +0000 (11:29 +0000)
committer袁清梦 <3449750381@qq.com>
Tue, 17 Dec 2024 11:29:37 +0000 (11:29 +0000)
  - 优化了手表与蓝牙耳机连接后本地音乐播放器声音进度条0-40范围内耳机基本没有声音问题。

code/sdk/application/wearable/fd230app/nativeui/main/src/VolumeSettingPresenter.cpp

index 16776df..852586a 100644 (file)
@@ -20,6 +20,7 @@
 #include "bts_avrcp_controller.h"
 #include "ConfigModel.h"
 #include "vibrator_service.h"
+#include <custom_utils.h>
 
 namespace OHOS {
 
@@ -131,20 +132,29 @@ void VolumeSliderEventListener::ChangeVolume(VolumeChangeStatus status)
 //蓝牙耳机音量映射 (40 - 127)
 static int mapVolume(int volume) 
 {
-    if (volume < 0)
-        return 40;
-    else if (volume > 100)
-        return 127;
+    // 音量映射
+    if(volume <= 0)
+        return AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_0;
+    else if (volume >= 100)
+        return AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_100;
+    else if (volume > 0 && volume <= 10)
+        return (10 * AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_100) / 100;
+    else if (volume > 10 && volume <= 20)
+        return (20 * AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_100) / 100;
+    else if (volume > 20 && volume <= 30)
+        return (30 * AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_100) / 100;
+    else if (volume > 30 && volume <= 40)
+        return (40 * AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_100) / 100;
     else 
-        return 40 + (int)((double)(volume / 100.0) * (127 - 40)); 
+        return volume * AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_100 / 100;
 }
 
 extern BtAvrcpTgInf g_avrcp_srv_inf;
 void VolumeSliderEventListener::BtAndLocalVolumeSet(int16_t sounding)
 {
     if (g_avrcp_srv_inf.avrcp_srv_conn_stat == PROFILE_STATE_CONNECTED) {
-        uint8_t volume = sounding * AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_100 / 100; // 100:本地音量最大值
-        // uint8_t volume = mapVolume(sounding);
+        // uint8_t volume = sounding * AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_100 / 100; // 100:本地音量最大值
+        uint8_t volume = mapVolume(sounding);
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "手表音量设置同步远端BT音量 %d", volume);
         (void)avrcp_ct_set_absolute_volume(&(g_avrcp_srv_inf.bd_addr), volume); // 手表音量设置同步远端BT音量
     }
@@ -156,7 +166,8 @@ void VolumeSliderEventListener::BtAndLocalVolumeSet(int16_t sounding)
     }
     /* -------------------------------------------------------------------------- */
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "audio volume = %d", sounding);
-    AudioManager::GetInstance().SetVolume(AUDIO_STREAM_MUSIC, sounding); // 本地音量设置
+    // AudioManager::GetInstance().SetVolume(AUDIO_STREAM_MUSIC, sounding); // 本地音量设置
+    uapi_systemVolumeSet(sounding);//本地音量设置
 }
 
 void VolumeSliderEventListener::OnRelease(int32_t value)