diff --git a/services/audio_policy/BUILD.gn b/services/audio_policy/BUILD.gn index 7a3d8bf3d946b3c2488d72f1e173bba92aff6eb5..0e5d2cea757cec166fdb124bd476b662628eb11a 100644 --- a/services/audio_policy/BUILD.gn +++ b/services/audio_policy/BUILD.gn @@ -148,6 +148,8 @@ ohos_shared_library("audio_policy_service") { "//foundation/barrierfree/accessibility/interfaces/innerkits/acfwk:accessibilityconfig", "//foundation/distributeddatamgr/kv_store/interfaces/innerkits/distributeddata:distributeddata_inner", "//foundation/multimedia/audio_framework/frameworks/native/audioadapter:pulse_audio_service_adapter", + "//foundation/multimedia/audio_framework/services/audio_policy:audio_config.para", + "//foundation/multimedia/audio_framework/services/audio_policy:audio_config.para.dac", "//foundation/multimedia/audio_framework/services/audio_policy:audio_dump", "//foundation/multimedia/audio_framework/services/audio_service:audio_client", "//third_party/libxml2:xml2", @@ -195,6 +197,18 @@ ohos_prebuilt_etc("audio_tone_dtmf_config") { part_name = "multimedia_audio_framework" } +ohos_prebuilt_etc("audio_config.para") { + source = "//foundation/multimedia/audio_framework/services/audio_policy/etc/audio_config.para" + part_name = "multimedia_audio_framework" + module_install_dir = "etc/param" +} + +ohos_prebuilt_etc("audio_config.para.dac") { + source = "//foundation/multimedia/audio_framework/services/audio_policy/etc/audio_config.para.dac" + part_name = "multimedia_audio_framework" + module_install_dir = "etc/param" +} + config("audio_policy_client_config") { include_dirs = [ "//foundation/multimedia/audio_framework/services/audio_service/client/include", diff --git a/services/audio_policy/etc/audio_config.para b/services/audio_policy/etc/audio_config.para new file mode 100644 index 0000000000000000000000000000000000000000..ace103513421fda36661f2b12cc2eef8f3f96a0b --- /dev/null +++ b/services/audio_policy/etc/audio_config.para @@ -0,0 +1,13 @@ +# Copyright (c) 2022 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +persist.multimedia.audio.mediavolume = 15 \ No newline at end of file diff --git a/services/audio_policy/etc/audio_config.para.dac b/services/audio_policy/etc/audio_config.para.dac new file mode 100644 index 0000000000000000000000000000000000000000..5d89ec001aa0b4e51b5b222c7692642ae903e8fa --- /dev/null +++ b/services/audio_policy/etc/audio_config.para.dac @@ -0,0 +1,14 @@ +# Copyright (c) 2022 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +persist.multimedia.audio.mediavolume = audio:audio:660 \ No newline at end of file diff --git a/services/audio_policy/server/src/service/manager/audio_adapter_manager.cpp b/services/audio_policy/server/src/service/manager/audio_adapter_manager.cpp index be83d3a4d4dd8be4e229fa14d09e608c61e94b73..60dc8f1abae00ca20542bc97e6c4c61a4e075a30 100644 --- a/services/audio_policy/server/src/service/manager/audio_adapter_manager.cpp +++ b/services/audio_policy/server/src/service/manager/audio_adapter_manager.cpp @@ -35,6 +35,17 @@ bool AudioAdapterManager::Init() testModeOn_ = true; } + char currentVolumeValue[3] = {0}; + auto ret = GetParameter("persist.multimedia.audio.mediavolume", "15", + currentVolumeValue, sizeof(currentVolumeValue)); + if (ret > 0) { + int32_t valueNumber = atoi(currentVolumeValue); + mVolumeMap[STREAM_MUSIC] = AudioGroupManager::MapVolumeToHDI(valueNumber); + AUDIO_INFO_LOG("[AudioAdapterManager] Get music volume to map success %{public}f", mVolumeMap[STREAM_MUSIC]); + } else { + AUDIO_ERR_LOG("[AudioAdapterManager] Get volume parameter failed %{public}d", ret); + } + return true; } @@ -108,6 +119,19 @@ int32_t AudioAdapterManager::SetStreamVolume(AudioStreamType streamType, float v mVolumeMap[streamForVolumeMap] = volume; WriteVolumeToKvStore(currentActiveDevice_, streamType, volume); + // Set the power on default volume to the database + if (streamType == STREAM_MUSIC) { + int32_t maxMediaVolume = 15; // The max volume is 15; + int32_t volumeInt = (int) round(volume * maxMediaVolume); + AUDIO_INFO_LOG("[AudioAdapterManager] Start set volume value to %{public}d", volumeInt); + int ret = SetParameter("persist.multimedia.audio.mediavolume", std::to_string(volumeInt).c_str()); + if (ret == 0) { + AUDIO_INFO_LOG("[AudioAdapterManager] Save media volume success %{public}d", volumeInt); + } else { + AUDIO_ERR_LOG("[AudioAdapterManager] Save media volume failed, result %{public}d", ret); + } + } + return mAudioServiceAdapter->SetVolume(streamType, volume); }