From cd56d1894f28d87bf20914b7bc186158af86fa76 Mon Sep 17 00:00:00 2001 From: "hezhiqiang19@huawei.com" Date: Sun, 14 Jul 2024 11:37:48 +0000 Subject: [PATCH 1/2] use different ipc call for legacy API Signed-off-by: hezhiqiang19@huawei.com Change-Id: Icdb6a8f2c5ef1f44633fbaa6d06b9ec2e7d6bdab --- .../napi/audiomanager/napi_audio_manager.cpp | 2 +- .../include/audio_policy_manager.h | 12 ++- .../include/audio_group_manager.h | 3 +- .../include/audio_system_manager.h | 2 +- .../client/include/audio_policy_base.h | 17 +++- .../include/audio_policy_manager_stub.h | 8 ++ .../client/include/audio_policy_proxy.h | 17 +++- .../client/src/audio_policy_manager.cpp | 40 ++++++-- .../client/src/audio_policy_proxy.cpp | 79 +++++++++++++-- .../common/include/audio_policy_client.h | 3 +- .../include/audio_policy_ipc_interface_code.h | 4 + .../server/include/audio_policy_server.h | 21 ++-- .../server/src/audio_policy_manager_stub.cpp | 45 +++++++-- .../server/src/audio_policy_server.cpp | 99 +++++++++++++++---- .../src/service/audio_policy_service.cpp | 5 +- .../client/src/audio_group_manager.cpp | 18 +++- .../client/src/audio_system_manager.cpp | 8 +- 17 files changed, 303 insertions(+), 80 deletions(-) diff --git a/frameworks/js/napi/audiomanager/napi_audio_manager.cpp b/frameworks/js/napi/audiomanager/napi_audio_manager.cpp index 263a218c3f..fbcaa9c9a6 100644 --- a/frameworks/js/napi/audiomanager/napi_audio_manager.cpp +++ b/frameworks/js/napi/audiomanager/napi_audio_manager.cpp @@ -1059,7 +1059,7 @@ napi_value NapiAudioManager::IsMicrophoneMute(napi_env env, napi_callback_info i auto *napiAudioManager = objectGuard.GetPtr(); CHECK_AND_RETURN_LOG(CheckAudioManagerStatus(napiAudioManager, context), "audio manager state is error."); - context->isMute = napiAudioManager->audioMngr_->IsMicrophoneMute(); + context->isMute = napiAudioManager->audioMngr_->IsMicrophoneMuteLegacy(); }; auto complete = [env, context](napi_value &output) { diff --git a/frameworks/native/audiopolicy/include/audio_policy_manager.h b/frameworks/native/audiopolicy/include/audio_policy_manager.h index 30992aeb53..75da0449cc 100644 --- a/frameworks/native/audiopolicy/include/audio_policy_manager.h +++ b/frameworks/native/audiopolicy/include/audio_policy_manager.h @@ -49,7 +49,7 @@ public: int32_t GetMinVolumeLevel(AudioVolumeType volumeType); - int32_t SetSystemVolumeLevel(AudioVolumeType volumeType, int32_t volumeLevel, API_VERSION api_v = API_9, + int32_t SetSystemVolumeLevel(AudioVolumeType volumeType, int32_t volumeLevel, bool isLegacy = false, int32_t volumeFlag = 0); int32_t GetSystemVolumeLevel(AudioVolumeType volumeType); @@ -60,7 +60,7 @@ public: float GetSingleStreamVolume(int32_t streamId); - int32_t SetStreamMute(AudioVolumeType volumeType, bool mute, API_VERSION api_v = API_9); + int32_t SetStreamMute(AudioVolumeType volumeType, bool mute, bool isLegacy = false); bool GetStreamMute(AudioVolumeType volumeType); @@ -86,7 +86,9 @@ public: DeviceType GetActiveInputDevice(); - int32_t SetRingerMode(AudioRingerMode ringMode, API_VERSION api_v = API_9); + int32_t SetRingerModeLegacy(AudioRingerMode ringMode); + + int32_t SetRingerMode(AudioRingerMode ringMode); #ifdef FEATURE_DTMF_TONE std::vector GetSupportedTones(); @@ -105,8 +107,10 @@ public: int32_t SetMicrophoneMutePersistent(const bool isMute, const PolicyType type); bool GetPersistentMicMuteState(); + + bool IsMicrophoneMuteLegacy(); - bool IsMicrophoneMute(API_VERSION api_v = API_9); + bool IsMicrophoneMute(); AudioScene GetAudioScene(); diff --git a/interfaces/inner_api/native/audiomanager/include/audio_group_manager.h b/interfaces/inner_api/native/audiomanager/include/audio_group_manager.h index a518de1e13..0457a17898 100644 --- a/interfaces/inner_api/native/audiomanager/include/audio_group_manager.h +++ b/interfaces/inner_api/native/audiomanager/include/audio_group_manager.h @@ -74,7 +74,8 @@ public: int32_t SetMicrophoneMute(bool isMute); int32_t SetMicrophoneMutePersistent(const bool isMute, const PolicyType type); bool GetPersistentMicMuteState(); - bool IsMicrophoneMute(API_VERSION api_v = API_9); + bool IsMicrophoneMuteLegacy(); + bool IsMicrophoneMute(); int32_t SetMicStateChangeCallback(const std::shared_ptr &callback); int32_t UnsetMicStateChangeCallback(const std::shared_ptr &callback); bool IsVolumeUnadjustable(); diff --git a/interfaces/inner_api/native/audiomanager/include/audio_system_manager.h b/interfaces/inner_api/native/audiomanager/include/audio_system_manager.h index 55139b9bb0..8ef0fc931f 100644 --- a/interfaces/inner_api/native/audiomanager/include/audio_system_manager.h +++ b/interfaces/inner_api/native/audiomanager/include/audio_system_manager.h @@ -534,7 +534,7 @@ public: * @return Returns true if the rendering is successfully started; returns false otherwise. * @since 9 */ - bool IsMicrophoneMute(API_VERSION api_v = API_7); + bool IsMicrophoneMuteLegacy(); /** * @brief Select output device. diff --git a/services/audio_policy/client/include/audio_policy_base.h b/services/audio_policy/client/include/audio_policy_base.h index 1fdb8d048f..07e0f4c121 100644 --- a/services/audio_policy/client/include/audio_policy_base.h +++ b/services/audio_policy/client/include/audio_policy_base.h @@ -38,8 +38,9 @@ public: virtual int32_t GetMinVolumeLevel(AudioVolumeType volumeType) = 0; - virtual int32_t SetSystemVolumeLevel(AudioVolumeType volumeType, int32_t volumeLevel, - API_VERSION api_v = API_9, int32_t volumeFlag = 0) = 0; + virtual int32_t SetSystemVolumeLevelLegacy(AudioVolumeType volumeType, int32_t volumeLevel) = 0; + + virtual int32_t SetSystemVolumeLevel(AudioVolumeType volumeType, int32_t volumeLevel, int32_t volumeFlag = 0) = 0; virtual int32_t GetSystemVolumeLevel(AudioVolumeType volumeType) = 0; @@ -49,7 +50,9 @@ public: virtual float GetSingleStreamVolume(int32_t streamId) = 0; - virtual int32_t SetStreamMute(AudioVolumeType volumeType, bool mute, API_VERSION api_v = API_9) = 0; + virtual int32_t SetStreamMuteLegacy(AudioVolumeType volumeType, bool mute) = 0; + + virtual int32_t SetStreamMute(AudioVolumeType volumeType, bool mute) = 0; virtual bool GetStreamMute(AudioVolumeType volumeType) = 0; @@ -76,7 +79,9 @@ public: virtual std::vector GetSupportedTones() = 0; #endif - virtual int32_t SetRingerMode(AudioRingerMode ringMode, API_VERSION api_v = API_9) = 0; + virtual int32_t SetRingerModeLegacy(AudioRingerMode ringMode) = 0; + + virtual int32_t SetRingerMode(AudioRingerMode ringMode) = 0; virtual AudioRingerMode GetRingerMode() = 0; @@ -90,7 +95,9 @@ public: virtual bool GetPersistentMicMuteState() = 0; - virtual bool IsMicrophoneMute(API_VERSION api_v = API_9) = 0; + virtual bool IsMicrophoneMuteLegacy() = 0; + + virtual bool IsMicrophoneMute() = 0; virtual AudioScene GetAudioScene() = 0; diff --git a/services/audio_policy/client/include/audio_policy_manager_stub.h b/services/audio_policy/client/include/audio_policy_manager_stub.h index 0fde1ba0ea..52619c66c9 100644 --- a/services/audio_policy/client/include/audio_policy_manager_stub.h +++ b/services/audio_policy/client/include/audio_policy_manager_stub.h @@ -28,8 +28,10 @@ public: private: void GetMaxVolumeLevelInternal(MessageParcel &data, MessageParcel &reply); void GetMinVolumeLevelInternal(MessageParcel &data, MessageParcel &reply); + void SetSystemVolumeLevelLegacyInternal(MessageParcel &data, MessageParcel &reply); void SetSystemVolumeLevelInternal(MessageParcel &data, MessageParcel &reply); void GetSystemVolumeLevelInternal(MessageParcel &data, MessageParcel &reply); + void SetStreamMuteLegacyInternal(MessageParcel &data, MessageParcel &reply); void SetStreamMuteInternal(MessageParcel &data, MessageParcel &reply); void GetStreamMuteInternal(MessageParcel &data, MessageParcel &reply); void IsStreamActiveInternal(MessageParcel &data, MessageParcel &reply); @@ -37,12 +39,14 @@ private: void IsDeviceActiveInternal(MessageParcel &data, MessageParcel &reply); void GetActiveOutputDeviceInternal(MessageParcel &data, MessageParcel &reply); void GetActiveInputDeviceInternal(MessageParcel &data, MessageParcel &reply); + void SetRingerModeLegacyInternal(MessageParcel &data, MessageParcel &reply); void SetRingerModeInternal(MessageParcel &data, MessageParcel &reply); void GetRingerModeInternal(MessageParcel &data, MessageParcel &reply); void SetAudioSceneInternal(MessageParcel &data, MessageParcel &reply); void GetAudioSceneInternal(MessageParcel &data, MessageParcel &reply); void SetMicrophoneMuteInternal(MessageParcel &data, MessageParcel &reply); void SetMicrophoneMuteAudioConfigInternal(MessageParcel &data, MessageParcel &reply); + void IsMicrophoneMuteLegacyInternal(MessageParcel &data, MessageParcel &reply); void IsMicrophoneMuteInternal(MessageParcel &data, MessageParcel &reply); void SetInterruptCallbackInternal(MessageParcel &data, MessageParcel &reply); void UnsetInterruptCallbackInternal(MessageParcel &data, MessageParcel &reply); @@ -157,8 +161,10 @@ private: static inline HandlerFunc handlers[] = { &AudioPolicyManagerStub::GetMaxVolumeLevelInternal, &AudioPolicyManagerStub::GetMinVolumeLevelInternal, + &AudioPolicyManagerStub::SetSystemVolumeLevelLegacyInternal, &AudioPolicyManagerStub::SetSystemVolumeLevelInternal, &AudioPolicyManagerStub::GetSystemVolumeLevelInternal, + &AudioPolicyManagerStub::SetStreamMuteLegacyInternal, &AudioPolicyManagerStub::SetStreamMuteInternal, &AudioPolicyManagerStub::GetStreamMuteInternal, &AudioPolicyManagerStub::IsStreamActiveInternal, @@ -166,12 +172,14 @@ private: &AudioPolicyManagerStub::IsDeviceActiveInternal, &AudioPolicyManagerStub::GetActiveOutputDeviceInternal, &AudioPolicyManagerStub::GetActiveInputDeviceInternal, + &AudioPolicyManagerStub::SetRingerModeLegacyInternal, &AudioPolicyManagerStub::SetRingerModeInternal, &AudioPolicyManagerStub::GetRingerModeInternal, &AudioPolicyManagerStub::SetAudioSceneInternal, &AudioPolicyManagerStub::GetAudioSceneInternal, &AudioPolicyManagerStub::SetMicrophoneMuteInternal, &AudioPolicyManagerStub::SetMicrophoneMuteAudioConfigInternal, + &AudioPolicyManagerStub::IsMicrophoneMuteLegacyInternal, &AudioPolicyManagerStub::IsMicrophoneMuteInternal, &AudioPolicyManagerStub::SetInterruptCallbackInternal, &AudioPolicyManagerStub::UnsetInterruptCallbackInternal, diff --git a/services/audio_policy/client/include/audio_policy_proxy.h b/services/audio_policy/client/include/audio_policy_proxy.h index c95ee9ecf7..17a4f74030 100644 --- a/services/audio_policy/client/include/audio_policy_proxy.h +++ b/services/audio_policy/client/include/audio_policy_proxy.h @@ -34,8 +34,9 @@ public: int32_t GetMinVolumeLevel(AudioVolumeType volumeType) override; - int32_t SetSystemVolumeLevel(AudioVolumeType volumeType, int32_t volumeLevel, API_VERSION api_v, - int32_t volumeFlag = 0) override; + int32_t SetSystemVolumeLevelLegacy(AudioVolumeType volumeType, int32_t volumeLevel) override; + + int32_t SetSystemVolumeLevel(AudioVolumeType volumeType, int32_t volumeLevel, int32_t volumeFlag = 0) override; int32_t GetSystemVolumeLevel(AudioVolumeType volumeType) override; @@ -45,7 +46,9 @@ public: float GetSingleStreamVolume(int32_t streamId) override; - int32_t SetStreamMute(AudioVolumeType volumeType, bool mute, API_VERSION api_v) override; + int32_t SetStreamMuteLegacy(AudioVolumeType volumeType, bool mute) override; + + int32_t SetStreamMute(AudioVolumeType volumeType, bool mute) override; bool GetStreamMute(AudioVolumeType volumeType) override; @@ -74,7 +77,9 @@ public: int32_t SelectInputDevice(sptr audioCapturerFilter, std::vector> audioDeviceDescriptors) override; - int32_t SetRingerMode(AudioRingerMode ringMode, API_VERSION api_v) override; + int32_t SetRingerModeLegacy(AudioRingerMode ringMode) override; + + int32_t SetRingerMode(AudioRingerMode ringMode) override; int32_t ConfigDistributedRoutingRole(const sptr descriptor, CastType type) override; @@ -100,7 +105,9 @@ public: bool GetPersistentMicMuteState() override; - bool IsMicrophoneMute(API_VERSION api_v) override; + bool IsMicrophoneMuteLegacy() override; + + bool IsMicrophoneMute() override; AudioScene GetAudioScene() override; diff --git a/services/audio_policy/client/src/audio_policy_manager.cpp b/services/audio_policy/client/src/audio_policy_manager.cpp index 76f73a1f91..127e2fe200 100644 --- a/services/audio_policy/client/src/audio_policy_manager.cpp +++ b/services/audio_policy/client/src/audio_policy_manager.cpp @@ -178,20 +178,30 @@ int32_t AudioPolicyManager::GetMinVolumeLevel(AudioVolumeType volumeType) return gsp->GetMinVolumeLevel(volumeType); } -int32_t AudioPolicyManager::SetSystemVolumeLevel(AudioVolumeType volumeType, int32_t volumeLevel, API_VERSION api_v, +int32_t AudioPolicyManager::SetSystemVolumeLevel(AudioVolumeType volumeType, int32_t volumeLevel, bool isLegacy, int32_t volumeFlag) { const sptr gsp = GetAudioPolicyManagerProxy(); CHECK_AND_RETURN_RET_LOG(gsp != nullptr, -1, "audio policy manager proxy is NULL."); - return gsp->SetSystemVolumeLevel(volumeType, volumeLevel, api_v, volumeFlag); + if (isLegacy) { + return gsp->SetSystemVolumeLevelLegacy(volumeType, volumeLevel); + } + return gsp->SetSystemVolumeLevel(volumeType, volumeLevel, volumeFlag); +} + +int32_t AudioPolicyManager::SetRingerModeLegacy(AudioRingerMode ringMode) +{ + const sptr gsp = GetAudioPolicyManagerProxy(); + CHECK_AND_RETURN_RET_LOG(gsp != nullptr, -1, "audio policy manager proxy is NULL."); + return gsp->SetRingerModeLegacy(ringMode); } -int32_t AudioPolicyManager::SetRingerMode(AudioRingerMode ringMode, API_VERSION api_v) +int32_t AudioPolicyManager::SetRingerMode(AudioRingerMode ringMode) { const sptr gsp = GetAudioPolicyManagerProxy(); CHECK_AND_RETURN_RET_LOG(gsp != nullptr, -1, "audio policy manager proxy is NULL."); - return gsp->SetRingerMode(ringMode, api_v); + return gsp->SetRingerMode(ringMode); } AudioRingerMode AudioPolicyManager::GetRingerMode() @@ -243,7 +253,18 @@ bool AudioPolicyManager::GetPersistentMicMuteState() return gsp->GetPersistentMicMuteState(); } -bool AudioPolicyManager::IsMicrophoneMute(API_VERSION api_v) +bool AudioPolicyManager::IsMicrophoneMuteLegacy() +{ + const sptr gsp = GetAudioPolicyManagerProxy(); + CHECK_AND_RETURN_RET_LOG(gsp != nullptr, -1, "audio policy manager proxy is NULL."); + if (!isAudioPolicyClientRegisted_) { + RegisterPolicyCallbackClientFunc(gsp); + } + + return gsp->IsMicrophoneMuteLegacy(); +} + +bool AudioPolicyManager::IsMicrophoneMute() { const sptr gsp = GetAudioPolicyManagerProxy(); CHECK_AND_RETURN_RET_LOG(gsp != nullptr, -1, "audio policy manager proxy is NULL."); @@ -251,7 +272,7 @@ bool AudioPolicyManager::IsMicrophoneMute(API_VERSION api_v) RegisterPolicyCallbackClientFunc(gsp); } - return gsp->IsMicrophoneMute(api_v); + return gsp->IsMicrophoneMute(); } AudioScene AudioPolicyManager::GetAudioScene() @@ -268,11 +289,14 @@ int32_t AudioPolicyManager::GetSystemVolumeLevel(AudioVolumeType volumeType) return gsp->GetSystemVolumeLevel(volumeType); } -int32_t AudioPolicyManager::SetStreamMute(AudioVolumeType volumeType, bool mute, API_VERSION api_v) +int32_t AudioPolicyManager::SetStreamMute(AudioVolumeType volumeType, bool mute, bool isLegacy) { const sptr gsp = GetAudioPolicyManagerProxy(); CHECK_AND_RETURN_RET_LOG(gsp != nullptr, -1, "audio policy manager proxy is NULL."); - return gsp->SetStreamMute(volumeType, mute, api_v); + if (isLegacy) { + return gsp->SetStreamMuteLegacy(volumeType, mute); + } + return gsp->SetStreamMute(volumeType, mute); } bool AudioPolicyManager::GetStreamMute(AudioVolumeType volumeType) diff --git a/services/audio_policy/client/src/audio_policy_proxy.cpp b/services/audio_policy/client/src/audio_policy_proxy.cpp index f33ac067ee..88ca73be3e 100644 --- a/services/audio_policy/client/src/audio_policy_proxy.cpp +++ b/services/audio_policy/client/src/audio_policy_proxy.cpp @@ -74,8 +74,23 @@ int32_t AudioPolicyProxy::GetMinVolumeLevel(AudioVolumeType volumeType) return reply.ReadInt32(); } -int32_t AudioPolicyProxy::SetSystemVolumeLevel(AudioVolumeType volumeType, int32_t volumeLevel, API_VERSION api_v, - int32_t volumeFlag) +int32_t AudioPolicyProxy::SetSystemVolumeLevelLegacy(AudioVolumeType volumeType, int32_t volumeLevel) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option; + bool ret = data.WriteInterfaceToken(GetDescriptor()); + CHECK_AND_RETURN_RET_LOG(ret, -1, "WriteInterfaceToken failed"); + + data.WriteInt32(static_cast(volumeType)); + data.WriteInt32(volumeLevel); + int32_t error = Remote()->SendRequest( + static_cast(AudioPolicyInterfaceCode::SET_SYSTEM_VOLUMELEVEL_LEGACY), data, reply, option); + CHECK_AND_RETURN_RET_LOG(error == ERR_NONE, error, "set volume failed, error: %d", error); + return reply.ReadInt32(); +} + +int32_t AudioPolicyProxy::SetSystemVolumeLevel(AudioVolumeType volumeType, int32_t volumeLevel, int32_t volumeFlag) { MessageParcel data; MessageParcel reply; @@ -85,7 +100,6 @@ int32_t AudioPolicyProxy::SetSystemVolumeLevel(AudioVolumeType volumeType, int32 data.WriteInt32(static_cast(volumeType)); data.WriteInt32(volumeLevel); - data.WriteInt32(static_cast(api_v)); data.WriteInt32(volumeFlag); int32_t error = Remote()->SendRequest( static_cast(AudioPolicyInterfaceCode::SET_SYSTEM_VOLUMELEVEL), data, reply, option); @@ -93,7 +107,23 @@ int32_t AudioPolicyProxy::SetSystemVolumeLevel(AudioVolumeType volumeType, int32 return reply.ReadInt32(); } -int32_t AudioPolicyProxy::SetRingerMode(AudioRingerMode ringMode, API_VERSION api_v) +int32_t AudioPolicyProxy::SetRingerModeLegacy(AudioRingerMode ringMode) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option; + + bool ret = data.WriteInterfaceToken(GetDescriptor()); + CHECK_AND_RETURN_RET_LOG(ret, -1, "WriteInterfaceToken failed"); + data.WriteInt32(static_cast(ringMode)); + int32_t error = Remote()->SendRequest( + static_cast(AudioPolicyInterfaceCode::SET_RINGER_MODE_LEGACY), data, reply, option); + CHECK_AND_RETURN_RET_LOG(error == ERR_NONE, error, "set SetRingerModeLegacy failed, error: %d", error); + + return reply.ReadInt32(); +} + +int32_t AudioPolicyProxy::SetRingerMode(AudioRingerMode ringMode) { MessageParcel data; MessageParcel reply; @@ -102,7 +132,6 @@ int32_t AudioPolicyProxy::SetRingerMode(AudioRingerMode ringMode, API_VERSION ap bool ret = data.WriteInterfaceToken(GetDescriptor()); CHECK_AND_RETURN_RET_LOG(ret, -1, "WriteInterfaceToken failed"); data.WriteInt32(static_cast(ringMode)); - data.WriteInt32(static_cast(api_v)); int32_t error = Remote()->SendRequest( static_cast(AudioPolicyInterfaceCode::SET_RINGER_MODE), data, reply, option); CHECK_AND_RETURN_RET_LOG(error == ERR_NONE, error, "set ringermode failed, error: %d", error); @@ -220,7 +249,7 @@ bool AudioPolicyProxy::GetPersistentMicMuteState() return reply.ReadBool(); } -bool AudioPolicyProxy::IsMicrophoneMute(API_VERSION api_v) +bool AudioPolicyProxy::IsMicrophoneMuteLegacy() { MessageParcel data; MessageParcel reply; @@ -228,7 +257,24 @@ bool AudioPolicyProxy::IsMicrophoneMute(API_VERSION api_v) bool ret = data.WriteInterfaceToken(GetDescriptor()); CHECK_AND_RETURN_RET_LOG(ret, -1, "WriteInterfaceToken failed"); - data.WriteInt32(static_cast(api_v)); + + int32_t error = Remote()->SendRequest( + static_cast(AudioPolicyInterfaceCode::IS_MICROPHONE_MUTE_LEGACY), data, reply, option); + CHECK_AND_RETURN_RET_LOG(error == ERR_NONE, error, "set microphoneMute failed, error: %d", error); + + return reply.ReadBool(); +} + + +bool AudioPolicyProxy::IsMicrophoneMute() +{ + MessageParcel data; + MessageParcel reply; + MessageOption option; + + bool ret = data.WriteInterfaceToken(GetDescriptor()); + CHECK_AND_RETURN_RET_LOG(ret, -1, "WriteInterfaceToken failed"); + int32_t error = Remote()->SendRequest( static_cast(AudioPolicyInterfaceCode::IS_MICROPHONE_MUTE), data, reply, option); CHECK_AND_RETURN_RET_LOG(error == ERR_NONE, error, "set microphoneMute failed, error: %d", error); @@ -345,7 +391,23 @@ float AudioPolicyProxy::GetSingleStreamVolume(int32_t streamId) return reply.ReadFloat(); } -int32_t AudioPolicyProxy::SetStreamMute(AudioVolumeType volumeType, bool mute, API_VERSION api_v) +int32_t AudioPolicyProxy::SetStreamMuteLegacy(AudioVolumeType volumeType, bool mute) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option; + + bool ret = data.WriteInterfaceToken(GetDescriptor()); + CHECK_AND_RETURN_RET_LOG(ret, -1, "WriteInterfaceToken failed"); + data.WriteInt32(static_cast(volumeType)); + data.WriteBool(mute); + int32_t error = Remote()->SendRequest( + static_cast(AudioPolicyInterfaceCode::SET_STREAM_MUTE_LEGACY), data, reply, option); + CHECK_AND_RETURN_RET_LOG(error == ERR_NONE, error, "set mute failed, error: %d", error); + return reply.ReadInt32(); +} + +int32_t AudioPolicyProxy::SetStreamMute(AudioVolumeType volumeType, bool mute) { MessageParcel data; MessageParcel reply; @@ -355,7 +417,6 @@ int32_t AudioPolicyProxy::SetStreamMute(AudioVolumeType volumeType, bool mute, A CHECK_AND_RETURN_RET_LOG(ret, -1, "WriteInterfaceToken failed"); data.WriteInt32(static_cast(volumeType)); data.WriteBool(mute); - data.WriteInt32(static_cast(api_v)); int32_t error = Remote()->SendRequest( static_cast(AudioPolicyInterfaceCode::SET_STREAM_MUTE), data, reply, option); CHECK_AND_RETURN_RET_LOG(error == ERR_NONE, error, "set mute failed, error: %d", error); diff --git a/services/audio_policy/common/include/audio_policy_client.h b/services/audio_policy/common/include/audio_policy_client.h index ad92a4ebb7..bc8c802102 100644 --- a/services/audio_policy/common/include/audio_policy_client.h +++ b/services/audio_policy/common/include/audio_policy_client.h @@ -28,6 +28,7 @@ namespace OHOS { namespace AudioStandard { static const int32_t UPDATE_CALLBACK_CLIENT = 0; +static const int32_t API_VERSION_MAX = 1000; enum class AudioPolicyClientCode { ON_VOLUME_KEY_EVENT = 0, @@ -74,7 +75,7 @@ public: bool hasBTPermission_ = true; bool hasSystemPermission_ = true; - int32_t apiVersion_ = API_MAX; + int32_t apiVersion_ = API_VERSION_MAX; public: DECLARE_INTERFACE_DESCRIPTOR(u"IAudioPolicyClient"); diff --git a/services/audio_policy/common/include/audio_policy_ipc_interface_code.h b/services/audio_policy/common/include/audio_policy_ipc_interface_code.h index a2b2a044ff..b38933176e 100644 --- a/services/audio_policy/common/include/audio_policy_ipc_interface_code.h +++ b/services/audio_policy/common/include/audio_policy_ipc_interface_code.h @@ -22,8 +22,10 @@ namespace AudioStandard { enum class AudioPolicyInterfaceCode { GET_MAX_VOLUMELEVEL, GET_MIN_VOLUMELEVEL, + SET_SYSTEM_VOLUMELEVEL_LEGACY, SET_SYSTEM_VOLUMELEVEL, GET_SYSTEM_VOLUMELEVEL, + SET_STREAM_MUTE_LEGACY, SET_STREAM_MUTE, GET_STREAM_MUTE, IS_STREAM_ACTIVE, @@ -31,12 +33,14 @@ enum class AudioPolicyInterfaceCode { IS_DEVICE_ACTIVE, GET_ACTIVE_OUTPUT_DEVICE, GET_ACTIVE_INPUT_DEVICE, + SET_RINGER_MODE_LEGACY, SET_RINGER_MODE, GET_RINGER_MODE, SET_AUDIO_SCENE, GET_AUDIO_SCENE, SET_MICROPHONE_MUTE, SET_MICROPHONE_MUTE_AUDIO_CONFIG, + IS_MICROPHONE_MUTE_LEGACY, IS_MICROPHONE_MUTE, SET_CALLBACK, UNSET_CALLBACK, diff --git a/services/audio_policy/server/include/audio_policy_server.h b/services/audio_policy/server/include/audio_policy_server.h index 583168d226..31fcc2de91 100644 --- a/services/audio_policy/server/include/audio_policy_server.h +++ b/services/audio_policy/server/include/audio_policy_server.h @@ -97,8 +97,9 @@ public: int32_t GetMinVolumeLevel(AudioVolumeType volumeType) override; - int32_t SetSystemVolumeLevel(AudioStreamType streamType, int32_t volumeLevel, API_VERSION api_v = API_9, - int32_t volumeFlag = 0) override; + int32_t SetSystemVolumeLevelLegacy(AudioVolumeType volumeType, int32_t volumeLevel) override; + + int32_t SetSystemVolumeLevel(AudioVolumeType volumeType, int32_t volumeLevel, int32_t volumeFlag = 0) override; int32_t GetSystemVolumeLevel(AudioStreamType streamType) override; @@ -108,7 +109,9 @@ public: float GetSingleStreamVolume(int32_t streamId) override; - int32_t SetStreamMute(AudioStreamType streamType, bool mute, API_VERSION api_v = API_9) override; + int32_t SetStreamMuteLegacy(AudioStreamType streamType, bool mute) override; + + int32_t SetStreamMute(AudioStreamType streamType, bool mute) override; bool GetStreamMute(AudioStreamType streamType) override; @@ -145,7 +148,9 @@ public: InternalDeviceType GetActiveInputDevice() override; - int32_t SetRingerMode(AudioRingerMode ringMode, API_VERSION api_v = API_9) override; + int32_t SetRingerModeLegacy(AudioRingerMode ringMode) override; + + int32_t SetRingerMode(AudioRingerMode ringMode) override; #ifdef FEATURE_DTMF_TONE std::vector GetSupportedTones() override; @@ -157,7 +162,7 @@ public: int32_t SetAudioScene(AudioScene audioScene) override; - int32_t SetMicrophoneMuteCommon(bool isMute, API_VERSION api_v); + int32_t SetMicrophoneMuteCommon(bool isMute, bool isLegacy); int32_t SetMicrophoneMute(bool isMute) override; @@ -167,7 +172,9 @@ public: bool GetPersistentMicMuteState() override; - bool IsMicrophoneMute(API_VERSION api_v) override; + bool IsMicrophoneMuteLegacy() override; + + bool IsMicrophoneMute() override; AudioScene GetAudioScene() override; @@ -520,6 +527,8 @@ private: void ArgInfoDump(std::string &dumpString, std::queue &argQue); void InfoDumpHelp(std::string &dumpString); + int32_t SetRingerModeInner(AudioRingerMode ringMode); + AudioPolicyService& audioPolicyService_; std::shared_ptr interruptService_; diff --git a/services/audio_policy/server/src/audio_policy_manager_stub.cpp b/services/audio_policy/server/src/audio_policy_manager_stub.cpp index 8af064c780..8208c5a266 100644 --- a/services/audio_policy/server/src/audio_policy_manager_stub.cpp +++ b/services/audio_policy/server/src/audio_policy_manager_stub.cpp @@ -29,8 +29,10 @@ constexpr int MAX_PID_COUNT = 1000; const char *g_audioPolicyCodeStrs[] = { "GET_MAX_VOLUMELEVEL", "GET_MIN_VOLUMELEVEL", + "SET_SYSTEM_VOLUMELEVEL_LEGACY", "SET_SYSTEM_VOLUMELEVEL", "GET_SYSTEM_VOLUMELEVEL", + "SET_STREAM_MUTE_LEGACY", "SET_STREAM_MUTE", "GET_STREAM_MUTE", "IS_STREAM_ACTIVE", @@ -38,12 +40,14 @@ const char *g_audioPolicyCodeStrs[] = { "IS_DEVICE_ACTIVE", "GET_ACTIVE_OUTPUT_DEVICE", "GET_ACTIVE_INPUT_DEVICE", + "SET_RINGER_MODE_LEGACY", "SET_RINGER_MODE", "GET_RINGER_MODE", "SET_AUDIO_SCENE", "GET_AUDIO_SCENE", "SET_MICROPHONE_MUTE", "SET_MICROPHONE_MUTE_AUDIO_CONFIG", + "IS_MICROPHONE_MUTE_LEGACY", "IS_MICROPHONE_MUTE", "SET_CALLBACK", "UNSET_CALLBACK", @@ -181,21 +185,34 @@ void AudioPolicyManagerStub::GetMinVolumeLevelInternal(MessageParcel &data, Mess reply.WriteInt32(minLevel); } +void AudioPolicyManagerStub::SetSystemVolumeLevelLegacyInternal(MessageParcel &data, MessageParcel &reply) +{ + AudioVolumeType volumeType = static_cast(data.ReadInt32()); + int32_t volumeLevel = data.ReadInt32(); + int result = SetSystemVolumeLevelLegacy(volumeType, volumeLevel); + reply.WriteInt32(result); +} + void AudioPolicyManagerStub::SetSystemVolumeLevelInternal(MessageParcel &data, MessageParcel &reply) { AudioVolumeType volumeType = static_cast(data.ReadInt32()); int32_t volumeLevel = data.ReadInt32(); - API_VERSION api_v = static_cast(data.ReadInt32()); int32_t volumeFlag = data.ReadInt32(); - int result = SetSystemVolumeLevel(volumeType, volumeLevel, api_v, volumeFlag); + int result = SetSystemVolumeLevel(volumeType, volumeLevel, volumeFlag); + reply.WriteInt32(result); +} + +void AudioPolicyManagerStub::SetRingerModeLegacyInternal(MessageParcel &data, MessageParcel &reply) +{ + AudioRingerMode rMode = static_cast(data.ReadInt32()); + int32_t result = SetRingerModeLegacy(rMode); reply.WriteInt32(result); } void AudioPolicyManagerStub::SetRingerModeInternal(MessageParcel &data, MessageParcel &reply) { AudioRingerMode rMode = static_cast(data.ReadInt32()); - API_VERSION api_v = static_cast(data.ReadInt32()); - int32_t result = SetRingerMode(rMode, api_v); + int32_t result = SetRingerMode(rMode); reply.WriteInt32(result); } @@ -246,10 +263,15 @@ void AudioPolicyManagerStub::SetMicrophoneMuteAudioConfigInternal(MessageParcel reply.WriteInt32(result); } +void AudioPolicyManagerStub::IsMicrophoneMuteLegacyInternal(MessageParcel &data, MessageParcel &reply) +{ + int32_t result = IsMicrophoneMuteLegacy(); + reply.WriteBool(result); +} + void AudioPolicyManagerStub::IsMicrophoneMuteInternal(MessageParcel &data, MessageParcel &reply) { - API_VERSION api_v = static_cast(data.ReadInt32()); - int32_t result = IsMicrophoneMute(api_v); + int32_t result = IsMicrophoneMute(); reply.WriteBool(result); } @@ -291,12 +313,19 @@ void AudioPolicyManagerStub::GetSingleStreamVolumeInternal(MessageParcel &data, reply.WriteFloat(volume); } +void AudioPolicyManagerStub::SetStreamMuteLegacyInternal(MessageParcel &data, MessageParcel &reply) +{ + AudioVolumeType volumeType = static_cast(data.ReadInt32()); + bool mute = data.ReadBool(); + int result = SetStreamMuteLegacy(volumeType, mute); + reply.WriteInt32(result); +} + void AudioPolicyManagerStub::SetStreamMuteInternal(MessageParcel &data, MessageParcel &reply) { AudioVolumeType volumeType = static_cast(data.ReadInt32()); bool mute = data.ReadBool(); - API_VERSION api_v = static_cast(data.ReadInt32()); - int result = SetStreamMute(volumeType, mute, api_v); + int result = SetStreamMute(volumeType, mute); reply.WriteInt32(result); } diff --git a/services/audio_policy/server/src/audio_policy_server.cpp b/services/audio_policy/server/src/audio_policy_server.cpp index 29b831c2ca..9739a433e1 100644 --- a/services/audio_policy/server/src/audio_policy_server.cpp +++ b/services/audio_policy/server/src/audio_policy_server.cpp @@ -67,6 +67,7 @@ constexpr int32_t PARAMS_RENDER_STATE_NUM = 2; constexpr int32_t EVENT_DES_SIZE = 60; constexpr int32_t ADAPTER_STATE_CONTENT_DES_SIZE = 60; constexpr int32_t API_VERSION_REMAINDER = 1000; +constexpr int32_t API_VERSION_14 = 14; // for deprecated since 9 constexpr uid_t UID_ROOT = 0; constexpr uid_t UID_MSDP_SA = 6699; constexpr uid_t UID_INTELLIGENT_VOICE_SA = 1042; @@ -562,10 +563,27 @@ int32_t AudioPolicyServer::GetMinVolumeLevel(AudioVolumeType volumeType) return audioPolicyService_.GetMinVolumeLevel(volumeType); } -int32_t AudioPolicyServer::SetSystemVolumeLevel(AudioStreamType streamType, int32_t volumeLevel, API_VERSION api_v, - int32_t volumeFlag) +int32_t AudioPolicyServer::SetSystemVolumeLevelLegacy(AudioStreamType streamType, int32_t volumeLevel) { - if (api_v == API_9 && !PermissionUtil::VerifySystemPermission()) { + int32_t buildApi = GetApiTargerVersion(); + if (buildApi >= API_VERSION_14 && !PermissionUtil::VerifySystemPermission()) { + AUDIO_ERR_LOG("No system permission for legacy call"); + return ERR_PERMISSION_DENIED; + } + + if (!IsVolumeTypeValid(streamType)) { + return ERR_NOT_SUPPORTED; + } + if (!IsVolumeLevelValid(streamType, volumeLevel)) { + return ERR_NOT_SUPPORTED; + } + + return SetSystemVolumeLevelInternal(streamType, volumeLevel, false); +} + +int32_t AudioPolicyServer::SetSystemVolumeLevel(AudioStreamType streamType, int32_t volumeLevel, int32_t volumeFlag) +{ + if (!PermissionUtil::VerifySystemPermission()) { AUDIO_ERR_LOG("SetSystemVolumeLevel: No system permission"); return ERR_PERMISSION_DENIED; } @@ -680,10 +698,21 @@ float AudioPolicyServer::GetSystemVolumeInDb(AudioVolumeType volumeType, int32_t return audioPolicyService_.GetSystemVolumeInDb(volumeType, volumeLevel, deviceType); } -int32_t AudioPolicyServer::SetStreamMute(AudioStreamType streamType, bool mute, API_VERSION api_v) +int32_t AudioPolicyServer::SetStreamMuteLegacy(AudioStreamType streamType, bool mute) +{ + int32_t buildApi = GetApiTargerVersion(); + if (buildApi >= API_VERSION_14 && !PermissionUtil::VerifySystemPermission()) { + AUDIO_ERR_LOG("No system permission"); + return ERR_PERMISSION_DENIED; + } + + return SetStreamMuteInternal(streamType, mute, false); +} + +int32_t AudioPolicyServer::SetStreamMute(AudioStreamType streamType, bool mute) { - if (api_v == API_9 && !PermissionUtil::VerifySystemPermission()) { - AUDIO_ERR_LOG("SetStreamMute: No system permission"); + if (!PermissionUtil::VerifySystemPermission()) { + AUDIO_ERR_LOG("No system permission"); return ERR_PERMISSION_DENIED; } @@ -995,10 +1024,32 @@ InternalDeviceType AudioPolicyServer::GetActiveInputDevice() return audioPolicyService_.GetActiveInputDevice(); } -int32_t AudioPolicyServer::SetRingerMode(AudioRingerMode ringMode, API_VERSION api_v) +// deprecated since 9. +int32_t AudioPolicyServer::SetRingerModeLegacy(AudioRingerMode ringMode) +{ + AUDIO_INFO_LOG("Set ringer mode to %{public}d in legacy", ringMode); + int32_t buildApi = GetApiTargerVersion(); + if (buildApi >= API_VERSION_14 && !PermissionUtil::VerifySystemPermission()) { + AUDIO_ERR_LOG("No system permission"); + return ERR_PERMISSION_DENIED; + } + + return SetRingerModeInner(ringMode); +} + +int32_t AudioPolicyServer::SetRingerMode(AudioRingerMode ringMode) +{ + AUDIO_INFO_LOG("Set ringer mode to %{public}d", ringMode); + if (!PermissionUtil::VerifySystemPermission()) { + AUDIO_ERR_LOG("No system permission"); + return ERR_PERMISSION_DENIED; + } + + return SetRingerModeInner(ringMode); +} + +int32_t AudioPolicyServer::SetRingerModeInner(AudioRingerMode ringMode) { - CHECK_AND_RETURN_RET_LOG(api_v != API_9 || PermissionUtil::VerifySystemPermission(), - ERR_PERMISSION_DENIED, "No system permission"); bool isPermissionRequired = false; if (ringMode == AudioRingerMode::RINGER_MODE_SILENT) { @@ -1010,6 +1061,7 @@ int32_t AudioPolicyServer::SetRingerMode(AudioRingerMode ringMode, API_VERSION a } } + // only switch to silent need check NOTIFICATION. if (isPermissionRequired) { bool result = VerifyPermission(ACCESS_NOTIFICATION_POLICY_PERMISSION); CHECK_AND_RETURN_RET_LOG(result, ERR_PERMISSION_DENIED, @@ -1074,11 +1126,10 @@ void AudioPolicyServer::InitMicrophoneMute() } } -int32_t AudioPolicyServer::SetMicrophoneMuteCommon(bool isMute, API_VERSION api_v) +int32_t AudioPolicyServer::SetMicrophoneMuteCommon(bool isMute, bool isLegacy) { - AUDIO_INFO_LOG("Entered %{public}s", __func__); std::lock_guard lock(micStateChangeMutex_); - bool isMicrophoneMute = IsMicrophoneMute(api_v); + bool isMicrophoneMute = isLegacy ? IsMicrophoneMuteLegacy() : IsMicrophoneMute(); int32_t ret = audioPolicyService_.SetMicrophoneMute(isMute); if (ret == SUCCESS && isMicrophoneMute != isMute && audioPolicyServerHandler_ != nullptr) { MicStateChangeEvent micStateChangeEvent; @@ -1090,22 +1141,22 @@ int32_t AudioPolicyServer::SetMicrophoneMuteCommon(bool isMute, API_VERSION api_ int32_t AudioPolicyServer::SetMicrophoneMute(bool isMute) { - AUDIO_INFO_LOG("Entered %{public}s", __func__); + AUDIO_INFO_LOG("[%{public}d] set to %{public}s", IPCSkeleton::GetCallingPid(), (isMute ? "true" : "false")); bool ret = VerifyPermission(MICROPHONE_PERMISSION); CHECK_AND_RETURN_RET_LOG(ret, ERR_PERMISSION_DENIED, "MICROPHONE permission denied"); - return SetMicrophoneMuteCommon(isMute, API_7); + return SetMicrophoneMuteCommon(isMute, true); } int32_t AudioPolicyServer::SetMicrophoneMuteAudioConfig(bool isMute) { - AUDIO_INFO_LOG("Entered %{public}s", __func__); + AUDIO_INFO_LOG("[%{public}d] set to %{public}s", IPCSkeleton::GetCallingPid(), (isMute ? "true" : "false")); bool ret = VerifyPermission(MANAGE_AUDIO_CONFIG); CHECK_AND_RETURN_RET_LOG(ret, ERR_PERMISSION_DENIED, "MANAGE_AUDIO_CONFIG permission denied"); lastMicMuteSettingPid_ = IPCSkeleton::GetCallingPid(); PrivacyKit::SetMutePolicy(POLICY_TYPE_MAP[TEMPORARY_POLCIY_TYPE], MICPHONE_CALLER, isMute); - return SetMicrophoneMuteCommon(isMute, API_9); + return SetMicrophoneMuteCommon(isMute, false); } int32_t AudioPolicyServer::SetMicrophoneMutePersistent(const bool isMute, const PolicyType type) @@ -1138,12 +1189,20 @@ bool AudioPolicyServer::GetPersistentMicMuteState() return audioPolicyService_.GetPersistentMicMuteState(); } -bool AudioPolicyServer::IsMicrophoneMute(API_VERSION api_v) +// deprecated since 9. +bool AudioPolicyServer::IsMicrophoneMuteLegacy() { - bool ret = VerifyPermission(MICROPHONE_PERMISSION); - CHECK_AND_RETURN_RET_LOG(api_v != API_7 || ret, ERR_PERMISSION_DENIED, - "MICROPHONE permission denied"); + // AudioManager.IsMicrophoneMute check micphone right. + if (!VerifyPermission(MICROPHONE_PERMISSION)) { + AUDIO_ERR_LOG("MICROPHONE permission denied"); + return false; + } + return audioPolicyService_.IsMicrophoneMute(); +} +bool AudioPolicyServer::IsMicrophoneMute() +{ + // AudioVolumeGroupManager.IsMicrophoneMute didn't check micphone right. return audioPolicyService_.IsMicrophoneMute(); } diff --git a/services/audio_policy/server/src/service/audio_policy_service.cpp b/services/audio_policy/server/src/service/audio_policy_service.cpp index 6599c728d0..e544a3c63c 100644 --- a/services/audio_policy/server/src/service/audio_policy_service.cpp +++ b/services/audio_policy/server/src/service/audio_policy_service.cpp @@ -2641,8 +2641,9 @@ int32_t AudioPolicyService::InitPersistentMicrophoneMuteState(bool &isMute) bool AudioPolicyService::IsMicrophoneMute() { - AUDIO_DEBUG_LOG("IsMicrophoneMute start"); - return isMicrophoneMuteTemporary_ | isMicrophoneMutePersistent_; + bool res = isMicrophoneMuteTemporary_ | isMicrophoneMutePersistent_; + AUDIO_INFO_LOG("result:%{public}s", res ? "true" : "false"); + return res; } int32_t AudioPolicyService::SetSystemSoundUri(const std::string &key, const std::string &uri) diff --git a/services/audio_service/client/src/audio_group_manager.cpp b/services/audio_service/client/src/audio_group_manager.cpp index fa42c3bc8f..482245908e 100644 --- a/services/audio_service/client/src/audio_group_manager.cpp +++ b/services/audio_service/client/src/audio_group_manager.cpp @@ -74,7 +74,7 @@ int32_t AudioGroupManager::SetVolume(AudioVolumeType volumeType, int32_t volume, } /* Call Audio Policy SetSystemVolumeLevel */ - return AudioPolicyManager::GetInstance().SetSystemVolumeLevel(volumeType, volume, API_9, volumeFlag); + return AudioPolicyManager::GetInstance().SetSystemVolumeLevel(volumeType, volume, false, volumeFlag); } int32_t AudioGroupManager::GetVolume(AudioVolumeType volumeType) @@ -197,7 +197,7 @@ int32_t AudioGroupManager::SetMute(AudioVolumeType volumeType, bool mute) } /* Call Audio Policy SetStreamMute */ - return AudioPolicyManager::GetInstance().SetStreamMute(volumeType, mute, API_9); + return AudioPolicyManager::GetInstance().SetStreamMute(volumeType, mute, false); } int32_t AudioGroupManager::IsStreamMute(AudioVolumeType volumeType, bool &isMute) @@ -309,7 +309,7 @@ int32_t AudioGroupManager::SetRingerMode(AudioRingerMode ringMode) const CHECK_AND_RETURN_RET_LOG(netWorkId_ == LOCAL_NETWORK_ID, ERROR, "AudioGroupManager::SetRingerMode is not supported for local device."); /* Call Audio Policy SetRingerMode */ - return AudioPolicyManager::GetInstance().SetRingerMode(ringMode, API_9); + return AudioPolicyManager::GetInstance().SetRingerMode(ringMode); } AudioRingerMode AudioGroupManager::GetRingerMode() const @@ -343,12 +343,20 @@ bool AudioGroupManager::GetPersistentMicMuteState() return AudioPolicyManager::GetInstance().GetPersistentMicMuteState(); } -bool AudioGroupManager::IsMicrophoneMute(API_VERSION api_v) +bool AudioGroupManager::IsMicrophoneMuteLegacy() { /* Call Audio Policy GetRingerMode */ CHECK_AND_RETURN_RET_LOG(netWorkId_ == LOCAL_NETWORK_ID, false, "AudioGroupManager::SetRingerMode is not supported for local device."); - return AudioPolicyManager::GetInstance().IsMicrophoneMute(api_v); + return AudioPolicyManager::GetInstance().IsMicrophoneMuteLegacy(); +} + +bool AudioGroupManager::IsMicrophoneMute() +{ + /* Call Audio Policy GetRingerMode */ + CHECK_AND_RETURN_RET_LOG(netWorkId_ == LOCAL_NETWORK_ID, false, + "AudioGroupManager::SetRingerMode is not supported for local device."); + return AudioPolicyManager::GetInstance().IsMicrophoneMute(); } int32_t AudioGroupManager::SetMicStateChangeCallback( diff --git a/services/audio_service/client/src/audio_system_manager.cpp b/services/audio_service/client/src/audio_system_manager.cpp index fa2c71f5ad..8023d4ec69 100644 --- a/services/audio_service/client/src/audio_system_manager.cpp +++ b/services/audio_service/client/src/audio_system_manager.cpp @@ -423,7 +423,7 @@ int32_t AudioSystemManager::SetVolume(AudioVolumeType volumeType, int32_t volume } /* Call Audio Policy SetSystemVolumeLevel */ - return AudioPolicyManager::GetInstance().SetSystemVolumeLevel(volumeType, volumeLevel, API_7); + return AudioPolicyManager::GetInstance().SetSystemVolumeLevel(volumeType, volumeLevel, true); } int32_t AudioSystemManager::GetVolume(AudioVolumeType volumeType) const @@ -528,7 +528,7 @@ int32_t AudioSystemManager::SetMute(AudioVolumeType volumeType, bool mute) const } /* Call Audio Policy SetStreamMute */ - return AudioPolicyManager::GetInstance().SetStreamMute(volumeType, mute, API_7); + return AudioPolicyManager::GetInstance().SetStreamMute(volumeType, mute, true); } bool AudioSystemManager::IsStreamMute(AudioVolumeType volumeType) const @@ -603,11 +603,11 @@ int32_t AudioSystemManager::SetMicrophoneMute(bool isMute) return AudioPolicyManager::GetInstance().SetMicrophoneMute(isMute); } -bool AudioSystemManager::IsMicrophoneMute(API_VERSION api_v) +bool AudioSystemManager::IsMicrophoneMuteLegacy() { std::shared_ptr groupManager = GetGroupManager(DEFAULT_VOLUME_GROUP_ID); CHECK_AND_RETURN_RET_LOG(groupManager != nullptr, false, "failed, groupManager is null"); - return groupManager->IsMicrophoneMute(api_v); + return groupManager->IsMicrophoneMuteLegacy(); } int32_t AudioSystemManager::SelectOutputDevice(std::vector> audioDeviceDescriptors) const -- Gitee From aac9f666d6a03816cbc2e9ab3adf4665fd68534a Mon Sep 17 00:00:00 2001 From: "hezhiqiang19@huawei.com" Date: Sun, 14 Jul 2024 11:49:31 +0000 Subject: [PATCH 2/2] fix build for test Signed-off-by: hezhiqiang19@huawei.com Change-Id: Ib09f72c3fdbaae044fd4b932fff28d7a172966fb --- frameworks/js/napi/audiomanager/napi_audio_manager.cpp | 2 +- .../test/unittest/policy_test/src/audio_policy_unit_test.cpp | 3 +-- .../native/audiomanager/include/audio_system_manager.h | 2 +- .../audio_policy/server/src/service/audio_policy_service.cpp | 4 +--- services/audio_service/client/src/audio_system_manager.cpp | 2 +- test/fuzztest/audiomanager_fuzzer/audio_manager_fuzzer.cpp | 3 +-- 6 files changed, 6 insertions(+), 10 deletions(-) diff --git a/frameworks/js/napi/audiomanager/napi_audio_manager.cpp b/frameworks/js/napi/audiomanager/napi_audio_manager.cpp index fbcaa9c9a6..263a218c3f 100644 --- a/frameworks/js/napi/audiomanager/napi_audio_manager.cpp +++ b/frameworks/js/napi/audiomanager/napi_audio_manager.cpp @@ -1059,7 +1059,7 @@ napi_value NapiAudioManager::IsMicrophoneMute(napi_env env, napi_callback_info i auto *napiAudioManager = objectGuard.GetPtr(); CHECK_AND_RETURN_LOG(CheckAudioManagerStatus(napiAudioManager, context), "audio manager state is error."); - context->isMute = napiAudioManager->audioMngr_->IsMicrophoneMuteLegacy(); + context->isMute = napiAudioManager->audioMngr_->IsMicrophoneMute(); }; auto complete = [env, context](napi_value &output) { diff --git a/frameworks/native/audiopolicy/test/unittest/policy_test/src/audio_policy_unit_test.cpp b/frameworks/native/audiopolicy/test/unittest/policy_test/src/audio_policy_unit_test.cpp index 2261f82681..c7c5ca1599 100644 --- a/frameworks/native/audiopolicy/test/unittest/policy_test/src/audio_policy_unit_test.cpp +++ b/frameworks/native/audiopolicy/test/unittest/policy_test/src/audio_policy_unit_test.cpp @@ -667,9 +667,8 @@ HWTEST(AudioPolicyUnitTest, Audio_Client_Tracker_Callback_Stub_001, TestSize.Lev HWTEST(AudioPolicyUnitTest, Audio_Policy_SetSystemSoundUri_001, TestSize.Level1) { int32_t ret = -1; - API_VERSION api_v = API_9; AudioRingerMode ringMode = AudioRingerMode::RINGER_MODE_SILENT; - ret = AudioPolicyManager::GetInstance().SetRingerMode(ringMode, api_v); + ret = AudioPolicyManager::GetInstance().SetRingerMode(ringMode); EXPECT_EQ(SUCCESS, ret); AudioRingerMode ringModeRet = AudioPolicyManager::GetInstance().GetRingerMode(); diff --git a/interfaces/inner_api/native/audiomanager/include/audio_system_manager.h b/interfaces/inner_api/native/audiomanager/include/audio_system_manager.h index 8ef0fc931f..661eca5f40 100644 --- a/interfaces/inner_api/native/audiomanager/include/audio_system_manager.h +++ b/interfaces/inner_api/native/audiomanager/include/audio_system_manager.h @@ -534,7 +534,7 @@ public: * @return Returns true if the rendering is successfully started; returns false otherwise. * @since 9 */ - bool IsMicrophoneMuteLegacy(); + bool IsMicrophoneMute(); /** * @brief Select output device. diff --git a/services/audio_policy/server/src/service/audio_policy_service.cpp b/services/audio_policy/server/src/service/audio_policy_service.cpp index e544a3c63c..cf91684ce1 100644 --- a/services/audio_policy/server/src/service/audio_policy_service.cpp +++ b/services/audio_policy/server/src/service/audio_policy_service.cpp @@ -2641,9 +2641,7 @@ int32_t AudioPolicyService::InitPersistentMicrophoneMuteState(bool &isMute) bool AudioPolicyService::IsMicrophoneMute() { - bool res = isMicrophoneMuteTemporary_ | isMicrophoneMutePersistent_; - AUDIO_INFO_LOG("result:%{public}s", res ? "true" : "false"); - return res; + return isMicrophoneMuteTemporary_ | isMicrophoneMutePersistent_; } int32_t AudioPolicyService::SetSystemSoundUri(const std::string &key, const std::string &uri) diff --git a/services/audio_service/client/src/audio_system_manager.cpp b/services/audio_service/client/src/audio_system_manager.cpp index 8023d4ec69..ed13325c3a 100644 --- a/services/audio_service/client/src/audio_system_manager.cpp +++ b/services/audio_service/client/src/audio_system_manager.cpp @@ -603,7 +603,7 @@ int32_t AudioSystemManager::SetMicrophoneMute(bool isMute) return AudioPolicyManager::GetInstance().SetMicrophoneMute(isMute); } -bool AudioSystemManager::IsMicrophoneMuteLegacy() +bool AudioSystemManager::IsMicrophoneMute() { std::shared_ptr groupManager = GetGroupManager(DEFAULT_VOLUME_GROUP_ID); CHECK_AND_RETURN_RET_LOG(groupManager != nullptr, false, "failed, groupManager is null"); diff --git a/test/fuzztest/audiomanager_fuzzer/audio_manager_fuzzer.cpp b/test/fuzztest/audiomanager_fuzzer/audio_manager_fuzzer.cpp index 08aa8a635b..5db5acafad 100644 --- a/test/fuzztest/audiomanager_fuzzer/audio_manager_fuzzer.cpp +++ b/test/fuzztest/audiomanager_fuzzer/audio_manager_fuzzer.cpp @@ -157,7 +157,6 @@ void AudioGroupManagerFuzzTest(const uint8_t* data, size_t size) DeviceType device = *reinterpret_cast(data); int32_t clientld = *reinterpret_cast(data); int32_t deviceId = *reinterpret_cast(data); - API_VERSION api_v = *reinterpret_cast(data); AudioRingerMode ringMode = *reinterpret_cast(data); shared_ptr ringerModeCallbackFuzz = std::make_shared(); @@ -175,7 +174,7 @@ void AudioGroupManagerFuzzTest(const uint8_t* data, size_t size) audioGroupMngr_->GetMaxAmplitude(deviceId); audioGroupMngr_->SetRingerMode(ringMode); audioGroupMngr_->GetRingerMode(); - audioGroupMngr_->IsMicrophoneMute(api_v); + audioGroupMngr_->IsMicrophoneMute(); audioGroupMngr_->SetRingerModeCallback(clientld, ringerModeCallbackFuzz); audioGroupMngr_->UnsetRingerModeCallback(clientld); } -- Gitee