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
This commit is contained in:
Jean-Michel Trivi
2013-09-27 18:37:36 -07:00
parent a48ccdd6fb
commit f108cdd9ee
12 changed files with 450 additions and 173 deletions

View File

@ -139,6 +139,11 @@ public class Media extends BaseCommand {
+ " intent=" + clientMediaIntent + " clearing=" + clearing);
}
@Override
public void setEnabled(boolean enabled) {
System.out.println("New enable state= " + (enabled ? "enabled" : "disabled"));
}
@Override
public void setPlaybackState(int generationId, int state, long stateChangeTimeMs,
long currentPosMs, float speed) {