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;
23632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackbornimport android.media.AudioRoutesInfo;
24d5176cfe6eae954e9cef1e2ec17859a5089e1330Jean-Michel Triviimport android.media.IAudioFocusDispatcher;
25632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackbornimport android.media.IAudioRoutesObserver;
264426e42ac6107bf6b09f7c4cdad39eb161d8b9caJean-Michel Triviimport android.media.IRemoteControlClient;
274426e42ac6107bf6b09f7c4cdad39eb161d8b9caJean-Michel Triviimport android.media.IRemoteControlDisplay;
281357012968f9066ea3051d83995e9bac69526c3cJean-Michel Triviimport android.media.IRemoteVolumeObserver;
29098d580cc2bb6c0891c756a4e5230c6c6b0d2376Jeff Sharkeyimport android.media.IRingtonePlayer;
303346a802087f621c6441bc512dfcc17b07143fc6John Spurlockimport android.media.IVolumeController;
317ddd226e7c6e759feaf2747a90be1cc06acf37a3Jean-Michel Triviimport android.media.Rating;
32a48d779dad4c48aa2f97ad021ae3a5649c058312John Spurlockimport android.media.VolumePolicy;
33a8b6bd88cfb010c9e9aa1339e504fd593919e1e0Jean-Michel Triviimport android.media.audiopolicy.AudioPolicyConfig;
340212be5150fb9fb3c340f3c7e51f6126372cc6f9Jean-Michel Triviimport android.media.audiopolicy.IAudioPolicyCallback;
35098d580cc2bb6c0891c756a4e5230c6c6b0d2376Jeff Sharkeyimport android.net.Uri;
36c68022258ebd3dd97a5079ba99f4f3cd12b223b0Jean-Michel Triviimport android.view.KeyEvent;
37d5176cfe6eae954e9cef1e2ec17859a5089e1330Jean-Michel Trivi
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide}
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectinterface IAudioService {
4268d6dedcc3a7d7ceaad297e59248332eb900113cJean-Michel Trivi
43a38e1f4ed997bea3cbfbf8094a52c23570d59d2aDongwon Kang    oneway void adjustSuggestedStreamVolume(int direction, int suggestedStreamType, int flags,
449087433753a5068819dcd3e86bdc2cce82bb8040John Spurlock            String callingPackage, String caller);
45dff25597a9a862143c69e70e6ed86790538c23c1Mike Lockwood
46ba50b97cff80e73620a0e3d13cae169e095974a7Dianne Hackborn    void adjustStreamVolume(int streamType, int direction, int flags, String callingPackage);
47dff25597a9a862143c69e70e6ed86790538c23c1Mike Lockwood
48ba50b97cff80e73620a0e3d13cae169e095974a7Dianne Hackborn    void setStreamVolume(int streamType, int index, int flags, String callingPackage);
49a2aa08e20cb4f1e302bb7ae05882cd1be8cfa0d2Mike Lockwood
503114ce3861f20f9a5c2c59dd2629197a1f4874a8Jean-Michel Trivi    oneway void setRemoteStreamVolume(int index);
513114ce3861f20f9a5c2c59dd2629197a1f4874a8Jean-Michel Trivi
5225101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent    boolean isStreamMute(int streamType);
5325101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent
54ba5270b88798c66fefc17a1b25b27894e4fb7862Jean-Michel Trivi    void forceRemoteSubmixFullVolume(boolean startForcing, IBinder cb);
55ba5270b88798c66fefc17a1b25b27894e4fb7862Jean-Michel Trivi
56cfbcd3bf21c8453e9afd7740fdb7fc272c362389Mike Lockwood    boolean isMasterMute();
57cfbcd3bf21c8453e9afd7740fdb7fc272c362389Mike Lockwood
5870e0c58c2269cd29dfd6420d690da13dc03fd457Kenny Guy    void setMasterMute(boolean mute, int flags, String callingPackage, int userId);
595020e7e2d37865da862846b97d9959e83244a35eMike Lockwood
60ee5ad729b90deff435f9875337cbc434be4f8fe7John Spurlock    int getStreamVolume(int streamType);
615020e7e2d37865da862846b97d9959e83244a35eMike Lockwood
62b6e19e3e0f0170d058636101e23f964196f6f4b2John Spurlock    int getStreamMinVolume(int streamType);
63b6e19e3e0f0170d058636101e23f964196f6f4b2John Spurlock
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getStreamMaxVolume(int streamType);
65a2aa08e20cb4f1e302bb7ae05882cd1be8cfa0d2Mike Lockwood
6625101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent    int getLastAudibleStreamVolume(int streamType);
6725101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent
6870e0c58c2269cd29dfd6420d690da13dc03fd457Kenny Guy    void setMicrophoneMute(boolean on, String callingPackage, int userId);
6922c921a910d236abf3a1705a02541a49fdaf3a14Emily Bernier
70661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlock    void setRingerModeExternal(int ringerMode, String caller);
7168d6dedcc3a7d7ceaad297e59248332eb900113cJean-Michel Trivi
72661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlock    void setRingerModeInternal(int ringerMode, String caller);
73661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlock
74661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlock    int getRingerModeExternal();
75661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlock
76661f2cf45860d2e10924e6b69966a9afe255f28bJohn Spurlock    int getRingerModeInternal();
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
789755937ed90f06db45ff5fe4510950ae1516f8f9John Spurlock    boolean isValidRingerMode(int ringerMode);
799755937ed90f06db45ff5fe4510950ae1516f8f9John Spurlock
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setVibrateSetting(int vibrateType, int vibrateSetting);
8168d6dedcc3a7d7ceaad297e59248332eb900113cJean-Michel Trivi
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getVibrateSetting(int vibrateType);
8368d6dedcc3a7d7ceaad297e59248332eb900113cJean-Michel Trivi
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean shouldVibrate(int vibrateType);
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
869087433753a5068819dcd3e86bdc2cce82bb8040John Spurlock    void setMode(int mode, IBinder cb, String callingPackage);
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getMode();
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    oneway void playSoundEffect(int effectType);
9168d6dedcc3a7d7ceaad297e59248332eb900113cJean-Michel Trivi
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    oneway void playSoundEffectVolume(int effectType, float volume);
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean loadSoundEffects();
9568d6dedcc3a7d7ceaad297e59248332eb900113cJean-Michel Trivi
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    oneway void unloadSoundEffects();
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
984050c93601b3c3609b21cc1e18a29b64747e7fa9Eric Laurent    oneway void reloadAudioSettings();
99c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent
1005a0cf7a27f3953a1266af48543ccd9024f4cd89fJohn Du    oneway void avrcpSupportsAbsoluteVolume(String address, boolean support);
1015a0cf7a27f3953a1266af48543ccd9024f4cd89fJohn Du
102c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent    void setSpeakerphoneOn(boolean on);
103c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent
104c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent    boolean isSpeakerphoneOn();
105c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent
106c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent    void setBluetoothScoOn(boolean on);
107c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent
108c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent    boolean isBluetoothScoOn();
109d5176cfe6eae954e9cef1e2ec17859a5089e1330Jean-Michel Trivi
1104ab22bb7d0aafce1be200153d71d432c9d54e04aEric Laurent    void setBluetoothA2dpOn(boolean on);
1117847211fb4699bf6018e29d214a918ed6657319bEric Laurent
1127847211fb4699bf6018e29d214a918ed6657319bEric Laurent    boolean isBluetoothA2dpOn();
1137847211fb4699bf6018e29d214a918ed6657319bEric Laurent
114fd6ad747e6c268753d0edf7a5a59b6815b190854Jean-Michel Trivi    int requestAudioFocus(in AudioAttributes aa, int durationHint, IBinder cb,
115958876fe55ea0fdeb73c72240a2f2bab32833443Jean-Michel Trivi            IAudioFocusDispatcher fd, String clientId, String callingPackageName, int flags,
1160212be5150fb9fb3c340f3c7e51f6126372cc6f9Jean-Michel Trivi            IAudioPolicyCallback pcb);
117d5176cfe6eae954e9cef1e2ec17859a5089e1330Jean-Michel Trivi
118958876fe55ea0fdeb73c72240a2f2bab32833443Jean-Michel Trivi    int abandonAudioFocus(IAudioFocusDispatcher fd, String clientId, in AudioAttributes aa);
11968d6dedcc3a7d7ceaad297e59248332eb900113cJean-Michel Trivi
120d327f21626217aa3c9c0cdb7a84a742c531e59a3Jean-Michel Trivi    void unregisterAudioFocusClient(String clientId);
121d327f21626217aa3c9c0cdb7a84a742c531e59a3Jean-Michel Trivi
1222380566debfc57eb1cc07db1306ccee23b84ddd4Jean-Michel Trivi    int getCurrentAudioFocus();
1232380566debfc57eb1cc07db1306ccee23b84ddd4Jean-Michel Trivi
1244a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi    /**
1254a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     * Register an IRemoteControlDisplay.
126f108cdd9ee5efe354d87edd02a07b323298c116cJean-Michel Trivi     * Success of registration is subject to a check on
127f108cdd9ee5efe354d87edd02a07b323298c116cJean-Michel Trivi     *   the android.Manifest.permission.MEDIA_CONTENT_CONTROL permission.
1284a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     * Notify all IRemoteControlClient of the new display and cause the RemoteControlClient
1294a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     * at the top of the stack to update the new display with its information.
1304a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     * @param rcd the IRemoteControlDisplay to register. No effect if null.
1314a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     * @param w the maximum width of the expected bitmap. Negative or zero values indicate this
1324a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     *   display doesn't need to receive artwork.
1334a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     * @param h the maximum height of the expected bitmap. Negative or zero values indicate this
1344a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     *   display doesn't need to receive artwork.
1354a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     */
1367ddd226e7c6e759feaf2747a90be1cc06acf37a3Jean-Michel Trivi    boolean registerRemoteControlDisplay(in IRemoteControlDisplay rcd, int w, int h);
137f108cdd9ee5efe354d87edd02a07b323298c116cJean-Michel Trivi
138f108cdd9ee5efe354d87edd02a07b323298c116cJean-Michel Trivi    /**
139f108cdd9ee5efe354d87edd02a07b323298c116cJean-Michel Trivi     * Like registerRemoteControlDisplay, but with success being subject to a check on
140f108cdd9ee5efe354d87edd02a07b323298c116cJean-Michel Trivi     *   the android.Manifest.permission.MEDIA_CONTENT_CONTROL permission, and if it fails,
141f108cdd9ee5efe354d87edd02a07b323298c116cJean-Michel Trivi     *   success is subject to listenerComp being one of the ENABLED_NOTIFICATION_LISTENERS
142f108cdd9ee5efe354d87edd02a07b323298c116cJean-Michel Trivi     *   components.
143f108cdd9ee5efe354d87edd02a07b323298c116cJean-Michel Trivi     */
144f108cdd9ee5efe354d87edd02a07b323298c116cJean-Michel Trivi    boolean registerRemoteController(in IRemoteControlDisplay rcd, int w, int h,
145f108cdd9ee5efe354d87edd02a07b323298c116cJean-Michel Trivi            in ComponentName listenerComp);
146f108cdd9ee5efe354d87edd02a07b323298c116cJean-Michel Trivi
1474a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi    /**
1484a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     * Unregister an IRemoteControlDisplay.
1494a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     * No effect if the IRemoteControlDisplay hasn't been successfully registered.
1504a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     * @param rcd the IRemoteControlDisplay to unregister. No effect if null.
1514a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     */
1524426e42ac6107bf6b09f7c4cdad39eb161d8b9caJean-Michel Trivi    oneway void unregisterRemoteControlDisplay(in IRemoteControlDisplay rcd);
1534a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi    /**
1544a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     * Update the size of the artwork used by an IRemoteControlDisplay.
1554a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     * @param rcd the IRemoteControlDisplay with the new artwork size requirement
1564a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     * @param w the maximum width of the expected bitmap. Negative or zero values indicate this
1574a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     *   display doesn't need to receive artwork.
1584a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     * @param h the maximum height of the expected bitmap. Negative or zero values indicate this
1594a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     *   display doesn't need to receive artwork.
1604a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     */
1614426e42ac6107bf6b09f7c4cdad39eb161d8b9caJean-Michel Trivi    oneway void remoteControlDisplayUsesBitmapSize(in IRemoteControlDisplay rcd, int w, int h);
1623261b537c5fdec824575a1f6ad6d8942715e82e2Jean-Michel Trivi    /**
163c3c4babf8424f65b3d3d2700f60fae6e94e9cd00Jean-Michel Trivi     * Controls whether a remote control display needs periodic checks of the RemoteControlClient
164c3c4babf8424f65b3d3d2700f60fae6e94e9cd00Jean-Michel Trivi     * playback position to verify that the estimated position has not drifted from the actual
165c3c4babf8424f65b3d3d2700f60fae6e94e9cd00Jean-Michel Trivi     * position. By default the check is not performed.
166c3c4babf8424f65b3d3d2700f60fae6e94e9cd00Jean-Michel Trivi     * The IRemoteControlDisplay must have been previously registered for this to have any effect.
167c3c4babf8424f65b3d3d2700f60fae6e94e9cd00Jean-Michel Trivi     * @param rcd the IRemoteControlDisplay for which the anti-drift mechanism will be enabled
168c3c4babf8424f65b3d3d2700f60fae6e94e9cd00Jean-Michel Trivi     *     or disabled. Not null.
169c3c4babf8424f65b3d3d2700f60fae6e94e9cd00Jean-Michel Trivi     * @param wantsSync if true, RemoteControlClient instances which expose their playback position
170c3c4babf8424f65b3d3d2700f60fae6e94e9cd00Jean-Michel Trivi     *     to the framework will regularly compare the estimated playback position with the actual
171c3c4babf8424f65b3d3d2700f60fae6e94e9cd00Jean-Michel Trivi     *     position, and will update the IRemoteControlDisplay implementation whenever a drift is
172c3c4babf8424f65b3d3d2700f60fae6e94e9cd00Jean-Michel Trivi     *     detected.
173c3c4babf8424f65b3d3d2700f60fae6e94e9cd00Jean-Michel Trivi     */
174c3c4babf8424f65b3d3d2700f60fae6e94e9cd00Jean-Michel Trivi    oneway void remoteControlDisplayWantsPlaybackPositionSync(in IRemoteControlDisplay rcd,
175c3c4babf8424f65b3d3d2700f60fae6e94e9cd00Jean-Michel Trivi            boolean wantsSync);
1763114ce3861f20f9a5c2c59dd2629197a1f4874a8Jean-Michel Trivi
177c18c9138cee0f0859bcab636a004ce92ca4a9ab5Eric Laurent    void startBluetoothSco(IBinder cb, int targetSdkVersion);
17883900754f357616b9e56eaf7fc85f49b8906e987Eric Laurent    void startBluetoothScoVirtualCall(IBinder cb);
1793def1eec2baed0b8845ec32c871e249dc533a9d9Eric Laurent    void stopBluetoothSco(IBinder cb);
18045c90cefd13a03b852bb4b8da4be218876cbbb32Eric Laurent
18145c90cefd13a03b852bb4b8da4be218876cbbb32Eric Laurent    void forceVolumeControlStream(int streamType, IBinder cb);
1826d5176638c2189595cede38fb92c3e7e8700e221Eric Laurent
183098d580cc2bb6c0891c756a4e5230c6c6b0d2376Jeff Sharkey    void setRingtonePlayer(IRingtonePlayer player);
184098d580cc2bb6c0891c756a4e5230c6c6b0d2376Jeff Sharkey    IRingtonePlayer getRingtonePlayer();
185ee5ad729b90deff435f9875337cbc434be4f8fe7John Spurlock    int getUiSoundsStreamType();
186b1fbaaccb656ef09a8770c28df15e3e91a452e64Eric Laurent
1879087433753a5068819dcd3e86bdc2cce82bb8040John Spurlock    void setWiredDeviceConnectionState(int type, int state, String address, String name,
1889087433753a5068819dcd3e86bdc2cce82bb8040John Spurlock            String caller);
1899087433753a5068819dcd3e86bdc2cce82bb8040John Spurlock
1900a40ec2192e4836b2fcb6ba51a7688aa6bd4ee98Mike Lockwood    int setBluetoothA2dpDeviceConnectionState(in BluetoothDevice device, int state, int profile);
191632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn
192632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn    AudioRoutesInfo startWatchingRoutes(in IAudioRoutesObserver observer);
193dd45d01128423a82652a3c9d77fa393631d95229Eric Laurent
194dd45d01128423a82652a3c9d77fa393631d95229Eric Laurent    boolean isCameraSoundForced();
1953346a802087f621c6441bc512dfcc17b07143fc6John Spurlock
1963346a802087f621c6441bc512dfcc17b07143fc6John Spurlock    void setVolumeController(in IVolumeController controller);
1973346a802087f621c6441bc512dfcc17b07143fc6John Spurlock
19833f4e04e32fac42f158733d6a731e50490fa9951John Spurlock    void notifyVolumeControllerVisible(in IVolumeController controller, boolean visible);
19933f4e04e32fac42f158733d6a731e50490fa9951John Spurlock
2003346a802087f621c6441bc512dfcc17b07143fc6John Spurlock    boolean isStreamAffectedByRingerMode(int streamType);
2013346a802087f621c6441bc512dfcc17b07143fc6John Spurlock
202a9dfbe8b122d746cf8841fe1b13d31e7e0fc9c52John Spurlock    boolean isStreamAffectedByMute(int streamType);
203a9dfbe8b122d746cf8841fe1b13d31e7e0fc9c52John Spurlock
2049087433753a5068819dcd3e86bdc2cce82bb8040John Spurlock    void disableSafeMediaVolume(String callingPackage);
20541d974631c5f525da49c88d34cecedd5a4cfeda8Jungshik Jang
20612307ca810e8100981b2b60e3f2c6a7e451b9774Jungshik Jang    int setHdmiSystemAudioSupported(boolean on);
207a8b6bd88cfb010c9e9aa1339e504fd593919e1e0Jean-Michel Trivi
208e7d6d97f0d95b9e8982b0d4d9f5e8ce688291940Terry Heo    boolean isHdmiSystemAudioSupported();
209e7d6d97f0d95b9e8982b0d4d9f5e8ce688291940Terry Heo
210a48d779dad4c48aa2f97ad021ae3a5649c058312John Spurlock    String registerAudioPolicy(in AudioPolicyConfig policyConfig,
211a48d779dad4c48aa2f97ad021ae3a5649c058312John Spurlock            in IAudioPolicyCallback pcb, boolean hasFocusListener);
212a48d779dad4c48aa2f97ad021ae3a5649c058312John Spurlock
2130212be5150fb9fb3c340f3c7e51f6126372cc6f9Jean-Michel Trivi    oneway void unregisterAudioPolicyAsync(in IAudioPolicyCallback pcb);
2140212be5150fb9fb3c340f3c7e51f6126372cc6f9Jean-Michel Trivi
215a48d779dad4c48aa2f97ad021ae3a5649c058312John Spurlock    int setFocusPropertiesForPolicy(int duckingBehavior, in IAudioPolicyCallback pcb);
216a48d779dad4c48aa2f97ad021ae3a5649c058312John Spurlock
217a48d779dad4c48aa2f97ad021ae3a5649c058312John Spurlock    void setVolumePolicy(in VolumePolicy policy);
2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
219