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