1 /*
2 * Copyright (c) 2024 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 #ifndef LOG_TAG
16 #define LOG_TAG "AudioSessionManager"
17 #endif
18
19 #include "audio_session_manager.h"
20
21 #include "audio_errors.h"
22 #include "audio_log.h"
23 #include "audio_policy_manager.h"
24
25 namespace OHOS {
26 namespace AudioStandard {
27 using namespace std;
GetInstance()28 AudioSessionManager *AudioSessionManager::GetInstance()
29 {
30 static AudioSessionManager audioSessionManager;
31 return &audioSessionManager;
32 }
33
ActivateAudioSession(const AudioSessionStrategy & strategy)34 int32_t AudioSessionManager::ActivateAudioSession(const AudioSessionStrategy &strategy)
35 {
36 AUDIO_INFO_LOG("Activate audio session with strategy: %{public}d", static_cast<int32_t>(strategy.concurrencyMode));
37 return AudioPolicyManager::GetInstance().ActivateAudioSession(strategy);
38 }
39
DeactivateAudioSession()40 int32_t AudioSessionManager::DeactivateAudioSession()
41 {
42 AUDIO_INFO_LOG("in");
43 return AudioPolicyManager::GetInstance().DeactivateAudioSession();
44 }
45
IsAudioSessionActivated()46 bool AudioSessionManager::IsAudioSessionActivated()
47 {
48 AUDIO_INFO_LOG("in");
49 return AudioPolicyManager::GetInstance().IsAudioSessionActivated();
50 }
51
SetAudioSessionCallback(const std::shared_ptr<AudioSessionCallback> & audioSessionCallback)52 int32_t AudioSessionManager::SetAudioSessionCallback(const std::shared_ptr<AudioSessionCallback> &audioSessionCallback)
53 {
54 AUDIO_INFO_LOG("in");
55 CHECK_AND_RETURN_RET_LOG(audioSessionCallback != nullptr, ERR_INVALID_PARAM, "audioSessionCallback is null");
56
57 int32_t result = AudioPolicyManager::GetInstance().SetAudioSessionCallback(audioSessionCallback);
58 CHECK_AND_RETURN_RET_LOG(result == SUCCESS, ERR_OPERATION_FAILED,
59 "SetAudioSessionCallback result:%{public}d", result);
60 return result;
61 }
62
UnsetAudioSessionCallback()63 int32_t AudioSessionManager::UnsetAudioSessionCallback()
64 {
65 AUDIO_INFO_LOG("Unset all audio session callbacks");
66 int32_t result = AudioPolicyManager::GetInstance().UnsetAudioSessionCallback();
67 CHECK_AND_RETURN_RET_LOG(result == SUCCESS, ERR_OPERATION_FAILED,
68 "UnsetAudioSessionCallback(all) result:%{public}d", result);
69 return result;
70 }
71
UnsetAudioSessionCallback(const std::shared_ptr<AudioSessionCallback> & audioSessionCallback)72 int32_t AudioSessionManager::UnsetAudioSessionCallback(
73 const std::shared_ptr<AudioSessionCallback> &audioSessionCallback)
74 {
75 AUDIO_INFO_LOG("Unset one audio session callback");
76 CHECK_AND_RETURN_RET_LOG(audioSessionCallback != nullptr, ERR_INVALID_PARAM, "audioSessionCallback is null");
77
78 int32_t result = AudioPolicyManager::GetInstance().UnsetAudioSessionCallback(audioSessionCallback);
79 CHECK_AND_RETURN_RET_LOG(result == SUCCESS, ERR_OPERATION_FAILED,
80 "UnsetAudioSessionCallback result:%{public}d", result);
81 return result;
82 }
83 } // namespace AudioStandard
84 } // namespace OHOS
85