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