1 /* 2 * Copyright (C) 2021 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.media; 18 19 import android.content.AttributionSourceState; 20 21 import android.media.AudioDirectMode; 22 import android.media.AudioMix; 23 import android.media.AudioMixUpdate; 24 import android.media.AudioMixerAttributesInternal; 25 import android.media.AudioOffloadMode; 26 import android.media.AudioPatchFw; 27 import android.media.AudioPolicyDeviceState; 28 import android.media.AudioPolicyForcedConfig; 29 import android.media.AudioPolicyForceUse; 30 import android.media.AudioPortFw; 31 import android.media.AudioPortConfigFw; 32 import android.media.AudioPortRole; 33 import android.media.AudioPortType; 34 import android.media.AudioProductStrategy; 35 import android.media.AudioVolumeGroup; 36 import android.media.DeviceRole; 37 import android.media.EffectDescriptor; 38 import android.media.GetInputForAttrResponse; 39 import android.media.GetOutputForAttrResponse; 40 import android.media.GetSpatializerResponse; 41 import android.media.IAudioPolicyServiceClient; 42 import android.media.ICaptureStateListener; 43 import android.media.INativeSpatializerCallback; 44 import android.media.SoundTriggerSession; 45 import android.media.audio.common.AudioAttributes; 46 import android.media.audio.common.AudioConfig; 47 import android.media.audio.common.AudioConfigBase; 48 import android.media.audio.common.AudioDevice; 49 import android.media.audio.common.AudioDeviceDescription; 50 import android.media.audio.common.AudioFormatDescription; 51 import android.media.audio.common.AudioMMapPolicyInfo; 52 import android.media.audio.common.AudioMMapPolicyType; 53 import android.media.audio.common.AudioMode; 54 import android.media.audio.common.AudioProfile; 55 import android.media.audio.common.AudioOffloadInfo; 56 import android.media.audio.common.AudioPort; 57 import android.media.audio.common.AudioSource; 58 import android.media.audio.common.AudioStreamType; 59 import android.media.audio.common.AudioUsage; 60 import android.media.audio.common.AudioUuid; 61 import android.media.audio.common.Int; 62 63 import com.android.media.permission.INativePermissionController; 64 65 /** 66 * IAudioPolicyService interface (see AudioPolicyInterface for method descriptions). 67 * 68 * {@hide} 69 */ 70 interface IAudioPolicyService { onNewAudioModulesAvailable()71 oneway void onNewAudioModulesAvailable(); 72 setDeviceConnectionState(in AudioPolicyDeviceState state, in android.media.audio.common.AudioPort port, in AudioFormatDescription encodedFormat)73 void setDeviceConnectionState(in AudioPolicyDeviceState state, 74 in android.media.audio.common.AudioPort port, 75 in AudioFormatDescription encodedFormat); 76 getDeviceConnectionState(in AudioDevice device)77 AudioPolicyDeviceState getDeviceConnectionState(in AudioDevice device); 78 handleDeviceConfigChange(in AudioDevice device, @utf8InCpp String deviceName, in AudioFormatDescription encodedFormat)79 void handleDeviceConfigChange(in AudioDevice device, 80 @utf8InCpp String deviceName, 81 in AudioFormatDescription encodedFormat); 82 setPhoneState(AudioMode state, int uid)83 void setPhoneState(AudioMode state, int /* uid_t */ uid); 84 setForceUse(AudioPolicyForceUse usage, AudioPolicyForcedConfig config)85 void setForceUse(AudioPolicyForceUse usage, 86 AudioPolicyForcedConfig config); 87 getForceUse(AudioPolicyForceUse usage)88 AudioPolicyForcedConfig getForceUse(AudioPolicyForceUse usage); 89 getOutput(AudioStreamType stream)90 int /* audio_io_handle_t */ getOutput(AudioStreamType stream); 91 getOutputForAttr(in AudioAttributes attr, int session, in AttributionSourceState attributionSource, in AudioConfig config, int flags, in int[] selectedDeviceIds)92 GetOutputForAttrResponse getOutputForAttr(in AudioAttributes attr, 93 int /* audio_session_t */ session, 94 in AttributionSourceState attributionSource, 95 in AudioConfig config, 96 int /* Bitmask, indexed by AudioOutputFlags */ flags, 97 in int[] /* audio_port_handle_t */ selectedDeviceIds); 98 startOutput(int portId)99 void startOutput(int /* audio_port_handle_t */ portId); 100 stopOutput(int portId)101 void stopOutput(int /* audio_port_handle_t */ portId); 102 releaseOutput(int portId)103 void releaseOutput(int /* audio_port_handle_t */ portId); 104 getInputForAttr(in AudioAttributes attr, int input, int riid, int session, in AttributionSourceState attributionSource, in AudioConfigBase config, int flags, int selectedDeviceId)105 GetInputForAttrResponse getInputForAttr(in AudioAttributes attr, 106 int /* audio_io_handle_t */ input, 107 int /* audio_unique_id_t */ riid, 108 int /* audio_session_t */ session, 109 in AttributionSourceState attributionSource, 110 in AudioConfigBase config, 111 int /* Bitmask, indexed by AudioInputFlags */ flags, 112 int /* audio_port_handle_t */ selectedDeviceId); 113 114 startInput(int portId)115 void startInput(int /* audio_port_handle_t */ portId); 116 stopInput(int portId)117 void stopInput(int /* audio_port_handle_t */ portId); 118 releaseInput(int portId)119 void releaseInput(int /* audio_port_handle_t */ portId); 120 setDeviceAbsoluteVolumeEnabled(in AudioDevice device, boolean enabled, AudioStreamType streamToDriveAbs)121 void setDeviceAbsoluteVolumeEnabled(in AudioDevice device, 122 boolean enabled, 123 AudioStreamType streamToDriveAbs); 124 initStreamVolume(AudioStreamType stream, int indexMin, int indexMax)125 void initStreamVolume(AudioStreamType stream, 126 int indexMin, 127 int indexMax); 128 setStreamVolumeIndex(AudioStreamType stream, in AudioDeviceDescription device, int index, boolean muted)129 void setStreamVolumeIndex(AudioStreamType stream, 130 in AudioDeviceDescription device, 131 int index, boolean muted); 132 getStreamVolumeIndex(AudioStreamType stream, in AudioDeviceDescription device)133 int getStreamVolumeIndex(AudioStreamType stream, 134 in AudioDeviceDescription device); 135 setVolumeIndexForAttributes(in AudioAttributes attr, in AudioDeviceDescription device, int index, boolean muted)136 void setVolumeIndexForAttributes(in AudioAttributes attr, 137 in AudioDeviceDescription device, 138 int index, boolean muted); 139 getVolumeIndexForAttributes(in AudioAttributes attr, in AudioDeviceDescription device)140 int getVolumeIndexForAttributes(in AudioAttributes attr, 141 in AudioDeviceDescription device); 142 getMaxVolumeIndexForAttributes(in AudioAttributes attr)143 int getMaxVolumeIndexForAttributes(in AudioAttributes attr); 144 getMinVolumeIndexForAttributes(in AudioAttributes attr)145 int getMinVolumeIndexForAttributes(in AudioAttributes attr); 146 getStrategyForStream(AudioStreamType stream)147 int /* product_strategy_t */ getStrategyForStream(AudioStreamType stream); 148 getDevicesForAttributes(in AudioAttributes attr, boolean forVolume)149 AudioDevice[] getDevicesForAttributes(in AudioAttributes attr, boolean forVolume); 150 getOutputForEffect(in EffectDescriptor desc)151 int /* audio_io_handle_t */ getOutputForEffect(in EffectDescriptor desc); 152 registerEffect(in EffectDescriptor desc, int io, int strategy, int session, int id)153 void registerEffect(in EffectDescriptor desc, 154 int /* audio_io_handle_t */ io, 155 int /* product_strategy_t */ strategy, 156 int /* audio_session_t */ session, 157 int id); 158 unregisterEffect(int id)159 void unregisterEffect(int id); 160 setEffectEnabled(int id, boolean enabled)161 void setEffectEnabled(int id, boolean enabled); 162 moveEffectsToIo(in int[] ids, int io)163 void moveEffectsToIo(in int[] ids, int /* audio_io_handle_t */ io); 164 isStreamActive(AudioStreamType stream, int inPastMs)165 boolean isStreamActive(AudioStreamType stream, int inPastMs); 166 isStreamActiveRemotely(AudioStreamType stream, int inPastMs)167 boolean isStreamActiveRemotely(AudioStreamType stream, int inPastMs); 168 isSourceActive(AudioSource source)169 boolean isSourceActive(AudioSource source); 170 171 /** 172 * On input, count represents the maximum length of the returned array. 173 * On output, count is the total number of elements, which may be larger than the array size. 174 * Passing '0' on input and inspecting the value on output is a common way of determining the 175 * number of elements without actually retrieving them. 176 */ queryDefaultPreProcessing(int audioSession, inout Int count)177 EffectDescriptor[] queryDefaultPreProcessing(int /* audio_session_t */ audioSession, 178 inout Int count); 179 addSourceDefaultEffect(in AudioUuid type, @utf8InCpp String opPackageName, in AudioUuid uuid, int priority, AudioSource source)180 int /* audio_unique_id_t */ addSourceDefaultEffect(in AudioUuid type, 181 @utf8InCpp String opPackageName, 182 in AudioUuid uuid, 183 int priority, 184 AudioSource source); 185 addStreamDefaultEffect(in AudioUuid type, @utf8InCpp String opPackageName, in AudioUuid uuid, int priority, AudioUsage usage)186 int /* audio_unique_id_t */ addStreamDefaultEffect(in AudioUuid type, 187 @utf8InCpp String opPackageName, 188 in AudioUuid uuid, 189 int priority, 190 AudioUsage usage); 191 removeSourceDefaultEffect(int id)192 void removeSourceDefaultEffect(int /* audio_unique_id_t */ id); 193 removeStreamDefaultEffect(int id)194 void removeStreamDefaultEffect(int /* audio_unique_id_t */ id); 195 setSupportedSystemUsages(in AudioUsage[] systemUsages)196 void setSupportedSystemUsages(in AudioUsage[] systemUsages); 197 setAllowedCapturePolicy(int uid, int capturePolicy)198 void setAllowedCapturePolicy(int /* uid_t */ uid, 199 int /* Bitmask of AudioFlags */ capturePolicy); 200 201 /** 202 * Check if offload is possible for given format, stream type, sample rate, 203 * bit rate, duration, video and streaming or offload property is enabled. 204 */ getOffloadSupport(in AudioOffloadInfo info)205 AudioOffloadMode getOffloadSupport(in AudioOffloadInfo info); 206 207 /** 208 * Check if direct playback is possible for given format, sample rate, channel mask and flags. 209 */ isDirectOutputSupported(in AudioConfigBase config, in AudioAttributes attributes)210 boolean isDirectOutputSupported(in AudioConfigBase config, 211 in AudioAttributes attributes); 212 213 /** 214 * List currently attached audio ports and their attributes. Returns the generation. 215 * The generation is incremented each time when anything changes in the ports 216 * configuration. 217 * 218 * On input, count represents the maximum length of the returned array. 219 * On output, count is the total number of elements, which may be larger than the array size. 220 * Passing '0' on input and inspecting the value on output is a common way of determining the 221 * number of elements without actually retrieving them. 222 */ listAudioPorts(AudioPortRole role, AudioPortType type, inout Int count, out AudioPortFw[] ports)223 int listAudioPorts(AudioPortRole role, 224 AudioPortType type, 225 inout Int count, 226 out AudioPortFw[] ports); 227 228 /** 229 * List all device ports declared in the configuration (including currently detached ones) 230 * 'role' can be 'NONE' to get both input and output devices, 231 * 'SINK' for output devices, and 'SOURCE' for input devices. 232 */ listDeclaredDevicePorts(AudioPortRole role)233 AudioPortFw[] listDeclaredDevicePorts(AudioPortRole role); 234 235 /** Get attributes for the audio port with the given id (AudioPort.hal.id field). */ getAudioPort(int portId)236 AudioPortFw getAudioPort(int /* audio_port_handle_t */ portId); 237 238 /** 239 * Create an audio patch between several source and sink ports. 240 * The handle argument is used when updating an existing patch. 241 */ createAudioPatch(in AudioPatchFw patch, int handle)242 int /* audio_patch_handle_t */ createAudioPatch(in AudioPatchFw patch, int handle); 243 244 /** Release an audio patch. */ releaseAudioPatch(int handle)245 void releaseAudioPatch(int /* audio_patch_handle_t */ handle); 246 247 /** 248 * List existing audio patches. Returns the generation. 249 * 250 * On input, count represents the maximum length of the returned array. 251 * On output, count is the total number of elements, which may be larger than the array size. 252 * Passing '0' on input and inspecting the value on output is a common way of determining the 253 * number of elements without actually retrieving them. 254 */ listAudioPatches(inout Int count, out AudioPatchFw[] patches)255 int listAudioPatches(inout Int count, out AudioPatchFw[] patches); 256 257 /** Set audio port configuration. */ setAudioPortConfig(in AudioPortConfigFw config)258 void setAudioPortConfig(in AudioPortConfigFw config); 259 registerClient(IAudioPolicyServiceClient client)260 void registerClient(IAudioPolicyServiceClient client); 261 setAudioPortCallbacksEnabled(boolean enabled)262 void setAudioPortCallbacksEnabled(boolean enabled); 263 setAudioVolumeGroupCallbacksEnabled(boolean enabled)264 void setAudioVolumeGroupCallbacksEnabled(boolean enabled); 265 acquireSoundTriggerSession()266 SoundTriggerSession acquireSoundTriggerSession(); 267 releaseSoundTriggerSession(int session)268 void releaseSoundTriggerSession(int /* audio_session_t */ session); 269 getPhoneState()270 AudioMode getPhoneState(); 271 registerPolicyMixes(in AudioMix[] mixes, boolean registration)272 void registerPolicyMixes(in AudioMix[] mixes, boolean registration); 273 getRegisteredPolicyMixes()274 List<AudioMix> getRegisteredPolicyMixes(); 275 updatePolicyMixes(in AudioMixUpdate[] updates)276 void updatePolicyMixes(in AudioMixUpdate[] updates); 277 setUidDeviceAffinities(int uid, in AudioDevice[] devices)278 void setUidDeviceAffinities(int /* uid_t */ uid, in AudioDevice[] devices); 279 removeUidDeviceAffinities(int uid)280 void removeUidDeviceAffinities(int /* uid_t */ uid); 281 setUserIdDeviceAffinities(int userId, in AudioDevice[] devices)282 void setUserIdDeviceAffinities(int userId, in AudioDevice[] devices); 283 removeUserIdDeviceAffinities(int userId)284 void removeUserIdDeviceAffinities(int userId); 285 startAudioSource(in AudioPortConfigFw source, in AudioAttributes attributes)286 int /* audio_port_handle_t */ startAudioSource(in AudioPortConfigFw source, 287 in AudioAttributes attributes); 288 stopAudioSource(int portId)289 void stopAudioSource(int /* audio_port_handle_t */ portId); 290 setMasterMono(boolean mono)291 void setMasterMono(boolean mono); 292 getMasterMono()293 boolean getMasterMono(); 294 getStreamVolumeDB(AudioStreamType stream, int index, in AudioDeviceDescription device)295 float getStreamVolumeDB(AudioStreamType stream, int index, in AudioDeviceDescription device); 296 297 /** 298 * Populates supported surround formats and their enabled state in formats and formatsEnabled. 299 * 300 * On input, count represents the maximum length of the returned array. 301 * On output, count is the total number of elements, which may be larger than the array size. 302 * Passing '0' on input and inspecting the value on output is a common way of determining the 303 * number of elements without actually retrieving them. 304 */ getSurroundFormats(inout Int count, out AudioFormatDescription[] formats, out boolean[] formatsEnabled)305 void getSurroundFormats(inout Int count, 306 out AudioFormatDescription[] formats, 307 out boolean[] formatsEnabled); 308 309 /** 310 * Populates the surround formats reported by the HDMI devices in formats. 311 * 312 * On input, count represents the maximum length of the returned array. 313 * On output, count is the total number of elements, which may be larger than the array size. 314 * Passing '0' on input and inspecting the value on output is a common way of determining the 315 * number of elements without actually retrieving them. 316 */ getReportedSurroundFormats(inout Int count, out AudioFormatDescription[] formats)317 void getReportedSurroundFormats(inout Int count, 318 out AudioFormatDescription[] formats); 319 getHwOffloadFormatsSupportedForBluetoothMedia( in AudioDeviceDescription device)320 AudioFormatDescription[] getHwOffloadFormatsSupportedForBluetoothMedia( 321 in AudioDeviceDescription device); 322 setSurroundFormatEnabled(in AudioFormatDescription audioFormat, boolean enabled)323 void setSurroundFormatEnabled(in AudioFormatDescription audioFormat, boolean enabled); 324 setAssistantServicesUids(in int[] uids)325 void setAssistantServicesUids(in int[] /* uid_t[] */ uids); 326 setActiveAssistantServicesUids(in int[] activeUids)327 void setActiveAssistantServicesUids(in int[] /* uid_t[] */ activeUids); 328 setA11yServicesUids(in int[] uids)329 void setA11yServicesUids(in int[] /* uid_t[] */ uids); 330 setCurrentImeUid(int uid)331 void setCurrentImeUid(int /* uid_t */ uid); 332 isHapticPlaybackSupported()333 boolean isHapticPlaybackSupported(); 334 isUltrasoundSupported()335 boolean isUltrasoundSupported(); 336 337 /** 338 * Queries if there is hardware support for requesting audio capture content from 339 * the DSP hotword pipeline. 340 * 341 * @param lookbackAudio true if additionally querying for the ability to capture audio 342 * from the pipeline prior to capture stream open. 343 */ isHotwordStreamSupported(boolean lookbackAudio)344 boolean isHotwordStreamSupported(boolean lookbackAudio); 345 listAudioProductStrategies()346 AudioProductStrategy[] listAudioProductStrategies(); getProductStrategyFromAudioAttributes( in AudioAttributes aa, boolean fallbackOnDefault)347 int /* product_strategy_t */ getProductStrategyFromAudioAttributes( 348 in AudioAttributes aa, boolean fallbackOnDefault); 349 listAudioVolumeGroups()350 AudioVolumeGroup[] listAudioVolumeGroups(); getVolumeGroupFromAudioAttributes(in AudioAttributes aa, boolean fallbackOnDefault)351 int /* volume_group_t */ getVolumeGroupFromAudioAttributes(in AudioAttributes aa, 352 boolean fallbackOnDefault); 353 setRttEnabled(boolean enabled)354 void setRttEnabled(boolean enabled); 355 isCallScreenModeSupported()356 boolean isCallScreenModeSupported(); 357 setDevicesRoleForStrategy(int strategy, DeviceRole role, in AudioDevice[] devices)358 void setDevicesRoleForStrategy(int /* product_strategy_t */ strategy, 359 DeviceRole role, 360 in AudioDevice[] devices); 361 removeDevicesRoleForStrategy(int strategy, DeviceRole role, in AudioDevice[] devices)362 void removeDevicesRoleForStrategy(int /* product_strategy_t */ strategy, 363 DeviceRole role, 364 in AudioDevice[] devices); 365 clearDevicesRoleForStrategy(int strategy, DeviceRole role)366 void clearDevicesRoleForStrategy(int /* product_strategy_t */ strategy, DeviceRole role); 367 getDevicesForRoleAndStrategy(int strategy, DeviceRole role)368 AudioDevice[] getDevicesForRoleAndStrategy(int /* product_strategy_t */ strategy, 369 DeviceRole role); 370 setDevicesRoleForCapturePreset(AudioSource audioSource, DeviceRole role, in AudioDevice[] devices)371 void setDevicesRoleForCapturePreset(AudioSource audioSource, 372 DeviceRole role, 373 in AudioDevice[] devices); 374 addDevicesRoleForCapturePreset(AudioSource audioSource, DeviceRole role, in AudioDevice[] devices)375 void addDevicesRoleForCapturePreset(AudioSource audioSource, 376 DeviceRole role, 377 in AudioDevice[] devices); 378 removeDevicesRoleForCapturePreset(AudioSource audioSource, DeviceRole role, in AudioDevice[] devices)379 void removeDevicesRoleForCapturePreset(AudioSource audioSource, 380 DeviceRole role, 381 in AudioDevice[] devices); 382 clearDevicesRoleForCapturePreset(AudioSource audioSource, DeviceRole role)383 void clearDevicesRoleForCapturePreset(AudioSource audioSource, 384 DeviceRole role); 385 getDevicesForRoleAndCapturePreset(AudioSource audioSource, DeviceRole role)386 AudioDevice[] getDevicesForRoleAndCapturePreset(AudioSource audioSource, 387 DeviceRole role); 388 registerSoundTriggerCaptureStateListener(ICaptureStateListener listener)389 boolean registerSoundTriggerCaptureStateListener(ICaptureStateListener listener); 390 391 /** If a spatializer stage effect is present on the platform, this will return an 392 * ISpatializer interface (see GetSpatializerResponse,aidl) to control this 393 * feature. 394 * If no spatializer stage is present, a null interface is returned. 395 * The INativeSpatializerCallback passed must not be null. 396 * Only one ISpatializer interface can exist at a given time. The native audio policy 397 * service will reject the request if an interface was already acquired and previous owner 398 * did not die or call ISpatializer.release(). 399 */ getSpatializer(INativeSpatializerCallback callback)400 GetSpatializerResponse getSpatializer(INativeSpatializerCallback callback); 401 402 /** Queries if some kind of spatialization will be performed if the audio playback context 403 * described by the provided arguments is present. 404 * The context is made of: 405 * - The audio attributes describing the playback use case. 406 * - The audio configuration describing the audio format, channels, sampling rate... 407 * - The devices describing the sink audio device selected for playback. 408 * All arguments are optional and only the specified arguments are used to match against 409 * supported criteria. For instance, supplying no argument will tell if spatialization is 410 * supported or not in general. 411 */ canBeSpatialized(in @ullable AudioAttributes attr, in @nullable AudioConfig config, in AudioDevice[] devices)412 boolean canBeSpatialized(in @nullable AudioAttributes attr, 413 in @nullable AudioConfig config, 414 in AudioDevice[] devices); 415 416 /** 417 * Query how the direct playback is currently supported on the device. 418 */ getDirectPlaybackSupport(in AudioAttributes attr, in AudioConfig config)419 AudioDirectMode getDirectPlaybackSupport(in AudioAttributes attr, 420 in AudioConfig config); 421 422 /** 423 * Query audio profiles available for direct playback on the current output device(s) 424 * for the specified audio attributes. 425 */ getDirectProfilesForAttributes(in AudioAttributes attr)426 AudioProfile[] getDirectProfilesForAttributes(in AudioAttributes attr); 427 428 /** 429 * Return a list of AudioMixerAttributes that can be used to set preferred mixer attributes 430 * for the given device. 431 */ getSupportedMixerAttributes( int portId)432 AudioMixerAttributesInternal[] getSupportedMixerAttributes( 433 int /* audio_port_handle_t */ portId); 434 435 /** 436 * Set preferred mixer attributes for a given device on a given audio attributes. 437 * When conflicting requests are received, the last request will be honored. 438 * The preferred mixer attributes can only be set when 1) the usage is media, 2) the 439 * given device is currently available, 3) the given device is usb device, 4) the given mixer 440 * attributes is supported by the given device. 441 * 442 * @param attr the audio attributes whose mixer attributes should be set. 443 * @param portId the port id of the device to be routed. 444 * @param uid the uid of the request client. The uid will be used to recognize the ownership for 445 * the preferred mixer attributes. All the playback with same audio attributes from 446 * the same uid will be attached to the mixer with the preferred attributes if the 447 * playback is routed to the given device. 448 * @param mixerAttr the preferred mixer attributes. 449 */ setPreferredMixerAttributes(in AudioAttributes attr, int portId, int uid, in AudioMixerAttributesInternal mixerAttr)450 void setPreferredMixerAttributes(in AudioAttributes attr, 451 int /* audio_port_handle_t */ portId, 452 int /* uid_t */ uid, 453 in AudioMixerAttributesInternal mixerAttr); 454 455 /** 456 * Get preferred mixer attributes for a given device on a given audio attributes. 457 * Null will be returned if there is no preferred mixer attributes set or it has 458 * been cleared. 459 * 460 * @param attr the audio attributes whose mixer attributes should be set. 461 * @param portId the port id of the device to be routed. 462 */ getPreferredMixerAttributes( in AudioAttributes attr, int portId)463 @nullable AudioMixerAttributesInternal getPreferredMixerAttributes( 464 in AudioAttributes attr, 465 int /* audio_port_handle_t */ portId); 466 467 /** 468 * Clear preferred mixer attributes for a given device on a given audio attributes that 469 * is previously set via setPreferredMixerAttributes. 470 * 471 * @param attr the audio attributes whose mixer attributes should be set. 472 * @param portId the port id of the device to be routed. 473 * @param uid the uid of the request client. The uid is used to identify the ownership for the 474 * preferred mixer attributes. The preferred mixer attributes will only be cleared 475 * if the uid is the same as the owner of current preferred mixer attributes. 476 */ clearPreferredMixerAttributes(in AudioAttributes attr, int portId, int uid)477 void clearPreferredMixerAttributes(in AudioAttributes attr, 478 int /* audio_port_handle_t */ portId, 479 int /* uid_t */ uid); 480 481 482 /** 483 * Get the native permission controller for audioserver, to push package and permission info 484 * required to control audio access. 485 */ getPermissionController()486 INativePermissionController getPermissionController(); 487 488 /** 489 * Query mmap policy information. 490 */ getMmapPolicyInfos(AudioMMapPolicyType policyType)491 AudioMMapPolicyInfo[] getMmapPolicyInfos(AudioMMapPolicyType policyType); 492 493 /** 494 * Get all devices that support AAudio MMAP. 495 */ getMmapPolicyForDevice(AudioMMapPolicyType policyType, inout AudioMMapPolicyInfo policyInfo)496 void getMmapPolicyForDevice(AudioMMapPolicyType policyType, 497 inout AudioMMapPolicyInfo policyInfo); 498 // When adding a new method, please review and update 499 // AudioPolicyService.cpp AudioPolicyService::onTransact() 500 // AudioPolicyService.cpp IAUDIOPOLICYSERVICE_BINDER_METHOD_MACRO_LIST 501 } 502