Commit Graph

30 Commits

Author SHA1 Message Date
Jean-Michel Trivi
d4de20df2a AudioService: remove dead code
Remove dead code related to media button event receiver and
  remote control display, now handled by MediaSession*

Change-Id: I4bd621240ddddf4df079df8d551c72b232c3301d
2015-11-23 23:16:04 +00:00
RoboErik
14f717a506 rename add/removeCallback to register/unregisterCallback
bug:17390821
Change-Id: Id610b481083686dba2a28b6c7c47b747f89eef4f
2014-09-05 11:40:33 -07:00
RoboErik
8e1e84847e Ensure there's a valid handler when registering a sessions listener
Some legacy apps register a RemoteController on a thread without a
looper. This ensures a handler with a looper is used when it registers
the sessions listener.

bug:17357029
Change-Id: Ia3d98f5dcc331edd0c3a7e858db1d9e7e2749e14
2014-09-03 18:25:15 -07:00
RoboErik
a66c40bf6e Update MediaSession APIs for council feedback
-Changes MediaSessionManager.SessionsListener to OnActiveSessionsChangedListener
and makes it an interface.
-Renames MediaController.VolumeInfo to MediaController.AudioInfo
-Renames MediaSession.Track to MediaSession.Item

bug:17059552
Change-Id: I3a0b4371700ad6657972c312a5ab89ddfac6df5b
2014-08-19 17:12:42 +00:00
RoboErik
0d194c5e23 Post MediaSessionManager callbacks to the caller's thread
We were just sending them from the binder thread. This makes them
post to the thread that registered the listener.

Change-Id: I27c155099da32f3bc8be6e3851272f0463df498b
2014-08-12 12:22:12 -07:00
RoboErik
031149cd5f Add context to MediaController constructor
This also adds a convenience method to MediaSession to allow getting
a controller instead of having to create and cache your own.

bug:16561220
Change-Id: I87f551a7474e71f1cf2f07e0e541c3a4515cd977
2014-07-28 11:02:15 -07:00
RoboErik
aa4e23bbb3 Add getPackageName to MediaController
This removes the MediaSessionInfo class and adds a method on the
controller to get the package name. This also converts code that
depended on the session's UUID to use the token for comparison or
the Tag in the case of test code that needs a string identifier.

Change-Id: Icb8dc76c70e23e897da8fd07651c524b96372bf9
2014-07-25 16:22:59 -07:00
RoboErik
8880157ee0 Merge "Return appropriately scaled artwork to RemoteController" into lmp-dev 2014-07-23 18:56:15 +00:00
RoboErik
a259d35073 Return appropriately scaled artwork to RemoteController
RemoteController has an api to set the artwork size. This adds compatibility
code to do the exclusion or scaling of artwork to be consistent with old APIs.

bug:15618171
Change-Id: I8cc51750c03219d42d5f543419f8b46f9eb5b833
2014-07-23 13:25:02 -07:00
Gabriel Peal
f364f94496 Added Action to PlaybackState
Added the ability to discover MediaBrowsers

Change-Id: I925c8738ac73afd0bee3dada2ee7ff2d5047e63f
2014-07-23 11:45:03 -07:00
RoboErik
edb158f55f Deprecate apis that were replaced by sessions
These classes all have new components in the session APIs.

bug:16218444
Change-Id: Ib64ff0e23503e4c9eb2fd9162a878e1eaba7c4df
2014-07-21 18:26:42 +00:00
RoboErik
c785a78fb4 Make PlaybackState immutable with a builder
bug:15862252
Change-Id: I51f2e466bd2c41bbe80d20aa9785126a7ac6ab3f
2014-07-14 13:40:43 -07:00
Erik Pasternak
b2e93efcac Revert "Make PlaybackState immutable with a builder"
Will resubmit tomorrow for Build Breakage Friday as this change needs new SDK prebuilts for unbundled app branches.

This reverts commit aa746b27610680a2c0fbdf7d81a6455c4597f05e.

Change-Id: I28ba7e1b09234a5eb1b725aed043b9de98e1bc16
2014-07-10 22:51:34 +00:00
RoboErik
5a4e011143 Make PlaybackState immutable with a builder
bug:15862252
Change-Id: I8944b7753cd6a36a74b0091f71a386f77040c4ab
2014-07-10 22:39:03 +00:00
RoboErik
51fa6bcb22 b/15757378 Expose APIs for listening to active sessions
This allows apps that are registered notification listeners to
listen to the set of active sessions.

Change-Id: I1e108951a5049d138208e88b155c0ec9b95fbdb0
2014-06-23 16:29:52 -07:00
RoboErik
6f0e4ddd66 Remove more dead audio service code
Hit a snag in remote volume changes. Trying off this round of
removal so I can work on fixing remote volume handling in a
separate CL.

Change-Id: I49b1ba4b75d770ba7c77da081755f3210a9e9483
2014-06-20 11:35:20 -07:00
RoboErik
73e23e229d b/15330955 Make RemoteController use the new session APIs
This moves RemoteController over to using Sessions instead of
the RCC/RCD framework. This also adds several hidden APIs to
help with translating between the two apis.

Change-Id: I0f50313db2b6190b16fa86ce670ac9250654ca05
2014-06-11 10:58:52 -07:00
RoboErik
01fe661ae5 Initial round of MediaSession APIs
This is far from complete but puts the basic components in place
for an app to interact with media sessions.

Change-Id: Icfe313f90ad76ae56badbe42b0e43fc5f68db36f
2014-02-19 13:41:37 -08:00
Jean-Michel Trivi
b3ae913115 Fix RemoteController synchronization mode
Fix erroneous argument check in RemoteController syncrhonization
  mode setter..

Bug 12189375

Change-Id: Ib446a21f36c6e0e97752336b22aff0feb651f215
2014-01-02 23:13:48 +00:00
John Spurlock
6090995951 Remove unused imports from frameworks/base.
Change-Id: Ia1f99bd2c1105b0b0f70aa614f1f4a67b2840906
2013-11-20 11:31:47 -05:00
Adam Powell
3b435fb2f0 Fix stale data in keyguard transport control display
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
2013-10-15 19:18:04 -07:00
Jean-Michel Trivi
4348a73bbe Make RemoteController weakly referenced by IRemoteControlDisplay
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
2013-10-08 15:42:31 -07:00
Jean-Michel Trivi
19566543c4 Update RemoteController info when enabling/disabling it
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
2013-10-07 17:10:08 -07:00
Jean-Michel Trivi
f108cdd9ee Also rely on enabled notification listeners for RemoteController registration
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
2013-10-04 17:50:44 -07:00
Adam Powell
70cb8021ef Fix docs
Change-Id: I19e0cdab6c526f7eed376fc2067b5c49b31a3ea9
2013-10-03 16:39:30 -07:00
Adam Powell
f8895248e2 Add a scrubber to keyguard; layout tweaks
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
2013-10-03 14:55:18 -07:00
Jean-Michel Trivi
8ab8c2d061 Cache RemoteController artwork bitmap size, use it in registration
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
2013-09-29 12:17:13 -07:00
Jean-Michel Trivi
6d298811ef Fix artwork not received in RemoteController metadata update.
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
2013-09-23 18:34:23 -07:00
Jean-Michel Trivi
a83487e8c6 Public API for RemoteController
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
2013-09-18 18:12:51 -07:00
Jean-Michel Trivi
7ddd226e7c RemoteController class to expose IRemoteControlDisplay features
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
2013-09-18 01:47:25 +00:00