Media router API updates.

Added a MediaRouteDialogFactory to make it easier for applications
to customize the dialog fragments such as adding custom views
into the media route controller dialog.

Added an API to disable volume control in the media route
controller dialog.

Added a method that the application can override to change how
routes are filtered in the chooser dialog.

Changed the remote playback protocol to isolate the queuing
feature and @hide it.  This required a few semantic changes
to the protocol so that the non-queuing subset is able to
stand on its own and be coherent.  Most of these changes are
simple renames and incremental changes of existing concepts
but the documentation had to be substantially updated to keep
it clear.

The protocol changes are roughly as follows.

- QUEUE_ID renamed to SESSION_ID.  Sessions are created
implicitly by ACTION_PLAY just like queues but the concept is
somewhat more generic.  The session is documented conceptually
as having a queue that can only contain at most one item which
makes it easier to explain certain behaviors.  However, we
now deemphasize the concept of the queue in the documentation and
focus more on the session.  Since the word "queue" no longer
appears in the API, we could go either way in the future and choose
to expand on or abandon the queue concept just by changing
the documentation.

- ACTION_STOP renamed to ACTION_REMOVE and now @hide.  The action
removes one specific item from the queue.

- ACTION_CLEAR_QUEUE renamed to ACTION_STOP.  Now documented to
have the side-effect of both clearing and unpausing the queue
like hitting a reset switch on the session.  The choice of name
creates good symmetry with ACTION_PLAY in the single item case.

- ACTION_ENQUEUE (@hide) added to represent the previous
queuing behavior so that we can continue to experiment with it.
Support for this action might be optional in the future.

- ACTION_PLAY is documented in a way that makes it equivalent
to ACTION_STOP followed by ACTION_ENQUEUE.  This way we enforce
the constraint that the queue can have at most one item in it
while still leaving the door open to exposing more features later.

- ACTION_PAUSE_QUEUE renamed to ACTION_PAUSE.  We still refer to
it as conceptually pausing a queue but this now fits in better with
the one at a time nature of ACTION_PLAY.

- ACTION_RESUME_QUEUE renamed to ACTION_RESUME.

- PLAYBACK_STATE_QUEUED renamed to PLAYBACK_STATE_PENDING.

- PLAYBACK_STATE_STOPPED renamed to PLAYBACK_STATE_FINISHED to make
it clear that this state means the media item finished playing
normally.

- PLAYBACK_STATE_CANCELED now only means that the media item was
canceled by the app by way of ACTION_PLAY or ACTION_STOP
(or ACTION_REMOVE) which caused the item to be removed from the
queue before it had a chance to finish normally.

- PLAYBACK_STATE_INVALIDATED added to specifically refer to the
case where another application takes control of the route and
stomps on the session and its media items.  The documentation now
consistently uses the word invalidate rather than cancel when
referring to sessions or media items that have been involuntarily
aborted by an external cause.

- @hide HTTP request headers, response headers and status code.

Bug: 9743462
Change-Id: I3bdb4cd8947112ab409983a74fa4bc062465149a
9 files changed
tree: f0d0d1cfe527b799cacc0088f7335b5294cb4f59
  1. CleanSpec.mk
  2. tests/
  3. v13/
  4. v4/
  5. v7/
  6. v8/