From: 罗正 <1732036298@qq.com> Date: Tue, 17 Dec 2024 11:29:37 +0000 (+0000) Subject: 优化了手表与蓝牙耳机连接后本地音乐播放器声音进度条0-40范围内耳机基本没有声音问题。 X-Git-Tag: v1.3.113-repair_tp~141^2 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=ccdf71b2449fed3dff02eb9f9c15f4617a3a20ae;p=mirrors%2FFD230.git 优化了手表与蓝牙耳机连接后本地音乐播放器声音进度条0-40范围内耳机基本没有声音问题。 - 优化了手表与蓝牙耳机连接后本地音乐播放器声音进度条0-40范围内耳机基本没有声音问题。 --- diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/VolumeSettingPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/VolumeSettingPresenter.cpp index 16776df27..852586a0a 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/src/VolumeSettingPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/main/src/VolumeSettingPresenter.cpp @@ -20,6 +20,7 @@ #include "bts_avrcp_controller.h" #include "ConfigModel.h" #include "vibrator_service.h" +#include 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)