This is far from complete but puts the basic components in place
for an app to interact with media sessions.
Change-Id: Icfe313f90ad76ae56badbe42b0e43fc5f68db36f
Make sure that caches are cleared at the right times and views have
their data populated correctly. Also fix a caching issue in
RemoteController.
Bug 11218218
Change-Id: Ieb833b5dc440ccd1b82050f12eb7059a4e0a412f
In the RemoteController implementation, the inner class that
implements the IRemoteControlDisplay interface must have a weak
link to the RemoteController instance with which it is associated,
as MediaFocusControl and RemoteControlClient hold a strong
reference to this binder object in a different remote process.
Without a weak reference, any object referencing RemoteController
couldn't be independently garbage collected without a garbage
collection in the remote process.
Bug 8209392
Change-Id: I29e4274c45249b3cb0d3d89417c69e8fe8f62fc4
When a RemoteController listener is disabled: send its listener
"blank" information (no artist, "stopped state"...)
When a RemoteController listener is enabled: have the current
RemoteControlClient send the current information.
Bug 8209392
Change-Id: I375bf3c42a425ada94c61453b51669d7e819dde4
Registration of a RemoteController may succeed only if:
- the caller has the MEDIA_CONTENT_CONTROL permission,
- or if the RemoteController.OnClientUpdateListener it
registers if one of the enabled notification listeners.
For using the "enabled notification listener" functionality,
the CL involved:
- making OnClientUpdateListener an interface so a 3rd-party
application may have its implementation extend
NotificationListenerService, which is required for a
listener to be enabled by the user.
- add the concept of "enabled" status in an
IRemoteControlDisplay, so a RemoteController (which
encapsulates the IRemoteControlDisplay implementation)
may be registered, but later temporarily disabled by
the user, as a result of a user action in the security
settings, or a user switch.
- making MediaFocusControl, the component tied to
AudioService, monitor changes in enabled notification
listeners, and act upon enable/disable changes.
Bug 8209392
Change-Id: Ia8dfa2156c65668b2b0d4ae92048005912652d84
Switch KeyguardTransportControlView over to using RemoteController
instead of the internal API.
Guard transition animations behind a flag until we can work out some
intermittent issues.
Change-Id: Ie9f41339ce6e735c5d524db88437672f2c9859e2
Allow an app to set the artwork configuration at any point
regardless of the registration state, and cache the width/height
values.
If the RemoteController is already registered, apply them.
If the RemoteController is not registered, use the cached value
when the object gets registered.
Bug 10862527
Change-Id: If633e2b9383e7d59690288d2271113e98b195cd8
Regardless of the artwork value, always update the metadata.
When updating the metadata, make sure the artwork is stored
in the artwork field, not in the bundle of the MetadataEditor.
Bug 10862527
Change-Id: Iec83fd9bb358a91c852099b30bb6d307a52a034c
Public API, under system|signature permission for access to
currently playing metadata and playback state.
Public API for sending media key events.
Bug 8209392
Change-Id: I39b9309ca3fb1bc305492bad98740df0ae0842b2
Wrap all the features of IRemoteControlDisplay.aidl in a
new class, RemoteController, that implements the
IRemoteControlDisplay interface.
The API functions to expose in the SDK are tagged with
"CANDIDATE FOR API"
Bug 8209392
Change-Id: I597bcd503ac93e73889c9ae8b47b16c4fcb363bc