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 16 #include "ohos_adapter/bridge/ark_audio_system_manager_adapter_impl.h" 17 18 #include "ohos_adapter/bridge/ark_audio_device_desc_adapter_impl.h" 19 #include "ohos_adapter/bridge/ark_audio_interrupt_adapter_wrapper.h" 20 #include "ohos_adapter/bridge/ark_audio_manager_callback_adapter_wrapper.h" 21 #include "ohos_adapter/bridge/ark_audio_manager_device_change_callback_adapter_wrapper.h" 22 #include "ohos_adapter/cpptoc/ark_audio_device_desc_adapter_vector_cpptoc.h" 23 24 #include "base/bridge/ark_web_bridge_macros.h" 25 26 namespace OHOS::ArkWeb { 27 ArkAudioSystemManagerAdapterImpl(NWeb::AudioSystemManagerAdapter & ref)28ArkAudioSystemManagerAdapterImpl::ArkAudioSystemManagerAdapterImpl(NWeb::AudioSystemManagerAdapter& ref) : real_(ref) {} 29 HasAudioOutputDevices()30bool ArkAudioSystemManagerAdapterImpl::HasAudioOutputDevices() 31 { 32 return real_.HasAudioOutputDevices(); 33 } 34 HasAudioInputDevices()35bool ArkAudioSystemManagerAdapterImpl::HasAudioInputDevices() 36 { 37 return real_.HasAudioInputDevices(); 38 } 39 RequestAudioFocus(const ArkWebRefPtr<ArkAudioInterruptAdapter> audioInterrupt)40int32_t ArkAudioSystemManagerAdapterImpl::RequestAudioFocus(const ArkWebRefPtr<ArkAudioInterruptAdapter> audioInterrupt) 41 { 42 if (CHECK_REF_PTR_IS_NULL(audioInterrupt)) { 43 return real_.RequestAudioFocus(nullptr); 44 } 45 return real_.RequestAudioFocus(std::make_shared<ArkAudioInterruptAdapterWrapper>(audioInterrupt)); 46 } 47 AbandonAudioFocus(const ArkWebRefPtr<ArkAudioInterruptAdapter> audioInterrupt)48int32_t ArkAudioSystemManagerAdapterImpl::AbandonAudioFocus(const ArkWebRefPtr<ArkAudioInterruptAdapter> audioInterrupt) 49 { 50 if (CHECK_REF_PTR_IS_NULL(audioInterrupt)) { 51 return real_.AbandonAudioFocus(nullptr); 52 } 53 return real_.AbandonAudioFocus(std::make_shared<ArkAudioInterruptAdapterWrapper>(audioInterrupt)); 54 } 55 SetAudioManagerInterruptCallback(ArkWebRefPtr<ArkAudioManagerCallbackAdapter> callback)56int32_t ArkAudioSystemManagerAdapterImpl::SetAudioManagerInterruptCallback( 57 ArkWebRefPtr<ArkAudioManagerCallbackAdapter> callback) 58 { 59 if (CHECK_REF_PTR_IS_NULL(callback)) { 60 return real_.SetAudioManagerInterruptCallback(nullptr); 61 } 62 63 return real_.SetAudioManagerInterruptCallback(std::make_shared<ArkAudioManagerCallbackAdapterWrapper>(callback)); 64 } 65 UnsetAudioManagerInterruptCallback()66int32_t ArkAudioSystemManagerAdapterImpl::UnsetAudioManagerInterruptCallback() 67 { 68 return real_.UnsetAudioManagerInterruptCallback(); 69 } 70 GetDevices(int32_t flag)71ArkAudioDeviceDescAdapterVector ArkAudioSystemManagerAdapterImpl::GetDevices(int32_t flag) 72 { 73 std::vector<std::shared_ptr<NWeb::AudioDeviceDescAdapter>> descs = real_.GetDevices((NWeb::AdapterDeviceFlag)flag); 74 ArkAudioDeviceDescAdapterVector result = ArkAudioDeviceDescAdapterVectorClassToStruct(descs); 75 return result; 76 } 77 SelectAudioDeviceById(int32_t id,bool isInput)78int32_t ArkAudioSystemManagerAdapterImpl::SelectAudioDeviceById(int32_t id, bool isInput) 79 { 80 return real_.SelectAudioDeviceById(id, isInput); 81 } 82 SetDeviceChangeCallback(ArkWebRefPtr<ArkAudioManagerDeviceChangeCallbackAdapter> callback)83int32_t ArkAudioSystemManagerAdapterImpl::SetDeviceChangeCallback( 84 ArkWebRefPtr<ArkAudioManagerDeviceChangeCallbackAdapter> callback) 85 { 86 if (CHECK_REF_PTR_IS_NULL(callback)) { 87 return real_.SetDeviceChangeCallback(nullptr); 88 } 89 90 return real_.SetDeviceChangeCallback(std::make_shared<ArkAudioManagerDeviceChangeCallbackAdapterWrapper>(callback)); 91 } 92 UnsetDeviceChangeCallback()93int32_t ArkAudioSystemManagerAdapterImpl::UnsetDeviceChangeCallback() 94 { 95 return real_.UnsetDeviceChangeCallback(); 96 } 97 GetDefaultOutputDevice()98ArkWebRefPtr<ArkAudioDeviceDescAdapter> ArkAudioSystemManagerAdapterImpl::GetDefaultOutputDevice() 99 { 100 std::shared_ptr<NWeb::AudioDeviceDescAdapter> desc = real_.GetDefaultOutputDevice(); 101 if (CHECK_SHARED_PTR_IS_NULL(desc)) { 102 return nullptr; 103 } 104 105 return new ArkAudioDeviceDescAdapterImpl(desc); 106 } 107 GetDefaultInputDevice()108ArkWebRefPtr<ArkAudioDeviceDescAdapter> ArkAudioSystemManagerAdapterImpl::GetDefaultInputDevice() 109 { 110 std::shared_ptr<NWeb::AudioDeviceDescAdapter> desc = real_.GetDefaultInputDevice(); 111 if (CHECK_SHARED_PTR_IS_NULL(desc)) { 112 return nullptr; 113 } 114 115 return new ArkAudioDeviceDescAdapterImpl(desc); 116 } 117 SetLanguage(ArkWebString language)118bool ArkAudioSystemManagerAdapterImpl::SetLanguage(ArkWebString language) 119 { 120 return real_.SetLanguage(ArkWebStringStructToClass(language)); 121 } 122 123 } // namespace OHOS::ArkWeb 124