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_POLICY_CLIENT_H 17 #define ST_AUDIO_POLICY_CLIENT_H 18 19 #include "ipc_types.h" 20 #include "iremote_broker.h" 21 #include "iremote_proxy.h" 22 #include "iremote_stub.h" 23 #include "audio_info.h" 24 #include "audio_system_manager.h" 25 #include "audio_interrupt_info.h" 26 #include "audio_stream_manager.h" 27 28 namespace OHOS { 29 namespace AudioStandard { 30 static const int32_t UPDATE_CALLBACK_CLIENT = 0; 31 static const int32_t API_VERSION_MAX = 1000; 32 33 enum class AudioPolicyClientCode { 34 ON_VOLUME_KEY_EVENT = 0, 35 ON_FOCUS_INFO_CHANGED, 36 ON_FOCUS_REQUEST_CHANGED, 37 ON_FOCUS_ABANDON_CHANGED, 38 ON_DEVICE_CHANGE, 39 ON_RINGERMODE_UPDATE, 40 ON_MIC_STATE_UPDATED, 41 ON_ACTIVE_OUTPUT_DEVICE_UPDATED, 42 ON_ACTIVE_INPUT_DEVICE_UPDATED, 43 ON_RENDERERSTATE_CHANGE, 44 ON_CAPTURERSTATE_CHANGE, 45 ON_RENDERER_DEVICE_CHANGE, 46 ON_RECREATE_RENDERER_STREAM_EVENT, 47 ON_RECREATE_CAPTURER_STREAM_EVENT, 48 ON_HEAD_TRACKING_DEVICE_CHANGE, 49 ON_SPATIALIZATION_ENABLED_CHANGE, 50 ON_SPATIALIZATION_ENABLED_CHANGE_FOR_ANY_DEVICE, 51 ON_HEAD_TRACKING_ENABLED_CHANGE, 52 ON_HEAD_TRACKING_ENABLED_CHANGE_FOR_ANY_DEVICE, 53 ON_AUDIO_SESSION_DEACTIVE, 54 ON_MICRO_PHONE_BLOCKED, 55 AUDIO_POLICY_CLIENT_CODE_MAX = ON_MICRO_PHONE_BLOCKED, 56 }; 57 class IAudioPolicyClient : public IRemoteBroker { 58 public: 59 virtual void OnVolumeKeyEvent(VolumeEvent volumeEvent) = 0; 60 virtual void OnAudioFocusInfoChange(const std::list<std::pair<AudioInterrupt, AudioFocuState>> &focusInfoList) = 0; 61 virtual void OnAudioFocusRequested(const AudioInterrupt &requestFocus) = 0; 62 virtual void OnAudioFocusAbandoned(const AudioInterrupt &abandonFocus) = 0; 63 virtual void OnDeviceChange(const DeviceChangeAction &deviceChangeAction) = 0; 64 virtual void OnMicrophoneBlocked(const MicrophoneBlockedInfo µphoneBlockedInfo) = 0; 65 virtual void OnRingerModeUpdated(const AudioRingerMode &ringerMode) = 0; 66 virtual void OnMicStateUpdated(const MicStateChangeEvent &micStateChangeEvent) = 0; 67 virtual void OnPreferredOutputDeviceUpdated(const std::vector<sptr<AudioDeviceDescriptor>> &desc) = 0; 68 virtual void OnPreferredInputDeviceUpdated(const std::vector<sptr<AudioDeviceDescriptor>> &desc) = 0; 69 virtual void OnRendererStateChange( 70 std::vector<std::unique_ptr<AudioRendererChangeInfo>> &audioRendererChangeInfos) = 0; 71 virtual void OnCapturerStateChange( 72 std::vector<std::unique_ptr<AudioCapturerChangeInfo>> &audioCapturerChangeInfos) = 0; 73 virtual void OnRendererDeviceChange(const uint32_t sessionId, 74 const DeviceInfo &deviceInfo, const AudioStreamDeviceChangeReasonExt reason) = 0; 75 virtual void OnRecreateRendererStreamEvent(const uint32_t sessionId, const int32_t streamFlag, 76 const AudioStreamDeviceChangeReasonExt reason) = 0; 77 virtual void OnRecreateCapturerStreamEvent(const uint32_t sessionId, const int32_t streamFlag, 78 const AudioStreamDeviceChangeReasonExt reason) = 0; 79 virtual void OnHeadTrackingDeviceChange(const std::unordered_map<std::string, bool> &changeInfo) = 0; 80 virtual void OnSpatializationEnabledChange(const bool &enabled) = 0; 81 virtual void OnSpatializationEnabledChangeForAnyDevice(const sptr<AudioDeviceDescriptor> &deviceDescriptor, 82 const bool &enabled) = 0; 83 virtual void OnHeadTrackingEnabledChange(const bool &enabled) = 0; 84 virtual void OnHeadTrackingEnabledChangeForAnyDevice(const sptr<AudioDeviceDescriptor> &deviceDescriptor, 85 const bool &enabled) = 0; 86 virtual void OnAudioSessionDeactive(const AudioSessionDeactiveEvent &deactiveEvent) = 0; 87 88 bool hasBTPermission_ = true; 89 bool hasSystemPermission_ = true; 90 int32_t apiVersion_ = API_VERSION_MAX; 91 92 public: 93 DECLARE_INTERFACE_DESCRIPTOR(u"IAudioPolicyClient"); 94 }; 95 } // namespace AudioStandard 96 } // namespace OHOS 97 #endif // ST_AUDIO_POLICY_CLIENT_H 98