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