f98de1e8dd6dcbd191921b4aa07a1d41b0b9db91 |
|
20-Jun-2012 |
Jean-Michel Trivi <jmtrivi@google.com> |
Asynchronous handling of remote volume updates Remote playback information updates will be posted from the application thread, and sent to AudioService. Because they require locking the stack containing the remote playback information, the update should happen on AudioService's handler thread to avoid lock contention. Change-Id: Ie04898295e08c16dd8ab5985fd825301e9cf1981
/frameworks/base/media/java/android/media/RemoteControlClient.java
|
1357012968f9066ea3051d83995e9bac69526c3c |
|
19-Jun-2012 |
Jean-Michel Trivi <jmtrivi@google.com> |
Remote volume handling in MediaRouter Extend MediaRouter.UserRouteInfo to enable setting playback information, which includes volume. When the user route instance has a RemoteControlClient, forward any playback information to it. Enable specifying a callback to be notified of volume events on the route. Extend MediaRouter.RouteInfo to enable retrieving playback information. Update RemoteControlClient javadoc to reflect which parts of the API are not intended to be made public. Change-Id: I59d728eb61747af6c8c89d53f0faeb07940594c3
/frameworks/base/media/java/android/media/RemoteControlClient.java
|
3114ce3861f20f9a5c2c59dd2629197a1f4874a8 |
|
12-Jun-2012 |
Jean-Michel Trivi <jmtrivi@google.com> |
Remote volume handling Extend RemoteControlClient class to enable an applicaton to specify more information about how it's playing media, now covering usecases where media playback happens "remotely". This playback information can be used to set the volume and maximum volume used remotely. Declare a new intent and associated extras in Intent, ACTION_VOLUME_UPDATE, so an application can be notified that the volume it handles should be updated. It can then use the new RemoteControlClient.setPlaybackInformation() method to notify AudioService what the volume is. Extend AudioService to maintain playback information associated with the RemoteControlClient information in the stack of media button event receivers (mRCStack). The information about the active remote is cached so the stack doesn't have to be iterated over in order to retrieve remote playback info. Events to "adjust" the remote volume based on hardware key presses cause the client application to be notified of volume updates, and the volume panel to display the volume set by the app. Revise which stream type is controlled when none is specified according to latest guidelines for remote playback. Update VolumePanel class to support a new pseudo stream type, AudioService.STREAM_REMOTE_MUSIC, that corresponds to the remote playback volume, and uses the new "media route" icon. Enable it to receive asynchronously new volume values for the remote that will be displayed if the UI is still up, and ignored otherwise. Now supports hiding/showing sliders dynamically so remote volume only appears when AudioService has a remote control client handling remote volume. Define new java symbols for the two media route icons. Modify lockscreen behavior: don't automatically control music volume when music is active, consider also remote playback. Still to do: - playback information set by RemoteControlClient should post a message for AudioService to update playback information instead of updating it synchronously Change-Id: I557aa687239f9acfe33a609f05876c67fa7eb967
/frameworks/base/media/java/android/media/RemoteControlClient.java
|
05c66cc5cc6357be19fdef0fc131731368c38646 |
|
04-Jun-2012 |
Jack Palevich <jackpal@google.com> |
Don't crash when scaling Bitmaps with private Bitmap.Configs Bug: 6526197 Change-Id: I89f008f90888f0a679274c00293342ab0fb0e28e
/frameworks/base/media/java/android/media/RemoteControlClient.java
|
30c918ce7fbe171944b28fc91b3f22b3d631872d |
|
11-Nov-2011 |
Glenn Kasten <gkasten@google.com> |
Use final on new member variables Use final for member fields initialized to a new and that are never modified. Change-Id: I042352c7bc21879613e7a50b1205b6923f8083cf
/frameworks/base/media/java/android/media/RemoteControlClient.java
|
ad87f5b40f2a3fd2d506dc15e00b8af28a8fa2ba |
|
11-Oct-2011 |
Jean-Michel Trivi <jmtrivi@google.com> |
Fix 5389442 RemoteControlClient javadoc Extend RemoteControlClient class description with an example of instance creation showing how the PendingIntent is created and how it uses the same ComponentName as the one used in AudioManager.registerMediaButtonEventReceiver() Change-Id: If8f050f94b112f9680ba6bf32ba622bc648fb1d0
/frameworks/base/media/java/android/media/RemoteControlClient.java
|
68622396b62f9084781add1e12f4d513b633ab54 |
|
19-Sep-2011 |
Jean-Michel Trivi <jmtrivi@google.com> |
Bug 5045498 Keep track of RemoteControlClient play state change time Store the time at which a RemoteControlClient changes it playback state, and send that time to the IRemoteControlDisplay. This change will enable displays to implement strategies such as timeouts (e.g. to not display transport controls for clients which have been paused or stopped for a certain amount of time). Change-Id: I902882500565743d455d56f6000efaf612cbe0a9
/frameworks/base/media/java/android/media/RemoteControlClient.java
|
f0cff0456258478ba768097f73d4367ab67fd7a3 |
|
15-Sep-2011 |
Jean-Michel Trivi <jmtrivi@google.com> |
Bug 5300223 RemoteControlClient uses PendingIntent for media button events Update the implementation of the RemoteControlClient / Display feature rely on PendingIntent as provided in the construction of the RemoteControlClient instance. The ComponentName that describes the target of the media button events is set as the target of the Intent from which a PendingIntent is constructed. This ComponentName is still saved in the stack for persisting the last media button event receiver. This CL also updates the lockscreen IRemoteControlDisplay implementation to use the PendingIntent supplied by the application when sending transport control events. A (good) side effect of doing this is that intent will be directly targeted at the application. Restoration of the media button event receiver after reboot is not fully functional yet. Change-Id: I2be82f2839e9dee1de02512437b3fb41cc386cde
/frameworks/base/media/java/android/media/RemoteControlClient.java
|
34d0d300cac645b48cce5a1735f45e1102d4ef0e |
|
16-Sep-2011 |
Jean-Michel Trivi <jmtrivi@google.com> |
Fix bug 5327199 Recycle bitmaps in RemoteControlClient When applying the new bitmap from the editor to the client, recycle the old bitmap, and set the reference to the editor bitmap to null. Change-Id: I7d79e4b8410e5035fa51b20be4b1ada391c84c28
/frameworks/base/media/java/android/media/RemoteControlClient.java
|
6e920e6dac11c3ebf6c0c19402934834e9e491bf |
|
14-Sep-2011 |
Jean-Michel Trivi <jmtrivi@google.com> |
Bug 5300223 RemoteControlClient uses PendingIntent API change so RemoteControlClient is given a PendingIntent in its constructor, which will be used for receiving media button events from remote controls. Leave the old constructors (but hidden) to not break current functionality until the AudioManager and AudioService implementations have been updated. Change-Id: Ifa12c8036c948931adc386a827dce2936788e1cd
/frameworks/base/media/java/android/media/RemoteControlClient.java
|
466ade5ad66e7bfb1814d5e5ac76a17f8a0bcd3a |
|
01-Sep-2011 |
Jean-Michel Trivi <jmtrivi@google.com> |
Fix bug 5045498 Unhide Remote Control Client API The RemoteControlClient API enables media application to have information such as album art, current song, playback state be displayed on "remote control displays", as well as be controlled by "remote controls". The new API consists in: - a new class, RemoteControlClient - new methods in AudioManager to register a RemoteControlClient - a new class, RemoteControlClient.MetadataEditor to edit and apply the information associated with a RemoteControlClient, and which will be displayed on a "remote control display" Change-Id: I5616085e4ad58ce0bbc1a5953b0a5a28d32f8703
/frameworks/base/media/java/android/media/RemoteControlClient.java
|
5ad4b9fb96089e460902ffac9f3649366afd3750 |
|
31-Aug-2011 |
Jean-Michel Trivi <jmtrivi@google.com> |
RemoteControlClient metadata: add method for metadata of long type Update to the RemoteControlClient.Editor API: - new method for setting metadata of type long - methods for setting metadata throw an exception if using the wrong key with the wrong method. Note that this change will cause the Music2 application to throw an exception when it tries to set the duration as a string. Change-Id: I17cff86467851a0aff313c07653e752ae6b6180f
/frameworks/base/media/java/android/media/RemoteControlClient.java
|
7309c83b95b36eac141680158df70ac1ce02a160 |
|
27-Aug-2011 |
Jean-Michel Trivi <jmtrivi@google.com> |
Cannot compare Binder references for RC display to unregister Cannot trust references to IRemoteControlDisplay to remain the same when removing a RemoteControlDisplay, compare the result of .asBinder() instead. Change-Id: Ib2e82aa24bd4b12804bccff94a6a0090ff83bea8
/frameworks/base/media/java/android/media/RemoteControlClient.java
|
6e679d5a53091b348a2cdc0c76f4e8fa4ac52d4b |
|
26-Aug-2011 |
Jean-Michel Trivi <jmtrivi@google.com> |
Don't try to rescale when no bitmap in RemoteControlClient If a RemoteControlClient has a null artwork, do no attempt to rescale the bitmap, it's ok to send a null bitmap to the IRemoteControlDisplay. Change-Id: I8332ccfcf18107ea0b41d4e7fa232d7f68798efc
/frameworks/base/media/java/android/media/RemoteControlClient.java
|
44413e5b514a91806a4bb4c7780029ea43be6f81 |
|
24-Aug-2011 |
Jean-Michel Trivi <jmtrivi@google.com> |
Bug 5045498 Single binder call when metadata and artwork are updated When metadata gets applied, optimize the artwork and metadata update by doing it in a single call. Add missing RemoteControlDisplay-related methods in AudioManager. Change-Id: I97aa802cc480327bee5592ea8dfdbd414c0f037a
/frameworks/base/media/java/android/media/RemoteControlClient.java
|
4da5eeffc92331b958eeb111aa2f3d938083954e |
|
24-Aug-2011 |
Jean-Michel Trivi <jmtrivi@google.com> |
Bug 5045498 Implementation of RemoteControlClient.MetadataEditor A MetadataEditor contains all the metadata and artwork to be applied to a RemoteControlClient. A MetadataEditor can only be applied once. Change-Id: I3ce9d97f520cd9ab009fb1a92a2b399717511bd8
/frameworks/base/media/java/android/media/RemoteControlClient.java
|
4426e42ac6107bf6b09f7c4cdad39eb161d8b9ca |
|
19-Aug-2011 |
Jean-Michel Trivi <jmtrivi@google.com> |
Bug 5045498 New implementation of remote control API Remote control displays expose an IRemoteControlDisplay interface which they register through AudioManager. Remote control clients create a RemoteControlClient object, which implicitely exposes an IRemoteControlClient interface registered in AudioService through AudioManager. AudioService tells all clients and displays when a new client is the one that should be displayed. A client's data gets sent to the display when it is valid, or it sets new data (while being valid). The implementation for setting metadata and album art is temporary, and will migrate to the MetadataEditor API in future CLs. Change-Id: Ibab6ea1d94c68f32482c760c6ae269541f885548
/frameworks/base/media/java/android/media/RemoteControlClient.java
|
178889eff7fa3361a5cb08d6d43846a1baf5216b |
|
16-Aug-2011 |
Jean-Michel Trivi <jmtrivi@google.com> |
Bug 5045498 RemoteControlClient interface Define a RemoteControlClient interface that applications must implement and register to be displayed on the lockscreen. Change-Id: I67276ae653f203e76727432231f1d76535c31942
/frameworks/base/media/java/android/media/RemoteControlClient.java
|