19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.media; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 19f0cff0456258478ba768097f73d4367ab67fd7a3Jean-Michel Triviimport android.app.PendingIntent; 20b1fbaaccb656ef09a8770c28df15e3e91a452e64Eric Laurentimport android.bluetooth.BluetoothDevice; 21d327f21626217aa3c9c0cdb7a84a742c531e59a3Jean-Michel Triviimport android.content.ComponentName; 22fd6ad747e6c268753d0edf7a5a59b6815b190854Jean-Michel Triviimport android.media.AudioAttributes; 23598c0c9f659184971e974de6a0184a3000e7900cJean-Michel Triviimport android.media.AudioRecordingConfiguration; 24632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackbornimport android.media.AudioRoutesInfo; 25d5176cfe6eae954e9cef1e2ec17859a5089e1330Jean-Michel Triviimport android.media.IAudioFocusDispatcher; 26632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackbornimport android.media.IAudioRoutesObserver; 27d3c71f075b139024e2bea39bbd75e3b976bfb7cbJean-Michel Triviimport android.media.IRecordingConfigDispatcher; 28098d580cc2bb6c0891c756a4e5230c6c6b0d2376Jeff Sharkeyimport android.media.IRingtonePlayer; 293346a802087f621c6441bc512dfcc17b07143fc6John Spurlockimport android.media.IVolumeController; 307ddd226e7c6e759feaf2747a90be1cc06acf37a3Jean-Michel Triviimport android.media.Rating; 31a48d779dad4c48aa2f97ad021ae3a5649c058312John Spurlockimport android.media.VolumePolicy; 32a8b6bd88cfb010c9e9aa1339e504fd593919e1e0Jean-Michel Triviimport android.media.audiopolicy.AudioPolicyConfig; 330212be5150fb9fb3c340f3c7e51f6126372cc6f9Jean-Michel Triviimport android.media.audiopolicy.IAudioPolicyCallback; 34098d580cc2bb6c0891c756a4e5230c6c6b0d2376Jeff Sharkeyimport android.net.Uri; 35c68022258ebd3dd97a5079ba99f4f3cd12b223b0Jean-Michel Triviimport android.view.KeyEvent; 36d5176cfe6eae954e9cef1e2ec17859a5089e1330Jean-Michel Trivi 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide} 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectinterface IAudioService { 4168d6dedcc3a7d7ceaad297e59248332eb900113cJean-Michel Trivi 42a38e1f4ed997bea3cbfbf8094a52c23570d59d2aDongwon Kang oneway void adjustSuggestedStreamVolume(int direction, int suggestedStreamType, int flags, 439087433753a5068819dcd3e86bdc2cce82bb8040John Spurlock String callingPackage, String caller); 44dff25597a9a862143c69e70e6ed86790538c23c1Mike Lockwood 45ba50b97cff80e73620a0e3d13cae169e095974a7Dianne Hackborn void adjustStreamVolume(int streamType, int direction, int flags, String callingPackage); 46dff25597a9a862143c69e70e6ed86790538c23c1Mike Lockwood 47ba50b97cff80e73620a0e3d13cae169e095974a7Dianne Hackborn void setStreamVolume(int streamType, int index, int flags, String callingPackage); 48a2aa08e20cb4f1e302bb7ae05882cd1be8cfa0d2Mike Lockwood 4925101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent boolean isStreamMute(int streamType); 5025101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent 51ba5270b88798c66fefc17a1b25b27894e4fb7862Jean-Michel Trivi void forceRemoteSubmixFullVolume(boolean startForcing, IBinder cb); 52ba5270b88798c66fefc17a1b25b27894e4fb7862Jean-Michel Trivi 53cfbcd3bf21c8453e9afd7740fdb7fc272c362389Mike Lockwood boolean isMasterMute(); 54cfbcd3bf21c8453e9afd7740fdb7fc272c362389Mike Lockwood 5570e0c58c2269cd29dfd6420d690da13dc03fd457Kenny Guy void setMasterMute(boolean mute, int flags, String callingPackage, int userId); 565020e7e2d37865da862846b97d9959e83244a35eMike Lockwood 57ee5ad729b90deff435f9875337cbc434be4f8fe7John Spurlock int getStreamVolume(int streamType); 585020e7e2d37865da862846b97d9959e83244a35eMike Lockwood 59b6e19e3e0f0170d058636101e23f964196f6f4b2John Spurlock int getStreamMinVolume(int streamType); 60b6e19e3e0f0170d058636101e23f964196f6f4b2John Spurlock 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int getStreamMaxVolume(int streamType); 62a2aa08e20cb4f1e302bb7ae05882cd1be8cfa0d2Mike Lockwood 6325101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent int getLastAudibleStreamVolume(int streamType); 6425101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent 6570e0c58c2269cd29dfd6420d690da13dc03fd457Kenny Guy void setMicrophoneMute(boolean on, String callingPackage, int userId); 6622c921a910d236abf3a1705a02541a49fdaf3a14Emily Bernier 67661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlock void setRingerModeExternal(int ringerMode, String caller); 6868d6dedcc3a7d7ceaad297e59248332eb900113cJean-Michel Trivi 69661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlock void setRingerModeInternal(int ringerMode, String caller); 70661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlock 71661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlock int getRingerModeExternal(); 72661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlock 73661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlock int getRingerModeInternal(); 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 759755937ed90f06db45ff5fe4510950ae1516f8f9John Spurlock boolean isValidRingerMode(int ringerMode); 769755937ed90f06db45ff5fe4510950ae1516f8f9John Spurlock 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setVibrateSetting(int vibrateType, int vibrateSetting); 7868d6dedcc3a7d7ceaad297e59248332eb900113cJean-Michel Trivi 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int getVibrateSetting(int vibrateType); 8068d6dedcc3a7d7ceaad297e59248332eb900113cJean-Michel Trivi 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean shouldVibrate(int vibrateType); 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 839087433753a5068819dcd3e86bdc2cce82bb8040John Spurlock void setMode(int mode, IBinder cb, String callingPackage); 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int getMode(); 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project oneway void playSoundEffect(int effectType); 8868d6dedcc3a7d7ceaad297e59248332eb900113cJean-Michel Trivi 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project oneway void playSoundEffectVolume(int effectType, float volume); 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean loadSoundEffects(); 9268d6dedcc3a7d7ceaad297e59248332eb900113cJean-Michel Trivi 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project oneway void unloadSoundEffects(); 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 954050c93601b3c3609b21cc1e18a29b64747e7fa9Eric Laurent oneway void reloadAudioSettings(); 96c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent 975a0cf7a27f3953a1266af48543ccd9024f4cd89fJohn Du oneway void avrcpSupportsAbsoluteVolume(String address, boolean support); 985a0cf7a27f3953a1266af48543ccd9024f4cd89fJohn Du 99c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent void setSpeakerphoneOn(boolean on); 100c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent 101c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent boolean isSpeakerphoneOn(); 102c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent 103c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent void setBluetoothScoOn(boolean on); 104c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent 105c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent boolean isBluetoothScoOn(); 106d5176cfe6eae954e9cef1e2ec17859a5089e1330Jean-Michel Trivi 1074ab22bb7d0aafce1be200153d71d432c9d54e04aEric Laurent void setBluetoothA2dpOn(boolean on); 1087847211fb4699bf6018e29d214a918ed6657319bEric Laurent 1097847211fb4699bf6018e29d214a918ed6657319bEric Laurent boolean isBluetoothA2dpOn(); 1107847211fb4699bf6018e29d214a918ed6657319bEric Laurent 111fd6ad747e6c268753d0edf7a5a59b6815b190854Jean-Michel Trivi int requestAudioFocus(in AudioAttributes aa, int durationHint, IBinder cb, 112958876fe55ea0fdeb73c72240a2f2bab32833443Jean-Michel Trivi IAudioFocusDispatcher fd, String clientId, String callingPackageName, int flags, 1130212be5150fb9fb3c340f3c7e51f6126372cc6f9Jean-Michel Trivi IAudioPolicyCallback pcb); 114d5176cfe6eae954e9cef1e2ec17859a5089e1330Jean-Michel Trivi 115958876fe55ea0fdeb73c72240a2f2bab32833443Jean-Michel Trivi int abandonAudioFocus(IAudioFocusDispatcher fd, String clientId, in AudioAttributes aa); 11668d6dedcc3a7d7ceaad297e59248332eb900113cJean-Michel Trivi 117d327f21626217aa3c9c0cdb7a84a742c531e59a3Jean-Michel Trivi void unregisterAudioFocusClient(String clientId); 118d327f21626217aa3c9c0cdb7a84a742c531e59a3Jean-Michel Trivi 1192380566debfc57eb1cc07db1306ccee23b84ddd4Jean-Michel Trivi int getCurrentAudioFocus(); 1202380566debfc57eb1cc07db1306ccee23b84ddd4Jean-Michel Trivi 121c18c9138cee0f0859bcab636a004ce92ca4a9ab5Eric Laurent void startBluetoothSco(IBinder cb, int targetSdkVersion); 12283900754f357616b9e56eaf7fc85f49b8906e987Eric Laurent void startBluetoothScoVirtualCall(IBinder cb); 1233def1eec2baed0b8845ec32c871e249dc533a9d9Eric Laurent void stopBluetoothSco(IBinder cb); 12445c90cefd13a03b852bb4b8da4be218876cbbb32Eric Laurent 12545c90cefd13a03b852bb4b8da4be218876cbbb32Eric Laurent void forceVolumeControlStream(int streamType, IBinder cb); 1266d5176638c2189595cede38fb92c3e7e8700e221Eric Laurent 127098d580cc2bb6c0891c756a4e5230c6c6b0d2376Jeff Sharkey void setRingtonePlayer(IRingtonePlayer player); 128098d580cc2bb6c0891c756a4e5230c6c6b0d2376Jeff Sharkey IRingtonePlayer getRingtonePlayer(); 129ee5ad729b90deff435f9875337cbc434be4f8fe7John Spurlock int getUiSoundsStreamType(); 130b1fbaaccb656ef09a8770c28df15e3e91a452e64Eric Laurent 1319087433753a5068819dcd3e86bdc2cce82bb8040John Spurlock void setWiredDeviceConnectionState(int type, int state, String address, String name, 1329087433753a5068819dcd3e86bdc2cce82bb8040John Spurlock String caller); 1339087433753a5068819dcd3e86bdc2cce82bb8040John Spurlock 1340a40ec2192e4836b2fcb6ba51a7688aa6bd4ee98Mike Lockwood int setBluetoothA2dpDeviceConnectionState(in BluetoothDevice device, int state, int profile); 135632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn 136632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn AudioRoutesInfo startWatchingRoutes(in IAudioRoutesObserver observer); 137dd45d01128423a82652a3c9d77fa393631d95229Eric Laurent 138dd45d01128423a82652a3c9d77fa393631d95229Eric Laurent boolean isCameraSoundForced(); 1393346a802087f621c6441bc512dfcc17b07143fc6John Spurlock 1403346a802087f621c6441bc512dfcc17b07143fc6John Spurlock void setVolumeController(in IVolumeController controller); 1413346a802087f621c6441bc512dfcc17b07143fc6John Spurlock 14233f4e04e32fac42f158733d6a731e50490fa9951John Spurlock void notifyVolumeControllerVisible(in IVolumeController controller, boolean visible); 14333f4e04e32fac42f158733d6a731e50490fa9951John Spurlock 1443346a802087f621c6441bc512dfcc17b07143fc6John Spurlock boolean isStreamAffectedByRingerMode(int streamType); 1453346a802087f621c6441bc512dfcc17b07143fc6John Spurlock 146a9dfbe8b122d746cf8841fe1b13d31e7e0fc9c52John Spurlock boolean isStreamAffectedByMute(int streamType); 147a9dfbe8b122d746cf8841fe1b13d31e7e0fc9c52John Spurlock 1489087433753a5068819dcd3e86bdc2cce82bb8040John Spurlock void disableSafeMediaVolume(String callingPackage); 14941d974631c5f525da49c88d34cecedd5a4cfeda8Jungshik Jang 15012307ca810e8100981b2b60e3f2c6a7e451b9774Jungshik Jang int setHdmiSystemAudioSupported(boolean on); 151a8b6bd88cfb010c9e9aa1339e504fd593919e1e0Jean-Michel Trivi 152e7d6d97f0d95b9e8982b0d4d9f5e8ce688291940Terry Heo boolean isHdmiSystemAudioSupported(); 153e7d6d97f0d95b9e8982b0d4d9f5e8ce688291940Terry Heo 154a48d779dad4c48aa2f97ad021ae3a5649c058312John Spurlock String registerAudioPolicy(in AudioPolicyConfig policyConfig, 155a48d779dad4c48aa2f97ad021ae3a5649c058312John Spurlock in IAudioPolicyCallback pcb, boolean hasFocusListener); 156a48d779dad4c48aa2f97ad021ae3a5649c058312John Spurlock 1570212be5150fb9fb3c340f3c7e51f6126372cc6f9Jean-Michel Trivi oneway void unregisterAudioPolicyAsync(in IAudioPolicyCallback pcb); 1580212be5150fb9fb3c340f3c7e51f6126372cc6f9Jean-Michel Trivi 159a48d779dad4c48aa2f97ad021ae3a5649c058312John Spurlock int setFocusPropertiesForPolicy(int duckingBehavior, in IAudioPolicyCallback pcb); 160a48d779dad4c48aa2f97ad021ae3a5649c058312John Spurlock 161a48d779dad4c48aa2f97ad021ae3a5649c058312John Spurlock void setVolumePolicy(in VolumePolicy policy); 162d3c71f075b139024e2bea39bbd75e3b976bfb7cbJean-Michel Trivi 163d3c71f075b139024e2bea39bbd75e3b976bfb7cbJean-Michel Trivi void registerRecordingCallback(in IRecordingConfigDispatcher rcdb); 164d3c71f075b139024e2bea39bbd75e3b976bfb7cbJean-Michel Trivi 165d3c71f075b139024e2bea39bbd75e3b976bfb7cbJean-Michel Trivi oneway void unregisterRecordingCallback(in IRecordingConfigDispatcher rcdb); 166d3c71f075b139024e2bea39bbd75e3b976bfb7cbJean-Michel Trivi 167f04fab160a044e4e7d936c0457a156d7911f924cJean-Michel Trivi List<AudioRecordingConfiguration> getActiveRecordingConfigurations(); 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 169