默认音量在那里配置?
·
来电铃声有系统变量控制,而媒体和电话音量等由配置文件audio_volume_config.xml控制。 具体实现在audio_adapter_manager.cpp的init函数audiovolumeParser->LoadConfig(streamVolumeInfos_)加载配置。
#foundation/multimedia/audio_framework/services/audio_policy/server/src/service/manager/audio_adapter_manager.cpp
// LCOV_EXCL_START
bool AudioAdapterManager::Init()
{
char testMode[10] = {0}; // 10 for system parameter usage
auto res = GetParameter("debug.audio_service.testmodeon", "0", testMode, sizeof(testMode));
if (res == 1 && testMode[0] == '1') {
AUDIO_DEBUG_LOG("testMode on");
testModeOn_ = true;
}
std::unique_ptr<AudioVolumeParser> audiovolumeParser = make_unique<AudioVolumeParser>();
if (!audiovolumeParser->LoadConfig(streamVolumeInfos_)) {//在这里加载配置
AUDIO_INFO_LOG("Audio Volume Config Load Configuration successfully");
useNonlinearAlgo_ = 1;
UpdateVolumeMapIndex();
}
// init volume before kvstore start by local prop for bootanimation
char currentVolumeValue[3] = {0};
auto ret = GetParameter("persist.multimedia.audio.ringtonevolume", "7",
currentVolumeValue, sizeof(currentVolumeValue));
if (ret > 0) {
int32_t ringtoneVolumeLevel = atoi(currentVolumeValue);
volumeDataMaintainer_.SetStreamVolume(STREAM_RING, ringtoneVolumeLevel);
AUDIO_INFO_LOG("Init: Get ringtone volume to map success %{public}d",
volumeDataMaintainer_.GetStreamVolume(STREAM_RING));
} else {
AUDIO_ERR_LOG("Init: Get volume parameter failed %{public}d", ret);
}
进一步跟踪audiovolumeParser->LoadConfig函数,发现配置来自文件AUDIO_VOLUME_CONFIG_FILE
#server/src/service/config/audio_volume_parser.cpp
int32_t AudioVolumeParser::LoadConfig(StreamVolumeInfoMap &streamVolumeInfoMap)
{
AUDIO_INFO_LOG("Load Volume Config xml");
int ret = ERROR;
#ifdef USE_CONFIG_POLICY
CfgFiles *cfgFiles = GetCfgFiles(AUDIO_VOLUME_CONFIG_FILE);
if (cfgFiles == nullptr) {
AUDIO_ERR_LOG("Not found audio_volume_config.xml!");
std::shared_ptr<Media::MediaMonitor::EventBean> bean = std::make_shared<Media::MediaMonitor::EventBean>(
Media::MediaMonitor::AUDIO, Media::MediaMonitor::LOAD_CONFIG_ERROR,
Media::MediaMonitor::FAULT_EVENT);
bean->Add("CATEGORY", Media::MediaMonitor::AUDIO_VOLUME_CONFIG);
Media::MediaMonitor::MediaMonitorManager::GetInstance().WriteLogMsg(bean);
return ERROR;
}
for (int32_t i = MAX_CFG_POLICY_DIRS_CNT - 1; i >= 0; i--) {
if (cfgFiles->paths[i] && *(cfgFiles->paths[i]) != '\0') {
AUDIO_INFO_LOG("volume config file path:%{public}s", cfgFiles->paths[i]);
ret = ParseVolumeConfig(cfgFiles->paths[i], streamVolumeInfoMap);
break;
}
}
FreeCfgFiles(cfgFiles);
#else
ret = ParseVolumeConfig(AUDIO_VOLUME_CONFIG_FILE, streamVolumeInfoMap);
AUDIO_INFO_LOG("use default volume config file path:%{public}s", AUDIO_VOLUME_CONFIG_FILE);
#endif
return ret;
}
在audio_volume_parser.h中可以查到AUDIO_VOLUME_CONFIG_FILE定义。这就是默认的参数来源
./foundation/multimedia/audio_framework/services/audio_policy/server/config/audio_volume_config.xml
#ifdef USE_CONFIG_POLICY
static constexpr char AUDIO_VOLUME_CONFIG_FILE[] = "etc/audio/audio_volume_config.xml";
#else
static constexpr char AUDIO_VOLUME_CONFIG_FILE[] = "system/etc/audio/audio_volume_config.xml";
#endif
#./foundation/multimedia/audio_framework/services/audio_policy/etc/audio_config.para
persist.multimedia.audio.ringtonevolume = 7
#./foundation/multimedia/audio_framework/services/audio_policy/server/config/audio_volume_config.xml
<audio_volume_config>
<volume_type type="VOICE_CALL" minidx="1" maxidx="15" defaultidx="12">
<volumecurve deviceClass="earpiece">
<point idx="0" decibel="-4200"/>
<point idx="33" decibel="-2800"/>
<point idx="66" decibel="-900"/>
<point idx="100" decibel="-0"/>
</volumecurve>
<volumecurve deviceClass="speaker">
<point idx="0" decibel="-2700"/>
<point idx="33" decibel="-1800"/>
<point idx="66" decibel="-900"/>
<point idx="100" decibel="-0"/>
</volumecurve>
<volumecurve deviceClass="headset">
<point idx="0" decibel="-2700"/>
<point idx="33" decibel="-1800"/>
<point idx="66" decibel="-900"/>
<point idx="100" decibel="-0"/>
</volumecurve>
</volume_type>
<volume_type type="MUSIC" minidx="0" maxidx="15" defaultidx="12">
......
</volume_type>
<volume_type type="RING" minidx="0" maxidx="15" defaultidx="12">
......
更多推荐
所有评论(0)