1 /* 2 * Copyright (C) 2007 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.bluetooth.BluetoothDevice; 20 import android.content.ComponentName; 21 import android.media.AudioAttributes; 22 import android.media.AudioDeviceAttributes; 23 import android.media.AudioFormat; 24 import android.media.AudioFocusInfo; 25 import android.media.AudioHalVersionInfo; 26 import android.media.AudioMixerAttributes; 27 import android.media.AudioPlaybackConfiguration; 28 import android.media.AudioRecordingConfiguration; 29 import android.media.AudioRoutesInfo; 30 import android.media.BluetoothProfileConnectionInfo; 31 import android.media.IAudioDeviceVolumeDispatcher; 32 import android.media.IAudioFocusDispatcher; 33 import android.media.IAudioModeDispatcher; 34 import android.media.IAudioRoutesObserver; 35 import android.media.IAudioServerStateDispatcher; 36 import android.media.ICapturePresetDevicesRoleDispatcher; 37 import android.media.ICommunicationDeviceDispatcher; 38 import android.media.IDeviceVolumeBehaviorDispatcher; 39 import android.media.IDevicesForAttributesCallback; 40 import android.media.IMuteAwaitConnectionCallback; 41 import android.media.IPlaybackConfigDispatcher; 42 import android.media.IPreferredMixerAttributesDispatcher; 43 import android.media.IRecordingConfigDispatcher; 44 import android.media.IRingtonePlayer; 45 import android.media.IStrategyPreferredDevicesDispatcher; 46 import android.media.IStrategyNonDefaultDevicesDispatcher; 47 import android.media.ISpatializerCallback; 48 import android.media.ISpatializerHeadTrackerAvailableCallback; 49 import android.media.ISpatializerHeadTrackingModeCallback; 50 import android.media.ISpatializerHeadToSoundStagePoseCallback; 51 import android.media.ISpatializerOutputCallback; 52 import android.media.IStreamAliasingDispatcher; 53 import android.media.IVolumeController; 54 import android.media.PlayerBase; 55 import android.media.VolumeInfo; 56 import android.media.VolumePolicy; 57 import android.media.audiopolicy.AudioPolicyConfig; 58 import android.media.audiopolicy.AudioProductStrategy; 59 import android.media.audiopolicy.AudioVolumeGroup; 60 import android.media.audiopolicy.IAudioPolicyCallback; 61 import android.media.projection.IMediaProjection; 62 import android.net.Uri; 63 import android.os.PersistableBundle; 64 import android.os.UserHandle; 65 import android.view.KeyEvent; 66 67 /** 68 * {@hide} 69 */ 70 interface IAudioService { 71 // C++ and Java methods below. 72 73 // WARNING: When methods are inserted or deleted in this section, the transaction IDs in 74 // frameworks/native/include/audiomanager/IAudioManager.h must be updated to match the order 75 // in this file. 76 // 77 // When a method's argument list is changed, BpAudioManager's corresponding serialization code 78 // (if any) in frameworks/native/services/audiomanager/IAudioManager.cpp must be updated. 79 trackPlayer(in PlayerBase.PlayerIdCard pic)80 int trackPlayer(in PlayerBase.PlayerIdCard pic); 81 playerAttributes(in int piid, in AudioAttributes attr)82 oneway void playerAttributes(in int piid, in AudioAttributes attr); 83 playerEvent(in int piid, in int event, in int eventId)84 oneway void playerEvent(in int piid, in int event, in int eventId); 85 releasePlayer(in int piid)86 oneway void releasePlayer(in int piid); 87 trackRecorder(in IBinder recorder)88 int trackRecorder(in IBinder recorder); 89 recorderEvent(in int riid, in int event)90 oneway void recorderEvent(in int riid, in int event); 91 releaseRecorder(in int riid)92 oneway void releaseRecorder(in int riid); 93 playerSessionId(in int piid, in int sessionId)94 oneway void playerSessionId(in int piid, in int sessionId); 95 portEvent(in int portId, in int event, in @nullable PersistableBundle extras)96 oneway void portEvent(in int portId, in int event, in @nullable PersistableBundle extras); 97 98 // Java-only methods below. adjustStreamVolume(int streamType, int direction, int flags, String callingPackage)99 void adjustStreamVolume(int streamType, int direction, int flags, String callingPackage); 100 adjustStreamVolumeWithAttribution(int streamType, int direction, int flags, in String callingPackage, in String attributionTag)101 void adjustStreamVolumeWithAttribution(int streamType, int direction, int flags, 102 in String callingPackage, in String attributionTag); 103 104 @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553) setStreamVolume(int streamType, int index, int flags, String callingPackage)105 void setStreamVolume(int streamType, int index, int flags, String callingPackage); 106 setStreamVolumeWithAttribution(int streamType, int index, int flags, in String callingPackage, in String attributionTag)107 void setStreamVolumeWithAttribution(int streamType, int index, int flags, 108 in String callingPackage, in String attributionTag); 109 110 @EnforcePermission(anyOf = {"MODIFY_AUDIO_ROUTING", "MODIFY_AUDIO_SETTINGS_PRIVILEGED"}) setDeviceVolume(in VolumeInfo vi, in AudioDeviceAttributes ada, in String callingPackage)111 void setDeviceVolume(in VolumeInfo vi, in AudioDeviceAttributes ada, 112 in String callingPackage); 113 114 @EnforcePermission(anyOf = {"MODIFY_AUDIO_ROUTING", "MODIFY_AUDIO_SETTINGS_PRIVILEGED"}) getDeviceVolume(in VolumeInfo vi, in AudioDeviceAttributes ada, in String callingPackage)115 VolumeInfo getDeviceVolume(in VolumeInfo vi, in AudioDeviceAttributes ada, 116 in String callingPackage); 117 handleVolumeKey(in KeyEvent event, boolean isOnTv, String callingPackage, String caller)118 oneway void handleVolumeKey(in KeyEvent event, boolean isOnTv, 119 String callingPackage, String caller); 120 isStreamMute(int streamType)121 boolean isStreamMute(int streamType); 122 forceRemoteSubmixFullVolume(boolean startForcing, IBinder cb)123 void forceRemoteSubmixFullVolume(boolean startForcing, IBinder cb); 124 isMasterMute()125 boolean isMasterMute(); 126 127 @EnforcePermission("MODIFY_AUDIO_ROUTING") setMasterMute(boolean mute, int flags, String callingPackage, int userId, in String attributionTag)128 void setMasterMute(boolean mute, int flags, String callingPackage, int userId, 129 in String attributionTag); 130 131 @UnsupportedAppUsage getStreamVolume(int streamType)132 int getStreamVolume(int streamType); 133 getStreamMinVolume(int streamType)134 int getStreamMinVolume(int streamType); 135 136 @UnsupportedAppUsage getStreamMaxVolume(int streamType)137 int getStreamMaxVolume(int streamType); 138 139 @EnforcePermission("MODIFY_AUDIO_ROUTING") getAudioVolumeGroups()140 List<AudioVolumeGroup> getAudioVolumeGroups(); 141 142 @EnforcePermission(anyOf={"MODIFY_AUDIO_SETTINGS_PRIVILEGED", "MODIFY_AUDIO_ROUTING"}) setVolumeGroupVolumeIndex(int groupId, int index, int flags, String callingPackage, in String attributionTag)143 void setVolumeGroupVolumeIndex(int groupId, int index, int flags, String callingPackage, 144 in String attributionTag); 145 146 @EnforcePermission(anyOf={"MODIFY_AUDIO_SETTINGS_PRIVILEGED", "MODIFY_AUDIO_ROUTING"}) getVolumeGroupVolumeIndex(int groupId)147 int getVolumeGroupVolumeIndex(int groupId); 148 149 @EnforcePermission(anyOf={"MODIFY_AUDIO_SETTINGS_PRIVILEGED", "MODIFY_AUDIO_ROUTING"}) getVolumeGroupMaxVolumeIndex(int groupId)150 int getVolumeGroupMaxVolumeIndex(int groupId); 151 152 @EnforcePermission(anyOf={"MODIFY_AUDIO_SETTINGS_PRIVILEGED", "MODIFY_AUDIO_ROUTING"}) getVolumeGroupMinVolumeIndex(int groupId)153 int getVolumeGroupMinVolumeIndex(int groupId); 154 155 @EnforcePermission("QUERY_AUDIO_STATE") getLastAudibleVolumeForVolumeGroup(int groupId)156 int getLastAudibleVolumeForVolumeGroup(int groupId); 157 isVolumeGroupMuted(int groupId)158 boolean isVolumeGroupMuted(int groupId); 159 adjustVolumeGroupVolume(int groupId, int direction, int flags, String callingPackage)160 void adjustVolumeGroupVolume(int groupId, int direction, int flags, String callingPackage); 161 162 @EnforcePermission("QUERY_AUDIO_STATE") getLastAudibleStreamVolume(int streamType)163 int getLastAudibleStreamVolume(int streamType); 164 165 @EnforcePermission("MODIFY_AUDIO_ROUTING") setSupportedSystemUsages(in int[] systemUsages)166 void setSupportedSystemUsages(in int[] systemUsages); 167 168 @EnforcePermission("MODIFY_AUDIO_ROUTING") getSupportedSystemUsages()169 int[] getSupportedSystemUsages(); 170 171 @EnforcePermission("MODIFY_AUDIO_ROUTING") getAudioProductStrategies()172 List<AudioProductStrategy> getAudioProductStrategies(); 173 isMicrophoneMuted()174 boolean isMicrophoneMuted(); 175 176 @EnforcePermission("ACCESS_ULTRASOUND") isUltrasoundSupported()177 boolean isUltrasoundSupported(); 178 179 @EnforcePermission("CAPTURE_AUDIO_HOTWORD") isHotwordStreamSupported(boolean lookbackAudio)180 boolean isHotwordStreamSupported(boolean lookbackAudio); 181 setMicrophoneMute(boolean on, String callingPackage, int userId, in String attributionTag)182 void setMicrophoneMute(boolean on, String callingPackage, int userId, in String attributionTag); 183 setMicrophoneMuteFromSwitch(boolean on)184 oneway void setMicrophoneMuteFromSwitch(boolean on); 185 setRingerModeExternal(int ringerMode, String caller)186 void setRingerModeExternal(int ringerMode, String caller); 187 setRingerModeInternal(int ringerMode, String caller)188 void setRingerModeInternal(int ringerMode, String caller); 189 getRingerModeExternal()190 int getRingerModeExternal(); 191 getRingerModeInternal()192 int getRingerModeInternal(); 193 isValidRingerMode(int ringerMode)194 boolean isValidRingerMode(int ringerMode); 195 setVibrateSetting(int vibrateType, int vibrateSetting)196 void setVibrateSetting(int vibrateType, int vibrateSetting); 197 getVibrateSetting(int vibrateType)198 int getVibrateSetting(int vibrateType); 199 shouldVibrate(int vibrateType)200 boolean shouldVibrate(int vibrateType); 201 setMode(int mode, IBinder cb, String callingPackage)202 void setMode(int mode, IBinder cb, String callingPackage); 203 getMode()204 int getMode(); 205 playSoundEffect(int effectType, int userId)206 oneway void playSoundEffect(int effectType, int userId); 207 playSoundEffectVolume(int effectType, float volume)208 oneway void playSoundEffectVolume(int effectType, float volume); 209 loadSoundEffects()210 boolean loadSoundEffects(); 211 unloadSoundEffects()212 oneway void unloadSoundEffects(); 213 reloadAudioSettings()214 oneway void reloadAudioSettings(); 215 getSurroundFormats()216 Map getSurroundFormats(); 217 getReportedSurroundFormats()218 List getReportedSurroundFormats(); 219 setSurroundFormatEnabled(int audioFormat, boolean enabled)220 boolean setSurroundFormatEnabled(int audioFormat, boolean enabled); 221 isSurroundFormatEnabled(int audioFormat)222 boolean isSurroundFormatEnabled(int audioFormat); 223 setEncodedSurroundMode(int mode)224 boolean setEncodedSurroundMode(int mode); 225 getEncodedSurroundMode(int targetSdkVersion)226 int getEncodedSurroundMode(int targetSdkVersion); 227 setSpeakerphoneOn(IBinder cb, boolean on)228 void setSpeakerphoneOn(IBinder cb, boolean on); 229 isSpeakerphoneOn()230 boolean isSpeakerphoneOn(); 231 setBluetoothScoOn(boolean on)232 void setBluetoothScoOn(boolean on); 233 234 @EnforcePermission("BLUETOOTH_STACK") setA2dpSuspended(boolean on)235 void setA2dpSuspended(boolean on); 236 237 @EnforcePermission("BLUETOOTH_STACK") setLeAudioSuspended(boolean enable)238 void setLeAudioSuspended(boolean enable); 239 isBluetoothScoOn()240 boolean isBluetoothScoOn(); 241 setBluetoothA2dpOn(boolean on)242 void setBluetoothA2dpOn(boolean on); 243 isBluetoothA2dpOn()244 boolean isBluetoothA2dpOn(); 245 requestAudioFocus(in AudioAttributes aa, int durationHint, IBinder cb, IAudioFocusDispatcher fd, in String clientId, in String callingPackageName, in String attributionTag, int flags, IAudioPolicyCallback pcb, int sdk)246 int requestAudioFocus(in AudioAttributes aa, int durationHint, IBinder cb, 247 IAudioFocusDispatcher fd, in String clientId, in String callingPackageName, 248 in String attributionTag, int flags, IAudioPolicyCallback pcb, int sdk); 249 abandonAudioFocus(IAudioFocusDispatcher fd, String clientId, in AudioAttributes aa, in String callingPackageName)250 int abandonAudioFocus(IAudioFocusDispatcher fd, String clientId, in AudioAttributes aa, 251 in String callingPackageName); 252 unregisterAudioFocusClient(String clientId)253 void unregisterAudioFocusClient(String clientId); 254 getCurrentAudioFocus()255 int getCurrentAudioFocus(); 256 startBluetoothSco(IBinder cb, int targetSdkVersion)257 void startBluetoothSco(IBinder cb, int targetSdkVersion); startBluetoothScoVirtualCall(IBinder cb)258 void startBluetoothScoVirtualCall(IBinder cb); stopBluetoothSco(IBinder cb)259 void stopBluetoothSco(IBinder cb); 260 forceVolumeControlStream(int streamType, IBinder cb)261 void forceVolumeControlStream(int streamType, IBinder cb); 262 setRingtonePlayer(IRingtonePlayer player)263 void setRingtonePlayer(IRingtonePlayer player); getRingtonePlayer()264 IRingtonePlayer getRingtonePlayer(); getUiSoundsStreamType()265 int getUiSoundsStreamType(); 266 267 @EnforcePermission("MODIFY_AUDIO_SETTINGS_PRIVILEGED") getIndependentStreamTypes()268 List getIndependentStreamTypes(); 269 270 @EnforcePermission("MODIFY_AUDIO_SETTINGS_PRIVILEGED") getStreamTypeAlias(int streamType)271 int getStreamTypeAlias(int streamType); 272 273 @EnforcePermission("MODIFY_AUDIO_SETTINGS_PRIVILEGED") isVolumeControlUsingVolumeGroups()274 boolean isVolumeControlUsingVolumeGroups(); 275 276 @EnforcePermission("MODIFY_AUDIO_SETTINGS_PRIVILEGED") registerStreamAliasingDispatcher(IStreamAliasingDispatcher isad, boolean register)277 void registerStreamAliasingDispatcher(IStreamAliasingDispatcher isad, boolean register); 278 279 @EnforcePermission("MODIFY_AUDIO_SETTINGS_PRIVILEGED") setNotifAliasRingForTest(boolean alias)280 void setNotifAliasRingForTest(boolean alias); 281 282 @EnforcePermission("MODIFY_AUDIO_ROUTING") setWiredDeviceConnectionState(in AudioDeviceAttributes aa, int state, String caller)283 void setWiredDeviceConnectionState(in AudioDeviceAttributes aa, int state, String caller); 284 285 @UnsupportedAppUsage startWatchingRoutes(in IAudioRoutesObserver observer)286 AudioRoutesInfo startWatchingRoutes(in IAudioRoutesObserver observer); 287 isCameraSoundForced()288 boolean isCameraSoundForced(); 289 setVolumeController(in IVolumeController controller)290 void setVolumeController(in IVolumeController controller); 291 getVolumeController()292 @nullable IVolumeController getVolumeController(); 293 notifyVolumeControllerVisible(in IVolumeController controller, boolean visible)294 void notifyVolumeControllerVisible(in IVolumeController controller, boolean visible); 295 isStreamAffectedByRingerMode(int streamType)296 boolean isStreamAffectedByRingerMode(int streamType); 297 isStreamAffectedByMute(int streamType)298 boolean isStreamAffectedByMute(int streamType); 299 disableSafeMediaVolume(String callingPackage)300 void disableSafeMediaVolume(String callingPackage); 301 lowerVolumeToRs1(String callingPackage)302 void lowerVolumeToRs1(String callingPackage); 303 304 @EnforcePermission("MODIFY_AUDIO_SETTINGS_PRIVILEGED") getOutputRs2UpperBound()305 float getOutputRs2UpperBound(); 306 307 @EnforcePermission("MODIFY_AUDIO_SETTINGS_PRIVILEGED") setOutputRs2UpperBound(float rs2Value)308 oneway void setOutputRs2UpperBound(float rs2Value); 309 310 @EnforcePermission("MODIFY_AUDIO_SETTINGS_PRIVILEGED") getCsd()311 float getCsd(); 312 313 @EnforcePermission("MODIFY_AUDIO_SETTINGS_PRIVILEGED") setCsd(float csd)314 oneway void setCsd(float csd); 315 316 @EnforcePermission("MODIFY_AUDIO_SETTINGS_PRIVILEGED") forceUseFrameworkMel(boolean useFrameworkMel)317 oneway void forceUseFrameworkMel(boolean useFrameworkMel); 318 319 @EnforcePermission("MODIFY_AUDIO_SETTINGS_PRIVILEGED") forceComputeCsdOnAllDevices(boolean computeCsdOnAllDevices)320 oneway void forceComputeCsdOnAllDevices(boolean computeCsdOnAllDevices); 321 322 @EnforcePermission("MODIFY_AUDIO_SETTINGS_PRIVILEGED") isCsdEnabled()323 boolean isCsdEnabled(); 324 325 @EnforcePermission("MODIFY_AUDIO_SETTINGS_PRIVILEGED") isCsdAsAFeatureAvailable()326 boolean isCsdAsAFeatureAvailable(); 327 328 @EnforcePermission("MODIFY_AUDIO_SETTINGS_PRIVILEGED") isCsdAsAFeatureEnabled()329 boolean isCsdAsAFeatureEnabled(); 330 331 @EnforcePermission("MODIFY_AUDIO_SETTINGS_PRIVILEGED") setCsdAsAFeatureEnabled(boolean csdToggleValue)332 oneway void setCsdAsAFeatureEnabled(boolean csdToggleValue); 333 334 @EnforcePermission("MODIFY_AUDIO_SETTINGS_PRIVILEGED") setBluetoothAudioDeviceCategory(in String address, boolean isBle, int deviceType)335 oneway void setBluetoothAudioDeviceCategory(in String address, boolean isBle, int deviceType); 336 337 @EnforcePermission("MODIFY_AUDIO_SETTINGS_PRIVILEGED") getBluetoothAudioDeviceCategory(in String address, boolean isBle)338 int getBluetoothAudioDeviceCategory(in String address, boolean isBle); 339 setHdmiSystemAudioSupported(boolean on)340 int setHdmiSystemAudioSupported(boolean on); 341 isHdmiSystemAudioSupported()342 boolean isHdmiSystemAudioSupported(); 343 registerAudioPolicy(in AudioPolicyConfig policyConfig, in IAudioPolicyCallback pcb, boolean hasFocusListener, boolean isFocusPolicy, boolean isTestFocusPolicy, boolean isVolumeController, in IMediaProjection projection)344 String registerAudioPolicy(in AudioPolicyConfig policyConfig, 345 in IAudioPolicyCallback pcb, boolean hasFocusListener, boolean isFocusPolicy, 346 boolean isTestFocusPolicy, 347 boolean isVolumeController, in IMediaProjection projection); 348 unregisterAudioPolicyAsync(in IAudioPolicyCallback pcb)349 oneway void unregisterAudioPolicyAsync(in IAudioPolicyCallback pcb); 350 unregisterAudioPolicy(in IAudioPolicyCallback pcb)351 void unregisterAudioPolicy(in IAudioPolicyCallback pcb); 352 addMixForPolicy(in AudioPolicyConfig policyConfig, in IAudioPolicyCallback pcb)353 int addMixForPolicy(in AudioPolicyConfig policyConfig, in IAudioPolicyCallback pcb); 354 removeMixForPolicy(in AudioPolicyConfig policyConfig, in IAudioPolicyCallback pcb)355 int removeMixForPolicy(in AudioPolicyConfig policyConfig, in IAudioPolicyCallback pcb); 356 setFocusPropertiesForPolicy(int duckingBehavior, in IAudioPolicyCallback pcb)357 int setFocusPropertiesForPolicy(int duckingBehavior, in IAudioPolicyCallback pcb); 358 setVolumePolicy(in VolumePolicy policy)359 void setVolumePolicy(in VolumePolicy policy); 360 hasRegisteredDynamicPolicy()361 boolean hasRegisteredDynamicPolicy(); 362 registerRecordingCallback(in IRecordingConfigDispatcher rcdb)363 void registerRecordingCallback(in IRecordingConfigDispatcher rcdb); 364 unregisterRecordingCallback(in IRecordingConfigDispatcher rcdb)365 oneway void unregisterRecordingCallback(in IRecordingConfigDispatcher rcdb); 366 getActiveRecordingConfigurations()367 List<AudioRecordingConfiguration> getActiveRecordingConfigurations(); 368 registerPlaybackCallback(in IPlaybackConfigDispatcher pcdb)369 void registerPlaybackCallback(in IPlaybackConfigDispatcher pcdb); 370 unregisterPlaybackCallback(in IPlaybackConfigDispatcher pcdb)371 oneway void unregisterPlaybackCallback(in IPlaybackConfigDispatcher pcdb); 372 getActivePlaybackConfigurations()373 List<AudioPlaybackConfiguration> getActivePlaybackConfigurations(); 374 getFocusRampTimeMs(in int focusGain, in AudioAttributes attr)375 int getFocusRampTimeMs(in int focusGain, in AudioAttributes attr); 376 dispatchFocusChange(in AudioFocusInfo afi, in int focusChange, in IAudioPolicyCallback pcb)377 int dispatchFocusChange(in AudioFocusInfo afi, in int focusChange, 378 in IAudioPolicyCallback pcb); 379 playerHasOpPlayAudio(in int piid, in boolean hasOpPlayAudio)380 oneway void playerHasOpPlayAudio(in int piid, in boolean hasOpPlayAudio); 381 handleBluetoothActiveDeviceChanged(in BluetoothDevice newDevice, in BluetoothDevice previousDevice, in BluetoothProfileConnectionInfo info)382 void handleBluetoothActiveDeviceChanged(in BluetoothDevice newDevice, 383 in BluetoothDevice previousDevice, in BluetoothProfileConnectionInfo info); 384 setFocusRequestResultFromExtPolicy(in AudioFocusInfo afi, int requestResult, in IAudioPolicyCallback pcb)385 oneway void setFocusRequestResultFromExtPolicy(in AudioFocusInfo afi, int requestResult, 386 in IAudioPolicyCallback pcb); 387 registerAudioServerStateDispatcher(IAudioServerStateDispatcher asd)388 void registerAudioServerStateDispatcher(IAudioServerStateDispatcher asd); 389 unregisterAudioServerStateDispatcher(IAudioServerStateDispatcher asd)390 oneway void unregisterAudioServerStateDispatcher(IAudioServerStateDispatcher asd); 391 isAudioServerRunning()392 boolean isAudioServerRunning(); 393 setUidDeviceAffinity(in IAudioPolicyCallback pcb, in int uid, in int[] deviceTypes, in String[] deviceAddresses)394 int setUidDeviceAffinity(in IAudioPolicyCallback pcb, in int uid, in int[] deviceTypes, 395 in String[] deviceAddresses); 396 removeUidDeviceAffinity(in IAudioPolicyCallback pcb, in int uid)397 int removeUidDeviceAffinity(in IAudioPolicyCallback pcb, in int uid); 398 setUserIdDeviceAffinity(in IAudioPolicyCallback pcb, in int userId, in int[] deviceTypes, in String[] deviceAddresses)399 int setUserIdDeviceAffinity(in IAudioPolicyCallback pcb, in int userId, in int[] deviceTypes, 400 in String[] deviceAddresses); removeUserIdDeviceAffinity(in IAudioPolicyCallback pcb, in int userId)401 int removeUserIdDeviceAffinity(in IAudioPolicyCallback pcb, in int userId); 402 hasHapticChannels(in Uri uri)403 boolean hasHapticChannels(in Uri uri); 404 isCallScreeningModeSupported()405 boolean isCallScreeningModeSupported(); 406 407 @EnforcePermission("MODIFY_AUDIO_ROUTING") setPreferredDevicesForStrategy(in int strategy, in List<AudioDeviceAttributes> devices)408 int setPreferredDevicesForStrategy(in int strategy, in List<AudioDeviceAttributes> devices); 409 410 @EnforcePermission("MODIFY_AUDIO_ROUTING") removePreferredDevicesForStrategy(in int strategy)411 int removePreferredDevicesForStrategy(in int strategy); 412 413 @EnforcePermission("MODIFY_AUDIO_ROUTING") getPreferredDevicesForStrategy(in int strategy)414 List<AudioDeviceAttributes> getPreferredDevicesForStrategy(in int strategy); 415 416 @EnforcePermission("MODIFY_AUDIO_ROUTING") setDeviceAsNonDefaultForStrategy(in int strategy, in AudioDeviceAttributes device)417 int setDeviceAsNonDefaultForStrategy(in int strategy, in AudioDeviceAttributes device); 418 419 @EnforcePermission("MODIFY_AUDIO_ROUTING") removeDeviceAsNonDefaultForStrategy(in int strategy, in AudioDeviceAttributes device)420 int removeDeviceAsNonDefaultForStrategy(in int strategy, in AudioDeviceAttributes device); 421 422 @EnforcePermission("MODIFY_AUDIO_ROUTING") getNonDefaultDevicesForStrategy(in int strategy)423 List<AudioDeviceAttributes> getNonDefaultDevicesForStrategy(in int strategy); 424 getDevicesForAttributes(in AudioAttributes attributes)425 List<AudioDeviceAttributes> getDevicesForAttributes(in AudioAttributes attributes); 426 getDevicesForAttributesUnprotected(in AudioAttributes attributes)427 List<AudioDeviceAttributes> getDevicesForAttributesUnprotected(in AudioAttributes attributes); 428 addOnDevicesForAttributesChangedListener(in AudioAttributes attributes, in IDevicesForAttributesCallback callback)429 void addOnDevicesForAttributesChangedListener(in AudioAttributes attributes, 430 in IDevicesForAttributesCallback callback); 431 removeOnDevicesForAttributesChangedListener( in IDevicesForAttributesCallback callback)432 oneway void removeOnDevicesForAttributesChangedListener( 433 in IDevicesForAttributesCallback callback); 434 setAllowedCapturePolicy(in int capturePolicy)435 int setAllowedCapturePolicy(in int capturePolicy); 436 getAllowedCapturePolicy()437 int getAllowedCapturePolicy(); 438 registerStrategyPreferredDevicesDispatcher(IStrategyPreferredDevicesDispatcher dispatcher)439 void registerStrategyPreferredDevicesDispatcher(IStrategyPreferredDevicesDispatcher dispatcher); 440 unregisterStrategyPreferredDevicesDispatcher( IStrategyPreferredDevicesDispatcher dispatcher)441 oneway void unregisterStrategyPreferredDevicesDispatcher( 442 IStrategyPreferredDevicesDispatcher dispatcher); 443 registerStrategyNonDefaultDevicesDispatcher( IStrategyNonDefaultDevicesDispatcher dispatcher)444 void registerStrategyNonDefaultDevicesDispatcher( 445 IStrategyNonDefaultDevicesDispatcher dispatcher); 446 unregisterStrategyNonDefaultDevicesDispatcher( IStrategyNonDefaultDevicesDispatcher dispatcher)447 oneway void unregisterStrategyNonDefaultDevicesDispatcher( 448 IStrategyNonDefaultDevicesDispatcher dispatcher); 449 setRttEnabled(in boolean rttEnabled)450 oneway void setRttEnabled(in boolean rttEnabled); 451 452 @EnforcePermission(anyOf = {"MODIFY_AUDIO_ROUTING", "MODIFY_AUDIO_SETTINGS_PRIVILEGED"}) setDeviceVolumeBehavior(in AudioDeviceAttributes device, in int deviceVolumeBehavior, in String pkgName)453 void setDeviceVolumeBehavior(in AudioDeviceAttributes device, 454 in int deviceVolumeBehavior, in String pkgName); 455 456 @EnforcePermission(anyOf = {"MODIFY_AUDIO_ROUTING", "QUERY_AUDIO_STATE", "MODIFY_AUDIO_SETTINGS_PRIVILEGED"}) getDeviceVolumeBehavior(in AudioDeviceAttributes device)457 int getDeviceVolumeBehavior(in AudioDeviceAttributes device); 458 459 // WARNING: read warning at top of file, new methods that need to be used by native 460 // code via IAudioManager.h need to be added to the top section. 461 462 @EnforcePermission("MODIFY_AUDIO_ROUTING") setMultiAudioFocusEnabled(in boolean enabled)463 oneway void setMultiAudioFocusEnabled(in boolean enabled); 464 setPreferredDevicesForCapturePreset( in int capturePreset, in List<AudioDeviceAttributes> devices)465 int setPreferredDevicesForCapturePreset( 466 in int capturePreset, in List<AudioDeviceAttributes> devices); 467 468 @EnforcePermission("MODIFY_AUDIO_ROUTING") clearPreferredDevicesForCapturePreset(in int capturePreset)469 int clearPreferredDevicesForCapturePreset(in int capturePreset); 470 471 @EnforcePermission("MODIFY_AUDIO_ROUTING") getPreferredDevicesForCapturePreset(in int capturePreset)472 List<AudioDeviceAttributes> getPreferredDevicesForCapturePreset(in int capturePreset); 473 registerCapturePresetDevicesRoleDispatcher(ICapturePresetDevicesRoleDispatcher dispatcher)474 void registerCapturePresetDevicesRoleDispatcher(ICapturePresetDevicesRoleDispatcher dispatcher); 475 unregisterCapturePresetDevicesRoleDispatcher( ICapturePresetDevicesRoleDispatcher dispatcher)476 oneway void unregisterCapturePresetDevicesRoleDispatcher( 477 ICapturePresetDevicesRoleDispatcher dispatcher); 478 adjustStreamVolumeForUid(int streamType, int direction, int flags, in String packageName, int uid, int pid, in UserHandle userHandle, int targetSdkVersion)479 oneway void adjustStreamVolumeForUid(int streamType, int direction, int flags, 480 in String packageName, int uid, int pid, in UserHandle userHandle, 481 int targetSdkVersion); 482 adjustSuggestedStreamVolumeForUid(int streamType, int direction, int flags, in String packageName, int uid, int pid, in UserHandle userHandle, int targetSdkVersion)483 oneway void adjustSuggestedStreamVolumeForUid(int streamType, int direction, int flags, 484 in String packageName, int uid, int pid, in UserHandle userHandle, 485 int targetSdkVersion); 486 setStreamVolumeForUid(int streamType, int direction, int flags, in String packageName, int uid, int pid, in UserHandle userHandle, int targetSdkVersion)487 oneway void setStreamVolumeForUid(int streamType, int direction, int flags, 488 in String packageName, int uid, int pid, in UserHandle userHandle, 489 int targetSdkVersion); 490 isMusicActive(in boolean remotely)491 boolean isMusicActive(in boolean remotely); 492 getDeviceMaskForStream(in int streamType)493 int getDeviceMaskForStream(in int streamType); 494 getAvailableCommunicationDeviceIds()495 int[] getAvailableCommunicationDeviceIds(); 496 setCommunicationDevice(IBinder cb, int portId)497 boolean setCommunicationDevice(IBinder cb, int portId); 498 getCommunicationDevice()499 int getCommunicationDevice(); 500 registerCommunicationDeviceDispatcher(ICommunicationDeviceDispatcher dispatcher)501 void registerCommunicationDeviceDispatcher(ICommunicationDeviceDispatcher dispatcher); 502 unregisterCommunicationDeviceDispatcher( ICommunicationDeviceDispatcher dispatcher)503 oneway void unregisterCommunicationDeviceDispatcher( 504 ICommunicationDeviceDispatcher dispatcher); 505 areNavigationRepeatSoundEffectsEnabled()506 boolean areNavigationRepeatSoundEffectsEnabled(); 507 setNavigationRepeatSoundEffectsEnabled(boolean enabled)508 oneway void setNavigationRepeatSoundEffectsEnabled(boolean enabled); 509 isHomeSoundEffectEnabled()510 boolean isHomeSoundEffectEnabled(); 511 setHomeSoundEffectEnabled(boolean enabled)512 oneway void setHomeSoundEffectEnabled(boolean enabled); 513 setAdditionalOutputDeviceDelay(in AudioDeviceAttributes device, long delayMillis)514 boolean setAdditionalOutputDeviceDelay(in AudioDeviceAttributes device, long delayMillis); 515 getAdditionalOutputDeviceDelay(in AudioDeviceAttributes device)516 long getAdditionalOutputDeviceDelay(in AudioDeviceAttributes device); 517 getMaxAdditionalOutputDeviceDelay(in AudioDeviceAttributes device)518 long getMaxAdditionalOutputDeviceDelay(in AudioDeviceAttributes device); 519 requestAudioFocusForTest(in AudioAttributes aa, int durationHint, IBinder cb, in IAudioFocusDispatcher fd, in String clientId, in String callingPackageName, int flags, int uid, int sdk)520 int requestAudioFocusForTest(in AudioAttributes aa, int durationHint, IBinder cb, 521 in IAudioFocusDispatcher fd, in String clientId, in String callingPackageName, 522 int flags, int uid, int sdk); 523 abandonAudioFocusForTest(in IAudioFocusDispatcher fd, in String clientId, in AudioAttributes aa, in String callingPackageName)524 int abandonAudioFocusForTest(in IAudioFocusDispatcher fd, in String clientId, 525 in AudioAttributes aa, in String callingPackageName); 526 getFadeOutDurationOnFocusLossMillis(in AudioAttributes aa)527 long getFadeOutDurationOnFocusLossMillis(in AudioAttributes aa); 528 registerModeDispatcher(IAudioModeDispatcher dispatcher)529 void registerModeDispatcher(IAudioModeDispatcher dispatcher); 530 unregisterModeDispatcher(IAudioModeDispatcher dispatcher)531 oneway void unregisterModeDispatcher(IAudioModeDispatcher dispatcher); 532 getSpatializerImmersiveAudioLevel()533 int getSpatializerImmersiveAudioLevel(); 534 isSpatializerEnabled()535 boolean isSpatializerEnabled(); 536 isSpatializerAvailable()537 boolean isSpatializerAvailable(); 538 539 @EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS") isSpatializerAvailableForDevice(in AudioDeviceAttributes device)540 boolean isSpatializerAvailableForDevice(in AudioDeviceAttributes device); 541 542 @EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS") hasHeadTracker(in AudioDeviceAttributes device)543 boolean hasHeadTracker(in AudioDeviceAttributes device); 544 545 @EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS") setHeadTrackerEnabled(boolean enabled, in AudioDeviceAttributes device)546 void setHeadTrackerEnabled(boolean enabled, in AudioDeviceAttributes device); 547 548 @EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS") isHeadTrackerEnabled(in AudioDeviceAttributes device)549 boolean isHeadTrackerEnabled(in AudioDeviceAttributes device); 550 isHeadTrackerAvailable()551 boolean isHeadTrackerAvailable(); 552 registerSpatializerHeadTrackerAvailableCallback( in ISpatializerHeadTrackerAvailableCallback cb, boolean register)553 void registerSpatializerHeadTrackerAvailableCallback( 554 in ISpatializerHeadTrackerAvailableCallback cb, boolean register); 555 556 @EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS") setSpatializerEnabled(boolean enabled)557 void setSpatializerEnabled(boolean enabled); 558 canBeSpatialized(in AudioAttributes aa, in AudioFormat af)559 boolean canBeSpatialized(in AudioAttributes aa, in AudioFormat af); 560 registerSpatializerCallback(in ISpatializerCallback cb)561 void registerSpatializerCallback(in ISpatializerCallback cb); 562 unregisterSpatializerCallback(in ISpatializerCallback cb)563 void unregisterSpatializerCallback(in ISpatializerCallback cb); 564 565 @EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS") registerSpatializerHeadTrackingCallback(in ISpatializerHeadTrackingModeCallback cb)566 void registerSpatializerHeadTrackingCallback(in ISpatializerHeadTrackingModeCallback cb); 567 568 @EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS") unregisterSpatializerHeadTrackingCallback(in ISpatializerHeadTrackingModeCallback cb)569 void unregisterSpatializerHeadTrackingCallback(in ISpatializerHeadTrackingModeCallback cb); 570 571 @EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS") registerHeadToSoundstagePoseCallback(in ISpatializerHeadToSoundStagePoseCallback cb)572 void registerHeadToSoundstagePoseCallback(in ISpatializerHeadToSoundStagePoseCallback cb); 573 574 @EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS") unregisterHeadToSoundstagePoseCallback(in ISpatializerHeadToSoundStagePoseCallback cb)575 void unregisterHeadToSoundstagePoseCallback(in ISpatializerHeadToSoundStagePoseCallback cb); 576 577 @EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS") getSpatializerCompatibleAudioDevices()578 List<AudioDeviceAttributes> getSpatializerCompatibleAudioDevices(); 579 580 @EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS") addSpatializerCompatibleAudioDevice(in AudioDeviceAttributes ada)581 void addSpatializerCompatibleAudioDevice(in AudioDeviceAttributes ada); 582 583 @EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS") removeSpatializerCompatibleAudioDevice(in AudioDeviceAttributes ada)584 void removeSpatializerCompatibleAudioDevice(in AudioDeviceAttributes ada); 585 586 @EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS") setDesiredHeadTrackingMode(int mode)587 void setDesiredHeadTrackingMode(int mode); 588 589 @EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS") getDesiredHeadTrackingMode()590 int getDesiredHeadTrackingMode(); 591 592 @EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS") getSupportedHeadTrackingModes()593 int[] getSupportedHeadTrackingModes(); 594 595 @EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS") getActualHeadTrackingMode()596 int getActualHeadTrackingMode(); 597 598 @EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS") setSpatializerGlobalTransform(in float[] transform)599 oneway void setSpatializerGlobalTransform(in float[] transform); 600 601 @EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS") recenterHeadTracker()602 oneway void recenterHeadTracker(); 603 604 @EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS") setSpatializerParameter(int key, in byte[] value)605 void setSpatializerParameter(int key, in byte[] value); 606 607 @EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS") getSpatializerParameter(int key, inout byte[] value)608 void getSpatializerParameter(int key, inout byte[] value); 609 610 @EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS") getSpatializerOutput()611 int getSpatializerOutput(); 612 613 @EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS") registerSpatializerOutputCallback(in ISpatializerOutputCallback cb)614 void registerSpatializerOutputCallback(in ISpatializerOutputCallback cb); 615 616 @EnforcePermission("MODIFY_DEFAULT_AUDIO_EFFECTS") unregisterSpatializerOutputCallback(in ISpatializerOutputCallback cb)617 void unregisterSpatializerOutputCallback(in ISpatializerOutputCallback cb); 618 isVolumeFixed()619 boolean isVolumeFixed(); 620 getDefaultVolumeInfo()621 VolumeInfo getDefaultVolumeInfo(); 622 623 @EnforcePermission("CALL_AUDIO_INTERCEPTION") isPstnCallAudioInterceptable()624 boolean isPstnCallAudioInterceptable(); 625 muteAwaitConnection(in int[] usagesToMute, in AudioDeviceAttributes dev, long timeOutMs)626 oneway void muteAwaitConnection(in int[] usagesToMute, in AudioDeviceAttributes dev, 627 long timeOutMs); 628 cancelMuteAwaitConnection(in AudioDeviceAttributes dev)629 oneway void cancelMuteAwaitConnection(in AudioDeviceAttributes dev); 630 631 @EnforcePermission("MODIFY_AUDIO_ROUTING") getMutingExpectedDevice()632 AudioDeviceAttributes getMutingExpectedDevice(); 633 634 @EnforcePermission("MODIFY_AUDIO_ROUTING") registerMuteAwaitConnectionDispatcher(in IMuteAwaitConnectionCallback cb, boolean register)635 void registerMuteAwaitConnectionDispatcher(in IMuteAwaitConnectionCallback cb, 636 boolean register); 637 setTestDeviceConnectionState(in AudioDeviceAttributes device, boolean connected)638 void setTestDeviceConnectionState(in AudioDeviceAttributes device, boolean connected); 639 640 @JavaPassthrough(annotation="@android.annotation.RequiresPermission(anyOf={android.Manifest.permission.MODIFY_AUDIO_ROUTING,android.Manifest.permission.QUERY_AUDIO_STATE})") registerDeviceVolumeBehaviorDispatcher(boolean register, in IDeviceVolumeBehaviorDispatcher dispatcher)641 void registerDeviceVolumeBehaviorDispatcher(boolean register, 642 in IDeviceVolumeBehaviorDispatcher dispatcher); 643 644 @EnforcePermission("MODIFY_AUDIO_ROUTING") getFocusStack()645 List<AudioFocusInfo> getFocusStack(); 646 sendFocusLoss(in AudioFocusInfo focusLoser, in IAudioPolicyCallback apcb)647 boolean sendFocusLoss(in AudioFocusInfo focusLoser, in IAudioPolicyCallback apcb); 648 649 @EnforcePermission("MODIFY_AUDIO_ROUTING") 650 @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)") addAssistantServicesUids(in int[] assistantUID)651 void addAssistantServicesUids(in int[] assistantUID); 652 653 @EnforcePermission("MODIFY_AUDIO_ROUTING") 654 @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)") removeAssistantServicesUids(in int[] assistantUID)655 void removeAssistantServicesUids(in int[] assistantUID); 656 657 @EnforcePermission("MODIFY_AUDIO_ROUTING") 658 @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)") setActiveAssistantServiceUids(in int[] activeUids)659 void setActiveAssistantServiceUids(in int[] activeUids); 660 661 @EnforcePermission("MODIFY_AUDIO_ROUTING") 662 @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)") getAssistantServicesUids()663 int[] getAssistantServicesUids(); 664 665 @EnforcePermission("MODIFY_AUDIO_ROUTING") 666 @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)") getActiveAssistantServiceUids()667 int[] getActiveAssistantServiceUids(); 668 669 @JavaPassthrough(annotation="@android.annotation.RequiresPermission(anyOf={android.Manifest.permission.MODIFY_AUDIO_ROUTING,android.Manifest.permission.BLUETOOTH_PRIVILEGED})") registerDeviceVolumeDispatcherForAbsoluteVolume(boolean register, in IAudioDeviceVolumeDispatcher cb, in String packageName, in AudioDeviceAttributes device, in List<VolumeInfo> volumes, boolean handlesvolumeAdjustment, int volumeBehavior)670 void registerDeviceVolumeDispatcherForAbsoluteVolume(boolean register, 671 in IAudioDeviceVolumeDispatcher cb, 672 in String packageName, 673 in AudioDeviceAttributes device, in List<VolumeInfo> volumes, 674 boolean handlesvolumeAdjustment, 675 int volumeBehavior); 676 getHalVersion()677 AudioHalVersionInfo getHalVersion(); 678 679 @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_SETTINGS)") setPreferredMixerAttributes( in AudioAttributes aa, int portId, in AudioMixerAttributes mixerAttributes)680 int setPreferredMixerAttributes( 681 in AudioAttributes aa, int portId, in AudioMixerAttributes mixerAttributes); 682 @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_SETTINGS)") clearPreferredMixerAttributes(in AudioAttributes aa, int portId)683 int clearPreferredMixerAttributes(in AudioAttributes aa, int portId); registerPreferredMixerAttributesDispatcher( IPreferredMixerAttributesDispatcher dispatcher)684 void registerPreferredMixerAttributesDispatcher( 685 IPreferredMixerAttributesDispatcher dispatcher); unregisterPreferredMixerAttributesDispatcher( IPreferredMixerAttributesDispatcher dispatcher)686 oneway void unregisterPreferredMixerAttributesDispatcher( 687 IPreferredMixerAttributesDispatcher dispatcher); 688 689 @EnforcePermission("MODIFY_AUDIO_ROUTING") 690 @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)") supportsBluetoothVariableLatency()691 boolean supportsBluetoothVariableLatency(); 692 693 @EnforcePermission("MODIFY_AUDIO_ROUTING") 694 @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)") setBluetoothVariableLatencyEnabled(boolean enabled)695 void setBluetoothVariableLatencyEnabled(boolean enabled); 696 697 @EnforcePermission("MODIFY_AUDIO_ROUTING") 698 @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)") isBluetoothVariableLatencyEnabled()699 boolean isBluetoothVariableLatencyEnabled(); 700 } 701