From 8e7c3216dd3185c954eaa88ffea7b9fa6768c7ff Mon Sep 17 00:00:00 2001 From: weixuliang Date: Sat, 13 Sep 2025 21:40:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=80=E6=9C=BA=E5=90=8E=E9=A6=96=E6=AC=A1?= =?UTF-8?q?=E8=A7=A3=E9=94=81=E5=B1=8F=E5=B9=95=E6=8B=89=E8=B5=B7=E9=93=83?= =?UTF-8?q?=E9=9F=B3=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: weixuliang --- .../include/audio_policy_server.h | 1 + .../service_main/src/audio_policy_server.cpp | 3 +++ .../audio_policy_server_unit_test_second.cpp | 23 +++++++++++++++++++ 3 files changed, 27 insertions(+) diff --git a/services/audio_policy/server/service/service_main/include/audio_policy_server.h b/services/audio_policy/server/service/service_main/include/audio_policy_server.h index 053c8fd5a7..4dab63925e 100644 --- a/services/audio_policy/server/service/service_main/include/audio_policy_server.h +++ b/services/audio_policy/server/service/service_main/include/audio_policy_server.h @@ -873,6 +873,7 @@ private: std::atomic isInitSettingsData_ = false; std::atomic isScreenOffOrLock_ = false; std::atomic isInitRingtoneReady_ = false; + std::atomic isFirstScreenUnlocked_ = false; #ifdef FEATURE_MULTIMODALINPUT_INPUT std::mutex volUpHistoryMutex_; std::deque volUpHistory_; diff --git a/services/audio_policy/server/service/service_main/src/audio_policy_server.cpp b/services/audio_policy/server/service/service_main/src/audio_policy_server.cpp index 560b421972..7b508b21df 100644 --- a/services/audio_policy/server/service/service_main/src/audio_policy_server.cpp +++ b/services/audio_policy/server/service/service_main/src/audio_policy_server.cpp @@ -1066,6 +1066,9 @@ void AudioPolicyServer::OnReceiveEvent(const EventFwk::CommonEventData &eventDat AUDIO_INFO_LOG("receive SCREEN_OFF or SCREEN_LOCKED action, control audio volume change if stream is active"); isScreenOffOrLock_ = true; } else if (action == "usual.event.SCREEN_UNLOCKED") { + if (isFirstScreenUnlocked_ == false) { + isFirstScreenUnlocked_ = CallRingtoneLibrary() == SUCCESS; + } AUDIO_INFO_LOG("receive SCREEN_UNLOCKED action, can change volume"); isScreenOffOrLock_ = false; } else if (action == "usual.event.LOCALE_CHANGED" || action == "usual.event.USER_STARTED") { diff --git a/services/audio_policy/test/unittest/audio_interrupt_service_test/src/audio_policy_server_unit_test_second.cpp b/services/audio_policy/test/unittest/audio_interrupt_service_test/src/audio_policy_server_unit_test_second.cpp index d159792cae..de09090c3f 100644 --- a/services/audio_policy/test/unittest/audio_interrupt_service_test/src/audio_policy_server_unit_test_second.cpp +++ b/services/audio_policy/test/unittest/audio_interrupt_service_test/src/audio_policy_server_unit_test_second.cpp @@ -457,6 +457,29 @@ HWTEST(AudioPolicyUnitTestSecond, AudioPolicyServer_221, TestSize.Level4) EXPECT_EQ(result, SUCCESS); } +/** + * @tc.name : Test AudioPolicyServer. + * @tc.number: AudioPolicyServer_224 + * @tc.desc : Test OnReceiveEvent. + */ +HWTEST(AudioPolicyUnitTestSecond, AudioPolicyServer_224, TestSize.Level4) +{ + int32_t systemAbilityId = 0; + auto audioPolicyServer = std::make_shared(systemAbilityId); + ASSERT_NE(audioPolicyServer, nullptr); + + EventFwk::CommonEventData eventData; + OHOS::EventFwk::Want want; + want.SetAction("usual.event.DATA_SHARE_READY"); + eventData.SetWant(want); + audioPolicyServer->isFirstScreenUnlocked_ = false; + audioPolicyServer->OnReceiveEvent(eventData); + EXPECT_EQ(audioPolicyServer->isFirstScreenUnlocked_, true); + // branch testing + audioPolicyServer->OnReceiveEvent(eventData); + EXPECT_EQ(audioPolicyServer->isFirstScreenUnlocked_, true); +} + /** * @tc.name : IsContinueAddVolTest_001 * @tc.number: IsContinueAddVolTest_001 -- Gitee