History log of /frameworks/base/media/java/android/media/RemoteControlClient.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
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