1 /*
2 * Copyright (c) 2022 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 #include "audio_observer.h"
16
17 #include "ressched_utils.h"
18 #include "res_sched_log.h"
19 #include "res_type.h"
20
21 namespace OHOS {
22 namespace ResourceSchedule {
OnRendererStateChange(const std::vector<std::unique_ptr<AudioStandard::AudioRendererChangeInfo>> & audioRendererChangeInfos)23 void AudioObserver::OnRendererStateChange(
24 const std::vector<std::unique_ptr<AudioStandard::AudioRendererChangeInfo>> &audioRendererChangeInfos)
25 {
26 for (const auto &audioRendererChangeInfo : audioRendererChangeInfos) {
27 RESSCHED_LOGD("enter AudioRenderStateObserver::OnRendererStateChange, state: %{public}d",
28 audioRendererChangeInfo->rendererState);
29 nlohmann::json payload;
30 payload["uid"] = std::to_string(audioRendererChangeInfo->clientUID);
31 payload["sessionId"] = std::to_string(audioRendererChangeInfo->sessionId);
32 ResSchedUtils::GetInstance().ReportDataInProcess(ResType::RES_TYPE_AUDIO_RENDER_STATE_CHANGE,
33 audioRendererChangeInfo->rendererState, payload);
34 }
35 }
36
OnRingerModeUpdated(const AudioStandard::AudioRingerMode & ringerMode)37 void AudioObserver::OnRingerModeUpdated(const AudioStandard::AudioRingerMode &ringerMode)
38 {
39 if (ringerMode != mode_) {
40 RESSCHED_LOGD("enter AudioRingModeObserver::OnRingerModeUpdated, ringerMode: %{public}d", ringerMode);
41 mode_ = ringerMode;
42 const nlohmann::json payload = nlohmann::json::object();
43 ResSchedUtils::GetInstance().ReportDataInProcess(ResType::RES_TYPE_AUDIO_RING_MODE_CHANGE, ringerMode, payload);
44 }
45 }
46
OnVolumeKeyEvent(AudioStandard::VolumeEvent volumeEvent)47 void AudioObserver::OnVolumeKeyEvent(AudioStandard::VolumeEvent volumeEvent)
48 {
49 RESSCHED_LOGD("enter AudioVolumeKeyObserver::OnVolumeKeyEvent, streamType: %{public}d, volumeLevel: %{public}d",
50 volumeEvent.volumeType, volumeEvent.volume);
51 nlohmann::json payload;
52 payload["volumeType"] = std::to_string(volumeEvent.volumeType);
53 ResSchedUtils::GetInstance().ReportDataInProcess(ResType::RES_TYPE_AUDIO_VOLUME_KEY_CHANGE,
54 volumeEvent.volume, payload);
55 }
56 } // namespace ResourceSchedule
57 } // namespace OHOS
58