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 74e1510394f4eaee6c49d65550299fcc961e32a1..67343727fb32aa615c606357d19f8c24de5ea227 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 @@ -881,6 +881,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 0be1d2165e99a7046c6e7d3cc7ee55bec509c556..3627c8a941a9c83658eb6c159aef25fe9171be89 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 @@ -980,6 +980,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 d159792caec317de587967284a5d102db4538e78..de09090c3fb00e336647229768fe607c5bbb2660 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