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;
22632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackbornimport android.media.AudioRoutesInfo;
23d5176cfe6eae954e9cef1e2ec17859a5089e1330Jean-Michel Triviimport android.media.IAudioFocusDispatcher;
24632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackbornimport android.media.IAudioRoutesObserver;
254426e42ac6107bf6b09f7c4cdad39eb161d8b9caJean-Michel Triviimport android.media.IRemoteControlClient;
264426e42ac6107bf6b09f7c4cdad39eb161d8b9caJean-Michel Triviimport android.media.IRemoteControlDisplay;
271357012968f9066ea3051d83995e9bac69526c3cJean-Michel Triviimport android.media.IRemoteVolumeObserver;
28098d580cc2bb6c0891c756a4e5230c6c6b0d2376Jeff Sharkeyimport android.media.IRingtonePlayer;
297ddd226e7c6e759feaf2747a90be1cc06acf37a3Jean-Michel Triviimport android.media.Rating;
30098d580cc2bb6c0891c756a4e5230c6c6b0d2376Jeff Sharkeyimport android.net.Uri;
31c68022258ebd3dd97a5079ba99f4f3cd12b223b0Jean-Michel Triviimport android.view.KeyEvent;
32d5176cfe6eae954e9cef1e2ec17859a5089e1330Jean-Michel Trivi
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide}
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectinterface IAudioService {
3768d6dedcc3a7d7ceaad297e59248332eb900113cJean-Michel Trivi
38ba50b97cff80e73620a0e3d13cae169e095974a7Dianne Hackborn    void adjustVolume(int direction, int flags, String callingPackage);
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
40fca1e603236b8d1681f784e77e3719d1d59c1428Jean-Michel Trivi    boolean isLocalOrRemoteMusicActive();
41fca1e603236b8d1681f784e77e3719d1d59c1428Jean-Michel Trivi
42ba50b97cff80e73620a0e3d13cae169e095974a7Dianne Hackborn    oneway void adjustLocalOrRemoteStreamVolume(int streamType, int direction,
43ba50b97cff80e73620a0e3d13cae169e095974a7Dianne Hackborn            String callingPackage);
443114ce3861f20f9a5c2c59dd2629197a1f4874a8Jean-Michel Trivi
45ba50b97cff80e73620a0e3d13cae169e095974a7Dianne Hackborn    void adjustSuggestedStreamVolume(int direction, int suggestedStreamType, int flags,
46ba50b97cff80e73620a0e3d13cae169e095974a7Dianne Hackborn            String callingPackage);
47dff25597a9a862143c69e70e6ed86790538c23c1Mike Lockwood
48ba50b97cff80e73620a0e3d13cae169e095974a7Dianne Hackborn    void adjustStreamVolume(int streamType, int direction, int flags, String callingPackage);
49dff25597a9a862143c69e70e6ed86790538c23c1Mike Lockwood
50ba50b97cff80e73620a0e3d13cae169e095974a7Dianne Hackborn    void adjustMasterVolume(int direction, int flags, String callingPackage);
51dff25597a9a862143c69e70e6ed86790538c23c1Mike Lockwood
52ba50b97cff80e73620a0e3d13cae169e095974a7Dianne Hackborn    void setStreamVolume(int streamType, int index, int flags, String callingPackage);
53a2aa08e20cb4f1e302bb7ae05882cd1be8cfa0d2Mike Lockwood
543114ce3861f20f9a5c2c59dd2629197a1f4874a8Jean-Michel Trivi    oneway void setRemoteStreamVolume(int index);
553114ce3861f20f9a5c2c59dd2629197a1f4874a8Jean-Michel Trivi
56ba50b97cff80e73620a0e3d13cae169e095974a7Dianne Hackborn    void setMasterVolume(int index, int flags, String callingPackage);
5768d6dedcc3a7d7ceaad297e59248332eb900113cJean-Michel Trivi
58a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent    void setStreamSolo(int streamType, boolean state, IBinder cb);
5968d6dedcc3a7d7ceaad297e59248332eb900113cJean-Michel Trivi
60a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent    void setStreamMute(int streamType, boolean state, IBinder cb);
6125101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent
6225101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent    boolean isStreamMute(int streamType);
6325101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent
640273af55cf68d54d26d154b44d105d40fed79701Justin Koh    void setMasterMute(boolean state, int flags, IBinder cb);
65cfbcd3bf21c8453e9afd7740fdb7fc272c362389Mike Lockwood
66cfbcd3bf21c8453e9afd7740fdb7fc272c362389Mike Lockwood    boolean isMasterMute();
67cfbcd3bf21c8453e9afd7740fdb7fc272c362389Mike Lockwood
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getStreamVolume(int streamType);
695020e7e2d37865da862846b97d9959e83244a35eMike Lockwood
70a2aa08e20cb4f1e302bb7ae05882cd1be8cfa0d2Mike Lockwood    int getMasterVolume();
715020e7e2d37865da862846b97d9959e83244a35eMike Lockwood
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getStreamMaxVolume(int streamType);
73a2aa08e20cb4f1e302bb7ae05882cd1be8cfa0d2Mike Lockwood
74a2aa08e20cb4f1e302bb7ae05882cd1be8cfa0d2Mike Lockwood    int getMasterMaxVolume();
7568d6dedcc3a7d7ceaad297e59248332eb900113cJean-Michel Trivi
7625101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent    int getLastAudibleStreamVolume(int streamType);
7725101b0b9a84571ead15b26e9f4cd9c4298d7823Eric Laurent
78cfbcd3bf21c8453e9afd7740fdb7fc272c362389Mike Lockwood    int getLastAudibleMasterVolume();
79cfbcd3bf21c8453e9afd7740fdb7fc272c362389Mike Lockwood
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setRingerMode(int ringerMode);
8168d6dedcc3a7d7ceaad297e59248332eb900113cJean-Michel Trivi
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getRingerMode();
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setVibrateSetting(int vibrateType, int vibrateSetting);
8568d6dedcc3a7d7ceaad297e59248332eb900113cJean-Michel Trivi
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getVibrateSetting(int vibrateType);
8768d6dedcc3a7d7ceaad297e59248332eb900113cJean-Michel Trivi
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean shouldVibrate(int vibrateType);
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
909272b4b4a44fe1f33e3030810618194f817caaecEric Laurent    void setMode(int mode, IBinder cb);
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getMode();
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    oneway void playSoundEffect(int effectType);
9568d6dedcc3a7d7ceaad297e59248332eb900113cJean-Michel Trivi
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    oneway void playSoundEffectVolume(int effectType, float volume);
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean loadSoundEffects();
9968d6dedcc3a7d7ceaad297e59248332eb900113cJean-Michel Trivi
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    oneway void unloadSoundEffects();
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1024050c93601b3c3609b21cc1e18a29b64747e7fa9Eric Laurent    oneway void reloadAudioSettings();
103c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent
1045a0cf7a27f3953a1266af48543ccd9024f4cd89fJohn Du    oneway void avrcpSupportsAbsoluteVolume(String address, boolean support);
1055a0cf7a27f3953a1266af48543ccd9024f4cd89fJohn Du
106c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent    void setSpeakerphoneOn(boolean on);
107c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent
108c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent    boolean isSpeakerphoneOn();
109c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent
110c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent    void setBluetoothScoOn(boolean on);
111c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent
112c42ac9d4d03f62c3a1ba197a28a81fda44bd8b7fEric Laurent    boolean isBluetoothScoOn();
113d5176cfe6eae954e9cef1e2ec17859a5089e1330Jean-Michel Trivi
1144ab22bb7d0aafce1be200153d71d432c9d54e04aEric Laurent    void setBluetoothA2dpOn(boolean on);
1157847211fb4699bf6018e29d214a918ed6657319bEric Laurent
1167847211fb4699bf6018e29d214a918ed6657319bEric Laurent    boolean isBluetoothA2dpOn();
1177847211fb4699bf6018e29d214a918ed6657319bEric Laurent
118fa9a69805b001034aa04c3b33989a7ac21522371Jean-Michel Trivi    int requestAudioFocus(int mainStreamType, int durationHint, IBinder cb,
119fa9a69805b001034aa04c3b33989a7ac21522371Jean-Michel Trivi            IAudioFocusDispatcher fd, String clientId, String callingPackageName);
120d5176cfe6eae954e9cef1e2ec17859a5089e1330Jean-Michel Trivi
121fa9a69805b001034aa04c3b33989a7ac21522371Jean-Michel Trivi    int abandonAudioFocus(IAudioFocusDispatcher fd, String clientId);
12268d6dedcc3a7d7ceaad297e59248332eb900113cJean-Michel Trivi
123d327f21626217aa3c9c0cdb7a84a742c531e59a3Jean-Michel Trivi    void unregisterAudioFocusClient(String clientId);
124d327f21626217aa3c9c0cdb7a84a742c531e59a3Jean-Michel Trivi
1252380566debfc57eb1cc07db1306ccee23b84ddd4Jean-Michel Trivi    int getCurrentAudioFocus();
1262380566debfc57eb1cc07db1306ccee23b84ddd4Jean-Michel Trivi
127c68022258ebd3dd97a5079ba99f4f3cd12b223b0Jean-Michel Trivi    oneway void dispatchMediaKeyEvent(in KeyEvent keyEvent);
128c68022258ebd3dd97a5079ba99f4f3cd12b223b0Jean-Michel Trivi    void dispatchMediaKeyEventUnderWakelock(in KeyEvent keyEvent);
129c68022258ebd3dd97a5079ba99f4f3cd12b223b0Jean-Michel Trivi
13079f7ec70ebd5758ce54fd5b6fcd60fd27457cba6Dianne Hackborn           void registerMediaButtonIntent(in PendingIntent pi, in ComponentName c, IBinder token);
131b839b83c7349533b4cb7278fd3d792b47199ba36Jean-Michel Trivi    oneway void unregisterMediaButtonIntent(in PendingIntent pi);
132d327f21626217aa3c9c0cdb7a84a742c531e59a3Jean-Michel Trivi
133722b808662eb20fa91151f1e3aa05fd911d1d226Jean-Michel Trivi    oneway void registerMediaButtonEventReceiverForCalls(in ComponentName c);
134722b808662eb20fa91151f1e3aa05fd911d1d226Jean-Michel Trivi    oneway void unregisterMediaButtonEventReceiverForCalls();
135722b808662eb20fa91151f1e3aa05fd911d1d226Jean-Michel Trivi
1364a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi    /**
1374a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     * Register an IRemoteControlDisplay.
138f108cdd9ee5efe354d87edd02a07b323298c116cJean-Michel Trivi     * Success of registration is subject to a check on
139f108cdd9ee5efe354d87edd02a07b323298c116cJean-Michel Trivi     *   the android.Manifest.permission.MEDIA_CONTENT_CONTROL permission.
1404a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     * Notify all IRemoteControlClient of the new display and cause the RemoteControlClient
1414a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     * at the top of the stack to update the new display with its information.
1424a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     * @param rcd the IRemoteControlDisplay to register. No effect if null.
1434a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     * @param w the maximum width of the expected bitmap. Negative or zero values indicate this
1444a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     *   display doesn't need to receive artwork.
1454a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     * @param h the maximum height of the expected bitmap. Negative or zero values indicate this
1464a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     *   display doesn't need to receive artwork.
1474a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     */
1487ddd226e7c6e759feaf2747a90be1cc06acf37a3Jean-Michel Trivi    boolean registerRemoteControlDisplay(in IRemoteControlDisplay rcd, int w, int h);
149f108cdd9ee5efe354d87edd02a07b323298c116cJean-Michel Trivi
150f108cdd9ee5efe354d87edd02a07b323298c116cJean-Michel Trivi    /**
151f108cdd9ee5efe354d87edd02a07b323298c116cJean-Michel Trivi     * Like registerRemoteControlDisplay, but with success being subject to a check on
152f108cdd9ee5efe354d87edd02a07b323298c116cJean-Michel Trivi     *   the android.Manifest.permission.MEDIA_CONTENT_CONTROL permission, and if it fails,
153f108cdd9ee5efe354d87edd02a07b323298c116cJean-Michel Trivi     *   success is subject to listenerComp being one of the ENABLED_NOTIFICATION_LISTENERS
154f108cdd9ee5efe354d87edd02a07b323298c116cJean-Michel Trivi     *   components.
155f108cdd9ee5efe354d87edd02a07b323298c116cJean-Michel Trivi     */
156f108cdd9ee5efe354d87edd02a07b323298c116cJean-Michel Trivi    boolean registerRemoteController(in IRemoteControlDisplay rcd, int w, int h,
157f108cdd9ee5efe354d87edd02a07b323298c116cJean-Michel Trivi            in ComponentName listenerComp);
158f108cdd9ee5efe354d87edd02a07b323298c116cJean-Michel Trivi
1594a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi    /**
1604a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     * Unregister an IRemoteControlDisplay.
1614a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     * No effect if the IRemoteControlDisplay hasn't been successfully registered.
1624a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     * @param rcd the IRemoteControlDisplay to unregister. No effect if null.
1634a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     */
1644426e42ac6107bf6b09f7c4cdad39eb161d8b9caJean-Michel Trivi    oneway void unregisterRemoteControlDisplay(in IRemoteControlDisplay rcd);
1654a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi    /**
1664a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     * Update the size of the artwork used by an IRemoteControlDisplay.
1674a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     * @param rcd the IRemoteControlDisplay with the new artwork size requirement
1684a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     * @param w the maximum width of the expected bitmap. Negative or zero values indicate this
1694a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     *   display doesn't need to receive artwork.
1704a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     * @param h the maximum height of the expected bitmap. Negative or zero values indicate this
1714a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     *   display doesn't need to receive artwork.
1724a5700556191c835116ec2a6997a4f16f464ac9dJean-Michel Trivi     */
1734426e42ac6107bf6b09f7c4cdad39eb161d8b9caJean-Michel Trivi    oneway void remoteControlDisplayUsesBitmapSize(in IRemoteControlDisplay rcd, int w, int h);
1743261b537c5fdec824575a1f6ad6d8942715e82e2Jean-Michel Trivi    /**
175c3c4babf8424f65b3d3d2700f60fae6e94e9cd00Jean-Michel Trivi     * Controls whether a remote control display needs periodic checks of the RemoteControlClient
176c3c4babf8424f65b3d3d2700f60fae6e94e9cd00Jean-Michel Trivi     * playback position to verify that the estimated position has not drifted from the actual
177c3c4babf8424f65b3d3d2700f60fae6e94e9cd00Jean-Michel Trivi     * position. By default the check is not performed.
178c3c4babf8424f65b3d3d2700f60fae6e94e9cd00Jean-Michel Trivi     * The IRemoteControlDisplay must have been previously registered for this to have any effect.
179c3c4babf8424f65b3d3d2700f60fae6e94e9cd00Jean-Michel Trivi     * @param rcd the IRemoteControlDisplay for which the anti-drift mechanism will be enabled
180c3c4babf8424f65b3d3d2700f60fae6e94e9cd00Jean-Michel Trivi     *     or disabled. Not null.
181c3c4babf8424f65b3d3d2700f60fae6e94e9cd00Jean-Michel Trivi     * @param wantsSync if true, RemoteControlClient instances which expose their playback position
182c3c4babf8424f65b3d3d2700f60fae6e94e9cd00Jean-Michel Trivi     *     to the framework will regularly compare the estimated playback position with the actual
183c3c4babf8424f65b3d3d2700f60fae6e94e9cd00Jean-Michel Trivi     *     position, and will update the IRemoteControlDisplay implementation whenever a drift is
184c3c4babf8424f65b3d3d2700f60fae6e94e9cd00Jean-Michel Trivi     *     detected.
185c3c4babf8424f65b3d3d2700f60fae6e94e9cd00Jean-Michel Trivi     */
186c3c4babf8424f65b3d3d2700f60fae6e94e9cd00Jean-Michel Trivi    oneway void remoteControlDisplayWantsPlaybackPositionSync(in IRemoteControlDisplay rcd,
187c3c4babf8424f65b3d3d2700f60fae6e94e9cd00Jean-Michel Trivi            boolean wantsSync);
188c3c4babf8424f65b3d3d2700f60fae6e94e9cd00Jean-Michel Trivi    /**
1893261b537c5fdec824575a1f6ad6d8942715e82e2Jean-Michel Trivi     * Request the user of a RemoteControlClient to seek to the given playback position.
1903261b537c5fdec824575a1f6ad6d8942715e82e2Jean-Michel Trivi     * @param generationId the RemoteControlClient generation counter for which this request is
1913261b537c5fdec824575a1f6ad6d8942715e82e2Jean-Michel Trivi     *         issued. Requests for an older generation than current one will be ignored.
1923261b537c5fdec824575a1f6ad6d8942715e82e2Jean-Michel Trivi     * @param timeMs the time in ms to seek to, must be positive.
1933261b537c5fdec824575a1f6ad6d8942715e82e2Jean-Michel Trivi     */
1943261b537c5fdec824575a1f6ad6d8942715e82e2Jean-Michel Trivi     void setRemoteControlClientPlaybackPosition(int generationId, long timeMs);
195f823fc4dba2df5cf5f00e13361f2db93c81f6961Jean-Michel Trivi     /**
1967ddd226e7c6e759feaf2747a90be1cc06acf37a3Jean-Michel Trivi      * Notify the user of a RemoteControlClient that it should update its metadata with the
1977ddd226e7c6e759feaf2747a90be1cc06acf37a3Jean-Michel Trivi      * new value for the given key.
198f823fc4dba2df5cf5f00e13361f2db93c81f6961Jean-Michel Trivi      * @param generationId the RemoteControlClient generation counter for which this request is
199f823fc4dba2df5cf5f00e13361f2db93c81f6961Jean-Michel Trivi      *         issued. Requests for an older generation than current one will be ignored.
200f823fc4dba2df5cf5f00e13361f2db93c81f6961Jean-Michel Trivi      * @param key the metadata key for which a new value exists
201f823fc4dba2df5cf5f00e13361f2db93c81f6961Jean-Michel Trivi      * @param value the new metadata value
202f823fc4dba2df5cf5f00e13361f2db93c81f6961Jean-Michel Trivi      */
2037ddd226e7c6e759feaf2747a90be1cc06acf37a3Jean-Michel Trivi     void updateRemoteControlClientMetadata(int generationId, int key, in Rating value);
2043261b537c5fdec824575a1f6ad6d8942715e82e2Jean-Michel Trivi
2053261b537c5fdec824575a1f6ad6d8942715e82e2Jean-Michel Trivi    /**
2063261b537c5fdec824575a1f6ad6d8942715e82e2Jean-Michel Trivi     * Do not use directly, use instead
2073261b537c5fdec824575a1f6ad6d8942715e82e2Jean-Michel Trivi     *     {@link android.media.AudioManager#registerRemoteControlClient(RemoteControlClient)}
2083261b537c5fdec824575a1f6ad6d8942715e82e2Jean-Michel Trivi     */
2093261b537c5fdec824575a1f6ad6d8942715e82e2Jean-Michel Trivi    int registerRemoteControlClient(in PendingIntent mediaIntent,
2103261b537c5fdec824575a1f6ad6d8942715e82e2Jean-Michel Trivi            in IRemoteControlClient rcClient, in String callingPackageName);
2113261b537c5fdec824575a1f6ad6d8942715e82e2Jean-Michel Trivi    /**
2123261b537c5fdec824575a1f6ad6d8942715e82e2Jean-Michel Trivi     * Do not use directly, use instead
2133261b537c5fdec824575a1f6ad6d8942715e82e2Jean-Michel Trivi     *     {@link android.media.AudioManager#unregisterRemoteControlClient(RemoteControlClient)}
2143261b537c5fdec824575a1f6ad6d8942715e82e2Jean-Michel Trivi     */
2153261b537c5fdec824575a1f6ad6d8942715e82e2Jean-Michel Trivi    oneway void unregisterRemoteControlClient(in PendingIntent mediaIntent,
2163261b537c5fdec824575a1f6ad6d8942715e82e2Jean-Michel Trivi            in IRemoteControlClient rcClient);
2178f619182cb759718f64ab95fd6d61c16138f6952Jean-Michel Trivi
2183114ce3861f20f9a5c2c59dd2629197a1f4874a8Jean-Michel Trivi    oneway void setPlaybackInfoForRcc(int rccId, int what, int value);
2193261b537c5fdec824575a1f6ad6d8942715e82e2Jean-Michel Trivi    void setPlaybackStateForRcc(int rccId, int state, long timeMs, float speed);
2203114ce3861f20f9a5c2c59dd2629197a1f4874a8Jean-Michel Trivi           int  getRemoteStreamMaxVolume();
2213114ce3861f20f9a5c2c59dd2629197a1f4874a8Jean-Michel Trivi           int  getRemoteStreamVolume();
2221357012968f9066ea3051d83995e9bac69526c3cJean-Michel Trivi    oneway void registerRemoteVolumeObserverForRcc(int rccId, in IRemoteVolumeObserver rvo);
2233114ce3861f20f9a5c2c59dd2629197a1f4874a8Jean-Michel Trivi
224c18c9138cee0f0859bcab636a004ce92ca4a9ab5Eric Laurent    void startBluetoothSco(IBinder cb, int targetSdkVersion);
2253def1eec2baed0b8845ec32c871e249dc533a9d9Eric Laurent    void stopBluetoothSco(IBinder cb);
22645c90cefd13a03b852bb4b8da4be218876cbbb32Eric Laurent
22745c90cefd13a03b852bb4b8da4be218876cbbb32Eric Laurent    void forceVolumeControlStream(int streamType, IBinder cb);
2286d5176638c2189595cede38fb92c3e7e8700e221Eric Laurent
229098d580cc2bb6c0891c756a4e5230c6c6b0d2376Jeff Sharkey    void setRingtonePlayer(IRingtonePlayer player);
230098d580cc2bb6c0891c756a4e5230c6c6b0d2376Jeff Sharkey    IRingtonePlayer getRingtonePlayer();
2316d5176638c2189595cede38fb92c3e7e8700e221Eric Laurent    int getMasterStreamType();
232b1fbaaccb656ef09a8770c28df15e3e91a452e64Eric Laurent
233b1fbaaccb656ef09a8770c28df15e3e91a452e64Eric Laurent    void setWiredDeviceConnectionState(int device, int state, String name);
234b1fbaaccb656ef09a8770c28df15e3e91a452e64Eric Laurent    int setBluetoothA2dpDeviceConnectionState(in BluetoothDevice device, int state);
235632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn
236632ca417f0a33e3fa9ccece531afa2db3f0d4a30Dianne Hackborn    AudioRoutesInfo startWatchingRoutes(in IAudioRoutesObserver observer);
237dd45d01128423a82652a3c9d77fa393631d95229Eric Laurent
238dd45d01128423a82652a3c9d77fa393631d95229Eric Laurent    boolean isCameraSoundForced();
2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
240