• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022-2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #ifdef RESSCHED_AUDIO_FRAMEWORK_ENABLE
16 #include "audio_observer.h"
17 
18 #include "res_sched_log.h"
19 #include "res_sched_mgr.h"
20 #include "res_type.h"
21 
22 namespace OHOS {
23 namespace ResourceSchedule {
MarshallingAudioRendererChangeInfo(const std::unique_ptr<AudioStandard::AudioRendererChangeInfo> & audioRendererChangeInfo,nlohmann::json & payload)24 void AudioObserver::MarshallingAudioRendererChangeInfo(
25     const std::unique_ptr<AudioStandard::AudioRendererChangeInfo> &audioRendererChangeInfo, nlohmann::json &payload)
26 {
27     payload["uid"] = std::to_string(audioRendererChangeInfo->clientUID);
28     payload["sessionId"] = std::to_string(audioRendererChangeInfo->sessionId);
29     payload["rendererState"] = static_cast<int32_t>(audioRendererChangeInfo->rendererState);
30 
31     /* struct AudioRendererInfo */
32     payload["rendererInfo.contentType"] = static_cast<int32_t>(audioRendererChangeInfo->rendererInfo.contentType);
33     payload["rendererInfo.streamUsage"] = static_cast<int32_t>(audioRendererChangeInfo->rendererInfo.streamUsage);
34 }
35 
OnRendererStateChange(const std::vector<std::unique_ptr<AudioStandard::AudioRendererChangeInfo>> & audioRendererChangeInfos)36 void AudioObserver::OnRendererStateChange(
37     const std::vector<std::unique_ptr<AudioStandard::AudioRendererChangeInfo>> &audioRendererChangeInfos)
38 {
39     for (const auto &audioRendererChangeInfo : audioRendererChangeInfos) {
40         RESSCHED_LOGD("enter AudioRenderStateObserver::OnRendererStateChange, state: %{public}d",
41             audioRendererChangeInfo->rendererState);
42         nlohmann::json payload;
43         MarshallingAudioRendererChangeInfo(audioRendererChangeInfo, payload);
44 
45         ResSchedMgr::GetInstance().ReportData(ResType::RES_TYPE_AUDIO_RENDER_STATE_CHANGE,
46             audioRendererChangeInfo->rendererState, payload);
47     }
48 }
49 
OnRingerModeUpdated(const AudioStandard::AudioRingerMode & ringerMode)50 void AudioObserver::OnRingerModeUpdated(const AudioStandard::AudioRingerMode &ringerMode)
51 {
52     if (ringerMode != mode_) {
53         RESSCHED_LOGD("enter AudioRingModeObserver::OnRingerModeUpdated, ringerMode: %{public}d", ringerMode);
54         mode_ = ringerMode;
55         const nlohmann::json payload = nlohmann::json::object();
56         ResSchedMgr::GetInstance().ReportData(ResType::RES_TYPE_AUDIO_RING_MODE_CHANGE, ringerMode, payload);
57     }
58 }
59 
OnVolumeKeyEvent(AudioStandard::VolumeEvent volumeEvent)60 void AudioObserver::OnVolumeKeyEvent(AudioStandard::VolumeEvent volumeEvent)
61 {
62     RESSCHED_LOGD("enter AudioVolumeKeyObserver::OnVolumeKeyEvent, streamType: %{public}d, volumeLevel: %{public}d",
63         volumeEvent.volumeType, volumeEvent.volume);
64     nlohmann::json payload;
65     payload["volumeType"] = std::to_string(volumeEvent.volumeType);
66     ResSchedMgr::GetInstance().ReportData(ResType::RES_TYPE_AUDIO_VOLUME_KEY_CHANGE,
67         volumeEvent.volume, payload);
68 }
69 } // namespace ResourceSchedule
70 } // namespace OHOS
71 #endif
72