1 /* 2 * Copyright (c) 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 16 #ifndef ST_AUDIO_STATE_MANAGER_H 17 #define ST_AUDIO_STATE_MANAGER_H 18 19 #include "audio_system_manager.h" 20 21 namespace OHOS { 22 namespace AudioStandard { 23 using namespace std; 24 25 class AudioStateManager { 26 public: GetAudioStateManager()27 static AudioStateManager& GetAudioStateManager() 28 { 29 static AudioStateManager audioStateManager; 30 return audioStateManager; 31 } 32 33 // Set media render device selected by the user 34 void SetPreferredMediaRenderDevice(const sptr<AudioDeviceDescriptor> &deviceDescriptor); 35 36 // Set call render device selected by the user 37 void SetPreferredCallRenderDevice(const sptr<AudioDeviceDescriptor> &deviceDescriptor); 38 39 // Set call capture device selected by the user 40 void SetPreferredCallCaptureDevice(const sptr<AudioDeviceDescriptor> &deviceDescriptor); 41 42 // Set ring render device selected by the user 43 void SetPreferredRingRenderDevice(const sptr<AudioDeviceDescriptor> &deviceDescriptor); 44 45 // Set record capture device selected by the user 46 void SetPreferredRecordCaptureDevice(const sptr<AudioDeviceDescriptor> &deviceDescriptor); 47 48 // Set tone render device selected by the user 49 void SetPreferredToneRenderDevice(const sptr<AudioDeviceDescriptor> &deviceDescriptor); 50 51 // Get media render device selected by the user 52 unique_ptr<AudioDeviceDescriptor> GetPreferredMediaRenderDevice(); 53 54 // Get call render device selected by the user 55 unique_ptr<AudioDeviceDescriptor> GetPreferredCallRenderDevice(); 56 57 // Get call capture device selected by the user 58 unique_ptr<AudioDeviceDescriptor> GetPreferredCallCaptureDevice(); 59 60 // Get ring render device selected by the user 61 unique_ptr<AudioDeviceDescriptor> GetPreferredRingRenderDevice(); 62 63 // Get record capture device selected by the user 64 unique_ptr<AudioDeviceDescriptor> GetPreferredRecordCaptureDevice(); 65 66 // Get tone render device selected by the user 67 unique_ptr<AudioDeviceDescriptor> GetPreferredToneRenderDevice(); 68 69 void UpdatePreferredMediaRenderDeviceConnectState(ConnectState state); 70 void UpdatePreferredCallRenderDeviceConnectState(ConnectState state); 71 void UpdatePreferredCallCaptureDeviceConnectState(ConnectState state); 72 void UpdatePreferredRecordCaptureDeviceConnectState(ConnectState state); 73 74 private: AudioStateManager()75 AudioStateManager() {}; ~AudioStateManager()76 ~AudioStateManager() {}; 77 sptr<AudioDeviceDescriptor> preferredMediaRenderDevice_ = new(std::nothrow) AudioDeviceDescriptor(); 78 sptr<AudioDeviceDescriptor> preferredCallRenderDevice_ = new(std::nothrow) AudioDeviceDescriptor(); 79 sptr<AudioDeviceDescriptor> preferredCallCaptureDevice_ = new(std::nothrow) AudioDeviceDescriptor(); 80 sptr<AudioDeviceDescriptor> preferredRingRenderDevice_ = new(std::nothrow) AudioDeviceDescriptor(); 81 sptr<AudioDeviceDescriptor> preferredRecordCaptureDevice_ = new(std::nothrow) AudioDeviceDescriptor(); 82 sptr<AudioDeviceDescriptor> preferredToneRenderDevice_ = new(std::nothrow) AudioDeviceDescriptor(); 83 std::mutex mutex_; 84 }; 85 86 } // namespace AudioStandard 87 } // namespace OHOS 88 89 #endif // ST_AUDIO_STATE_MANAGER_H 90 91