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.media.AudioAttributes; 21 import android.media.AudioFocusInfo; 22 import android.media.AudioPlaybackConfiguration; 23 import android.media.AudioRecordingConfiguration; 24 import android.media.AudioRoutesInfo; 25 import android.media.IAudioFocusDispatcher; 26 import android.media.IAudioRoutesObserver; 27 import android.media.IAudioServerStateDispatcher; 28 import android.media.IPlaybackConfigDispatcher; 29 import android.media.IRecordingConfigDispatcher; 30 import android.media.IRingtonePlayer; 31 import android.media.IVolumeController; 32 import android.media.IVolumeController; 33 import android.media.PlayerBase; 34 import android.media.VolumePolicy; 35 import android.media.audiopolicy.AudioPolicyConfig; 36 import android.media.audiopolicy.AudioProductStrategy; 37 import android.media.audiopolicy.AudioVolumeGroup; 38 import android.media.audiopolicy.IAudioPolicyCallback; 39 import android.media.projection.IMediaProjection; 40 import android.net.Uri; 41 42 /** 43 * {@hide} 44 */ 45 interface IAudioService { 46 // C++ and Java methods below. 47 48 // WARNING: When methods are inserted or deleted in this section, the transaction IDs in 49 // frameworks/native/include/audiomanager/IAudioManager.h must be updated to match the order 50 // in this file. 51 // 52 // When a method's argument list is changed, BpAudioManager's corresponding serialization code 53 // (if any) in frameworks/native/services/audiomanager/IAudioManager.cpp must be updated. 54 trackPlayer(in PlayerBase.PlayerIdCard pic)55 int trackPlayer(in PlayerBase.PlayerIdCard pic); 56 playerAttributes(in int piid, in AudioAttributes attr)57 oneway void playerAttributes(in int piid, in AudioAttributes attr); 58 playerEvent(in int piid, in int event)59 oneway void playerEvent(in int piid, in int event); 60 releasePlayer(in int piid)61 oneway void releasePlayer(in int piid); 62 trackRecorder(in IBinder recorder)63 int trackRecorder(in IBinder recorder); 64 recorderEvent(in int riid, in int event)65 oneway void recorderEvent(in int riid, in int event); 66 releaseRecorder(in int riid)67 oneway void releaseRecorder(in int riid); 68 69 // Java-only methods below. 70 adjustSuggestedStreamVolume(int direction, int suggestedStreamType, int flags, String callingPackage, String caller)71 oneway void adjustSuggestedStreamVolume(int direction, int suggestedStreamType, int flags, 72 String callingPackage, String caller); 73 adjustStreamVolume(int streamType, int direction, int flags, String callingPackage)74 void adjustStreamVolume(int streamType, int direction, int flags, String callingPackage); 75 76 @UnsupportedAppUsage setStreamVolume(int streamType, int index, int flags, String callingPackage)77 void setStreamVolume(int streamType, int index, int flags, String callingPackage); 78 isStreamMute(int streamType)79 boolean isStreamMute(int streamType); 80 forceRemoteSubmixFullVolume(boolean startForcing, IBinder cb)81 void forceRemoteSubmixFullVolume(boolean startForcing, IBinder cb); 82 isMasterMute()83 boolean isMasterMute(); 84 setMasterMute(boolean mute, int flags, String callingPackage, int userId)85 void setMasterMute(boolean mute, int flags, String callingPackage, int userId); 86 87 @UnsupportedAppUsage getStreamVolume(int streamType)88 int getStreamVolume(int streamType); 89 getStreamMinVolume(int streamType)90 int getStreamMinVolume(int streamType); 91 92 @UnsupportedAppUsage getStreamMaxVolume(int streamType)93 int getStreamMaxVolume(int streamType); 94 getAudioVolumeGroups()95 List<AudioVolumeGroup> getAudioVolumeGroups(); 96 setVolumeIndexForAttributes(in AudioAttributes aa, int index, int flags, String callingPackage)97 void setVolumeIndexForAttributes(in AudioAttributes aa, int index, int flags, String callingPackage); 98 getVolumeIndexForAttributes(in AudioAttributes aa)99 int getVolumeIndexForAttributes(in AudioAttributes aa); 100 getMaxVolumeIndexForAttributes(in AudioAttributes aa)101 int getMaxVolumeIndexForAttributes(in AudioAttributes aa); 102 getMinVolumeIndexForAttributes(in AudioAttributes aa)103 int getMinVolumeIndexForAttributes(in AudioAttributes aa); 104 getLastAudibleStreamVolume(int streamType)105 int getLastAudibleStreamVolume(int streamType); 106 getAudioProductStrategies()107 List<AudioProductStrategy> getAudioProductStrategies(); 108 setMicrophoneMute(boolean on, String callingPackage, int userId)109 void setMicrophoneMute(boolean on, String callingPackage, int userId); 110 setRingerModeExternal(int ringerMode, String caller)111 void setRingerModeExternal(int ringerMode, String caller); 112 setRingerModeInternal(int ringerMode, String caller)113 void setRingerModeInternal(int ringerMode, String caller); 114 getRingerModeExternal()115 int getRingerModeExternal(); 116 getRingerModeInternal()117 int getRingerModeInternal(); 118 isValidRingerMode(int ringerMode)119 boolean isValidRingerMode(int ringerMode); 120 setVibrateSetting(int vibrateType, int vibrateSetting)121 void setVibrateSetting(int vibrateType, int vibrateSetting); 122 getVibrateSetting(int vibrateType)123 int getVibrateSetting(int vibrateType); 124 shouldVibrate(int vibrateType)125 boolean shouldVibrate(int vibrateType); 126 setMode(int mode, IBinder cb, String callingPackage)127 void setMode(int mode, IBinder cb, String callingPackage); 128 getMode()129 int getMode(); 130 playSoundEffect(int effectType)131 oneway void playSoundEffect(int effectType); 132 playSoundEffectVolume(int effectType, float volume)133 oneway void playSoundEffectVolume(int effectType, float volume); 134 loadSoundEffects()135 boolean loadSoundEffects(); 136 unloadSoundEffects()137 oneway void unloadSoundEffects(); 138 reloadAudioSettings()139 oneway void reloadAudioSettings(); 140 avrcpSupportsAbsoluteVolume(String address, boolean support)141 oneway void avrcpSupportsAbsoluteVolume(String address, boolean support); 142 setSpeakerphoneOn(boolean on)143 void setSpeakerphoneOn(boolean on); 144 isSpeakerphoneOn()145 boolean isSpeakerphoneOn(); 146 setBluetoothScoOn(boolean on)147 void setBluetoothScoOn(boolean on); 148 isBluetoothScoOn()149 boolean isBluetoothScoOn(); 150 setBluetoothA2dpOn(boolean on)151 void setBluetoothA2dpOn(boolean on); 152 isBluetoothA2dpOn()153 boolean isBluetoothA2dpOn(); 154 requestAudioFocus(in AudioAttributes aa, int durationHint, IBinder cb, IAudioFocusDispatcher fd, String clientId, String callingPackageName, int flags, IAudioPolicyCallback pcb, int sdk)155 int requestAudioFocus(in AudioAttributes aa, int durationHint, IBinder cb, 156 IAudioFocusDispatcher fd, String clientId, String callingPackageName, int flags, 157 IAudioPolicyCallback pcb, int sdk); 158 abandonAudioFocus(IAudioFocusDispatcher fd, String clientId, in AudioAttributes aa, in String callingPackageName)159 int abandonAudioFocus(IAudioFocusDispatcher fd, String clientId, in AudioAttributes aa, 160 in String callingPackageName); 161 unregisterAudioFocusClient(String clientId)162 void unregisterAudioFocusClient(String clientId); 163 getCurrentAudioFocus()164 int getCurrentAudioFocus(); 165 startBluetoothSco(IBinder cb, int targetSdkVersion)166 void startBluetoothSco(IBinder cb, int targetSdkVersion); startBluetoothScoVirtualCall(IBinder cb)167 void startBluetoothScoVirtualCall(IBinder cb); stopBluetoothSco(IBinder cb)168 void stopBluetoothSco(IBinder cb); 169 forceVolumeControlStream(int streamType, IBinder cb)170 void forceVolumeControlStream(int streamType, IBinder cb); 171 setRingtonePlayer(IRingtonePlayer player)172 void setRingtonePlayer(IRingtonePlayer player); getRingtonePlayer()173 IRingtonePlayer getRingtonePlayer(); getUiSoundsStreamType()174 int getUiSoundsStreamType(); 175 setWiredDeviceConnectionState(int type, int state, String address, String name, String caller)176 void setWiredDeviceConnectionState(int type, int state, String address, String name, 177 String caller); 178 handleBluetoothA2dpDeviceConfigChange(in BluetoothDevice device)179 void handleBluetoothA2dpDeviceConfigChange(in BluetoothDevice device); 180 181 @UnsupportedAppUsage startWatchingRoutes(in IAudioRoutesObserver observer)182 AudioRoutesInfo startWatchingRoutes(in IAudioRoutesObserver observer); 183 isCameraSoundForced()184 boolean isCameraSoundForced(); 185 setVolumeController(in IVolumeController controller)186 void setVolumeController(in IVolumeController controller); 187 notifyVolumeControllerVisible(in IVolumeController controller, boolean visible)188 void notifyVolumeControllerVisible(in IVolumeController controller, boolean visible); 189 isStreamAffectedByRingerMode(int streamType)190 boolean isStreamAffectedByRingerMode(int streamType); 191 isStreamAffectedByMute(int streamType)192 boolean isStreamAffectedByMute(int streamType); 193 disableSafeMediaVolume(String callingPackage)194 void disableSafeMediaVolume(String callingPackage); 195 setHdmiSystemAudioSupported(boolean on)196 int setHdmiSystemAudioSupported(boolean on); 197 isHdmiSystemAudioSupported()198 boolean isHdmiSystemAudioSupported(); 199 registerAudioPolicy(in AudioPolicyConfig policyConfig, in IAudioPolicyCallback pcb, boolean hasFocusListener, boolean isFocusPolicy, boolean isTestFocusPolicy, boolean isVolumeController, in IMediaProjection projection)200 String registerAudioPolicy(in AudioPolicyConfig policyConfig, 201 in IAudioPolicyCallback pcb, boolean hasFocusListener, boolean isFocusPolicy, 202 boolean isTestFocusPolicy, 203 boolean isVolumeController, in IMediaProjection projection); 204 unregisterAudioPolicyAsync(in IAudioPolicyCallback pcb)205 oneway void unregisterAudioPolicyAsync(in IAudioPolicyCallback pcb); 206 unregisterAudioPolicy(in IAudioPolicyCallback pcb)207 void unregisterAudioPolicy(in IAudioPolicyCallback pcb); 208 addMixForPolicy(in AudioPolicyConfig policyConfig, in IAudioPolicyCallback pcb)209 int addMixForPolicy(in AudioPolicyConfig policyConfig, in IAudioPolicyCallback pcb); 210 removeMixForPolicy(in AudioPolicyConfig policyConfig, in IAudioPolicyCallback pcb)211 int removeMixForPolicy(in AudioPolicyConfig policyConfig, in IAudioPolicyCallback pcb); 212 setFocusPropertiesForPolicy(int duckingBehavior, in IAudioPolicyCallback pcb)213 int setFocusPropertiesForPolicy(int duckingBehavior, in IAudioPolicyCallback pcb); 214 setVolumePolicy(in VolumePolicy policy)215 void setVolumePolicy(in VolumePolicy policy); 216 hasRegisteredDynamicPolicy()217 boolean hasRegisteredDynamicPolicy(); 218 registerRecordingCallback(in IRecordingConfigDispatcher rcdb)219 void registerRecordingCallback(in IRecordingConfigDispatcher rcdb); 220 unregisterRecordingCallback(in IRecordingConfigDispatcher rcdb)221 oneway void unregisterRecordingCallback(in IRecordingConfigDispatcher rcdb); 222 getActiveRecordingConfigurations()223 List<AudioRecordingConfiguration> getActiveRecordingConfigurations(); 224 registerPlaybackCallback(in IPlaybackConfigDispatcher pcdb)225 void registerPlaybackCallback(in IPlaybackConfigDispatcher pcdb); 226 unregisterPlaybackCallback(in IPlaybackConfigDispatcher pcdb)227 oneway void unregisterPlaybackCallback(in IPlaybackConfigDispatcher pcdb); 228 getActivePlaybackConfigurations()229 List<AudioPlaybackConfiguration> getActivePlaybackConfigurations(); 230 disableRingtoneSync(in int userId)231 void disableRingtoneSync(in int userId); 232 getFocusRampTimeMs(in int focusGain, in AudioAttributes attr)233 int getFocusRampTimeMs(in int focusGain, in AudioAttributes attr); 234 dispatchFocusChange(in AudioFocusInfo afi, in int focusChange, in IAudioPolicyCallback pcb)235 int dispatchFocusChange(in AudioFocusInfo afi, in int focusChange, 236 in IAudioPolicyCallback pcb); 237 playerHasOpPlayAudio(in int piid, in boolean hasOpPlayAudio)238 oneway void playerHasOpPlayAudio(in int piid, in boolean hasOpPlayAudio); 239 setBluetoothHearingAidDeviceConnectionState(in BluetoothDevice device, int state, boolean suppressNoisyIntent, int musicDevice)240 void setBluetoothHearingAidDeviceConnectionState(in BluetoothDevice device, 241 int state, boolean suppressNoisyIntent, int musicDevice); 242 setBluetoothA2dpDeviceConnectionStateSuppressNoisyIntent(in BluetoothDevice device, int state, int profile, boolean suppressNoisyIntent, int a2dpVolume)243 void setBluetoothA2dpDeviceConnectionStateSuppressNoisyIntent(in BluetoothDevice device, 244 int state, int profile, boolean suppressNoisyIntent, int a2dpVolume); 245 setFocusRequestResultFromExtPolicy(in AudioFocusInfo afi, int requestResult, in IAudioPolicyCallback pcb)246 oneway void setFocusRequestResultFromExtPolicy(in AudioFocusInfo afi, int requestResult, 247 in IAudioPolicyCallback pcb); 248 registerAudioServerStateDispatcher(IAudioServerStateDispatcher asd)249 void registerAudioServerStateDispatcher(IAudioServerStateDispatcher asd); 250 unregisterAudioServerStateDispatcher(IAudioServerStateDispatcher asd)251 oneway void unregisterAudioServerStateDispatcher(IAudioServerStateDispatcher asd); 252 isAudioServerRunning()253 boolean isAudioServerRunning(); 254 setUidDeviceAffinity(in IAudioPolicyCallback pcb, in int uid, in int[] deviceTypes, in String[] deviceAddresses)255 int setUidDeviceAffinity(in IAudioPolicyCallback pcb, in int uid, in int[] deviceTypes, 256 in String[] deviceAddresses); 257 removeUidDeviceAffinity(in IAudioPolicyCallback pcb, in int uid)258 int removeUidDeviceAffinity(in IAudioPolicyCallback pcb, in int uid); 259 hasHapticChannels(in Uri uri)260 boolean hasHapticChannels(in Uri uri); 261 262 // WARNING: read warning at top of file, new methods that need to be used by native 263 // code via IAudioManager.h need to be added to the top section. 264 } 265