#include "bts_avrcp_controller.h"
#include "ConfigModel.h"
#include "vibrator_service.h"
+#include <custom_utils.h>
namespace OHOS {
//蓝牙耳机音量映射 (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音量
}
}
/* -------------------------------------------------------------------------- */
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)