1 /* 2 * Copyright (c) 2021-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 #ifndef ST_AUDIO_POLICY_PROXY_H 17 #define ST_AUDIO_POLICY_PROXY_H 18 19 #include "iremote_proxy.h" 20 #include "audio_policy_base.h" 21 #include "audio_info.h" 22 #include "audio_errors.h" 23 24 namespace OHOS { 25 namespace AudioStandard { 26 class AudioPolicyProxy : public IRemoteProxy<IAudioPolicy> { 27 public: 28 explicit AudioPolicyProxy(const sptr<IRemoteObject> &impl); 29 virtual ~AudioPolicyProxy() = default; 30 31 int32_t SetStreamVolume(AudioStreamType streamType, float volume) override; 32 33 float GetStreamVolume(AudioStreamType streamType) override; 34 35 int32_t SetLowPowerVolume(int32_t streamId, float volume) override; 36 37 float GetLowPowerVolume(int32_t streamId) override; 38 39 float GetSingleStreamVolume(int32_t streamId) override; 40 41 int32_t SetStreamMute(AudioStreamType streamType, bool mute) override; 42 43 bool GetStreamMute(AudioStreamType streamType) override; 44 45 bool IsStreamActive(AudioStreamType streamType) override; 46 47 std::vector<sptr<AudioDeviceDescriptor>> GetDevices(DeviceFlag deviceFlag) override; 48 49 int32_t SetDeviceActive(InternalDeviceType deviceType, bool active) override; 50 51 bool IsDeviceActive(InternalDeviceType deviceType) override; 52 53 DeviceType GetActiveOutputDevice() override; 54 55 DeviceType GetActiveInputDevice() override; 56 57 int32_t SelectOutputDevice(sptr<AudioRendererFilter> audioRendererFilter, 58 std::vector<sptr<AudioDeviceDescriptor>> audioDeviceDescriptors) override; 59 60 std::string GetSelectedDeviceInfo(int32_t uid, int32_t pid, AudioStreamType streamType) override; 61 62 int32_t SelectInputDevice(sptr<AudioCapturerFilter> audioCapturerFilter, 63 std::vector<sptr<AudioDeviceDescriptor>> audioDeviceDescriptors) override; 64 65 int32_t SetRingerMode(AudioRingerMode ringMode) override; 66 67 std::vector<int32_t> GetSupportedTones() override; 68 69 std::shared_ptr<ToneInfo> GetToneConfig(int32_t ltonetype) override; 70 71 AudioRingerMode GetRingerMode() override; 72 73 int32_t SetAudioScene(AudioScene scene) override; 74 75 int32_t SetMicrophoneMute(bool isMute) override; 76 77 int32_t SetMicrophoneMuteAudioConfig(bool isMute) override; 78 79 bool IsMicrophoneMute(API_VERSION api_v) override; 80 81 AudioScene GetAudioScene() override; 82 83 int32_t SetRingerModeCallback(const int32_t clientId, const sptr<IRemoteObject> &object) override; 84 85 int32_t UnsetRingerModeCallback(const int32_t clientId) override; 86 87 int32_t SetMicStateChangeCallback(const int32_t clientId, const sptr<IRemoteObject> &object) override; 88 89 int32_t SetDeviceChangeCallback(const int32_t clientId, const DeviceFlag flag, 90 const sptr<IRemoteObject>& object) override; 91 92 int32_t UnsetDeviceChangeCallback(const int32_t clientId) override; 93 94 int32_t SetAudioInterruptCallback(const uint32_t sessionID, const sptr<IRemoteObject> &object) override; 95 96 int32_t UnsetAudioInterruptCallback(const uint32_t sessionID) override; 97 98 int32_t ActivateAudioInterrupt(const AudioInterrupt &audioInterrupt) override; 99 100 int32_t DeactivateAudioInterrupt(const AudioInterrupt &audioInterrupt) override; 101 102 int32_t SetAudioManagerInterruptCallback(const uint32_t clientID, const sptr<IRemoteObject> &object) override; 103 104 int32_t UnsetAudioManagerInterruptCallback(const uint32_t clientID) override; 105 106 int32_t RequestAudioFocus(const uint32_t clientID, const AudioInterrupt &audioInterrupt) override; 107 108 int32_t AbandonAudioFocus(const uint32_t clientID, const AudioInterrupt &audioInterrupt) override; 109 110 int32_t SetVolumeKeyEventCallback(const int32_t clientPid, const sptr<IRemoteObject> &object) override; 111 112 int32_t UnsetVolumeKeyEventCallback(const int32_t clientPid) override; 113 114 AudioStreamType GetStreamInFocus() override; 115 116 int32_t GetSessionInfoInFocus(AudioInterrupt &audioInterrupt) override; 117 118 bool VerifyClientPermission(const std::string &permissionName, uint32_t appTokenId, int32_t appUid, 119 bool privacyFlag, AudioPermissionState state) override; 120 121 bool getUsingPemissionFromPrivacy(const std::string &permissionName, uint32_t appTokenId, 122 AudioPermissionState state) override; 123 124 int32_t ReconfigureAudioChannel(const uint32_t &count, DeviceType deviceType) override; 125 126 int32_t GetAudioLatencyFromXml() override; 127 128 uint32_t GetSinkLatencyFromXml() override; 129 130 int32_t RegisterAudioRendererEventListener(int32_t clientUID, const sptr<IRemoteObject> &object) override; 131 132 int32_t UnregisterAudioRendererEventListener(int32_t clientUID) override; 133 134 int32_t RegisterAudioCapturerEventListener(int32_t clientUID, const sptr<IRemoteObject> &object) override; 135 136 int32_t UnregisterAudioCapturerEventListener(int32_t clientUID) override; 137 138 int32_t RegisterTracker(AudioMode &mode, 139 AudioStreamChangeInfo &streamChangeInfo, const sptr<IRemoteObject> &object) override; 140 141 int32_t UpdateTracker(AudioMode &mode, AudioStreamChangeInfo &streamChangeInfo) override; 142 143 int32_t GetCurrentRendererChangeInfos( 144 std::vector<std::unique_ptr<AudioRendererChangeInfo>> &audioRendererChangeInfos) override; 145 146 int32_t GetCurrentCapturerChangeInfos( 147 std::vector<std::unique_ptr<AudioCapturerChangeInfo>> &audioCapturerChangeInfos) override; 148 149 int32_t UpdateStreamState(const int32_t clientUid, StreamSetState streamSetState, 150 AudioStreamType audioStreamType) override; 151 152 std::vector<sptr<VolumeGroupInfo>> GetVolumeGroupInfos() override; 153 154 bool IsAudioRendererLowLatencySupported(const AudioStreamInfo &audioStreamInfo) override; 155 156 std::vector<sptr<AudioDeviceDescriptor>> GetActiveOutputDeviceDescriptors() override; 157 158 private: 159 static inline BrokerDelegator<AudioPolicyProxy> mDdelegator; 160 void WriteAudioInteruptParams(MessageParcel &parcel, const AudioInterrupt &audioInterrupt); 161 void WriteAudioManagerInteruptParams(MessageParcel &parcel, const AudioInterrupt &audioInterrupt); 162 void ReadAudioInterruptParams(MessageParcel &reply, AudioInterrupt &audioInterrupt); 163 void WriteStreamChangeInfo(MessageParcel &data, const AudioMode &mode, 164 const AudioStreamChangeInfo &streamChangeInfo); 165 void ReadAudioRendererChangeInfo(MessageParcel &reply, 166 std::unique_ptr<AudioRendererChangeInfo> &rendererChangeInfo); 167 void ReadAudioCapturerChangeInfo(MessageParcel &reply, 168 std::unique_ptr<AudioCapturerChangeInfo> &capturerChangeInfo); 169 void WriteAudioStreamInfoParams(MessageParcel &parcel, const AudioStreamInfo &audioStreamInfo); 170 }; 171 } // namespace AudioStandard 172 } // namespace OHOS 173 #endif // ST_AUDIO_POLICY_PROXY_H 174