Previously it stored system resources, and that caused
Resources.NotFoundException in following methods:
- RouteInfo.getName()
- RouteCategory.getName()
- UserRouteInfo.setIconResource(int)
- RouteGroup.setIconResource(int)
Also, this CL makes getName()/setName() methods work properly.
Bug: 30797944
Test: run a simple app that calls above methods.
Change-Id: Ia5db57c3d7b71c91dcfeea0584867ee2d846fef9
Use @IntDef and @StringDef annotations where appropriate to ensure that
IDEs can autocomplete to the correct set of constants.
Bug: 22726900
Change-Id: I7626beb0634b754ffea9c012f42e6a21aa0faa51
Added currentVolume to constructor.
Removed onGetCurrentVolume and notifyVolume changed.
Added setCurrentVolume and getCurrentVolume.
Updated javadoc to make it clear how they're used.
bug:17258168
Change-Id: I24388aab38824b101ccc18810caa09d46aa7afe0
The session apis were using audioStream in several places. This
updates them to use AudioAttributes instead.
bug:16403289
Change-Id: Ic4da9ca5fbea2536e80c71503bd9a9bf7f346997
This makes volume adjustments take a direction instead of a number of
steps and renames the API appropriately.
Change-Id: I6a31cbc42d889a38aa63446686a424cb2b8b2270
This renames and moves the VolumeProvider and adds apis to
MediaController to get the current state of volume on a session and
to request changes to the volume.
Change-Id: I290e9efefb6676c805819a29e1d054c3192c6773
This makes MediaRouter work with sessions to handle volume
requests. Should work with all existing custom volume handling.
Change-Id: I5dfde26a6203a1072b7fc700978b4ca852ebe7d0
Keep track of how many clients are requesting scans and scan
continuously until all of them are gone then explicitly terminate the
scan instead of letting it time out as before.
Suspend wifi display scans while connecting or connected to a remote
display. This is handled by both the display manager and media router
since neither has complete information about what is happening.
Much of this code will no longer be needed once wifi display support
is integrated directly into the media router service.
Ensure that we don't attempt to scan or connect to wifi displays
while the wifi display feature is off.
Infer when a connection attempt fails and unselect the wifi display
route automatically so it doesn't appear to be connecting forever.
Fix issues around correctly canceling and retrying connection attempts.
Often we would cancel but not retry.
Improved connection reliability somewhat. It seems that discovery must
already be in progress in order for a connection attempt to succeed.
Ensure QuickSettings uses exactly the same logic as the MediaRouteButton
to determine when the remote display tile should be made visible.
Bug: 11717053
Change-Id: I18afc977b0e8c26204b8c96adaa79f05225f7b6e
Only allow the system ui and settings to connect to a remote display.
To do this, we essentially hide the remote displays from applications
by using the ROUTE_TYPE_REMOTE_DISPLAY then add permission checks
around the operations that connect to them.
As a bonus, this may actually save power on devices since applications
that use MediaRouter will not longer be performing discover on
remote display routes at all.
Bug: 11257292
Change-Id: I9ea8c568df4df5a0f0cf3d0f11b39c87e2110795
Hide disabled routes from the chooser.
Fix layout of chooser dialog when the settings button is visible and
the list is very long to prevent truncation of the settings button.
Fix an issue when we fake the route connecting status when a route
is selected. The route changed notification needs to be propagated
to apps. Fake it better.
Immediately disconnect from a route when the connection is lost or
a connection attempt fails. Added a few new test displays for this
case.
Bug: 11257292
Change-Id: I360ab5dc937ad60d97592eab54b19f034519645e
Fixed the Preference ordering code to consider the case where
two preferences might have the same order. In that case, it
falls back on the title to disambiguate. Previous behavior was
undefined (and technically not stable).
Expose the wifi display device address.
Perform wifi display scans every 10 seconds instead of every 15
to improve reponsiveness.
Make sure to define routes for wifi displays that we are connecting
to even if they are not yet paired. Simplified the logic for
adding and removing these routes to avoid possibly getting out
of sync and leaving stale routes behind.
Fix wifi display notification icon.
Bug: 11257292
Change-Id: I8ac15fb17d83758c0bdce80399e12723c367b83c
Port the new style UI back into the framework from the support library.
There are now two dialogs: a chooser and a controller. We use the
same dialogs for selecting routes within app and within quick settings.
Note that the new UI does not support any grouping features since they
are deprecated and unused.
Bug: 11257292
Change-Id: I64e936a18d25ab75f0c470cbc1e7085f67004863
This change adds a new media router service whose purpose is to track
global state information associated with media routes. This service
publishes routes to the media router instance in application processes
and handles requested state changes such as selecting or unselecting
global routes. The service also binds to remote display provider
services which can offer new remote display routes to the system.
Includes a test application for manually verifying certain aspects
of the operation of the media router service.
The remote display provider interface is essentially a stripped down
media route provider interface as defined in the support library
media router implementation. For now, it is designed to be used only
by first parties to publish remote display routes to the system so
it is not exposed as public API in the SDK. In the future, the remote
display provider interface will most likely be deprecated and replaced
with a more featureful media route provider interface for third
party integration, similar to what is in the support library today.
Further patch sets integrate these new capabilities into the System UI
and Settings for connecting remote displays.
Bug: 11257292
Change-Id: I31109f23f17b474d17534d0f5f4503e388b081c2
This API is needed by the support library media router to ensure
that wifi display routes can be discovered while the route
chooser dialog is open.
Bug: 8175766
Change-Id: I3773773d93384aa4a3c009e71a5444ee8ce37caf
We could sometimes crash due to some inconsistencies in the
way the wifi display routes were updates when connecting,
disconnecting or scanning wifi displays.
Bug: 8837094
Change-Id: I10c7ccb163ec33c4ea107dfcb5074741049fe955
Media buttons: note when an application tries to take ownership
of the media buttons.
Audio focus: note when an application tries to take audio focus.
Volume levels: note changes to the volume level of the various
streams.
Maybe we should also have some ops for muting streams, soloing
streams, etc?
Change-Id: I79a5d477b0bad4ff61486cdb73ffb1196a674964
The support library MediaRouter implementation needs a couple
of extra generally useful APIs in the platform MediaRouter to ensure
that it can safely synchronize its state.
Change-Id: I72c5652e10f3b6de48800abfa922affbefbd250f
MediaRouter's policy so far has been around a single selected route,
but when route types are entirely orthogonal this should not be the
case. However we still don't want to get into a situation where we
have multiple, very different routes selected for different types at
the same time, we still want to have more of an element of
predictability.
Behavior of getSelectedRoute is now:
* If the selected route matches at least one type with the requested
type flags, it is still considered selected for that request.
* If the caller specifically requested the selected user route and the
currently selected route is not a user route, return null.
* If the requested type flags do not match any types with the selected
route, return the default system route.
Note that this is "any" behavior instead of "all" - this matches
existing usage of the method. We may consider adding an "all" variant
later on.
Bug 7588042
Change-Id: I3a79d8153ca6b882fd3ef6b9b1de8f538873dec2
Some Wifi display devices like to rename themselves after a
connection completes (or at other times). Make sure to update
the name of the display when we detect that it changed in
our scan results.
This problem is somewhat complicated by the fact that we remember
the display name persistently, so we need to update our list
of remembered displays too.
Improve the state machine to avoid redundant attempts to
disconnect or cancel connection.
Bug: 7478895
Change-Id: I35a9e2c6a8deadbe892dacd5e3b4a5a2b12d6cf0
This new API makes it possible for an application to ask on
which Display it should show a Presentation based on the currently
selected media route.
Also added a new API on DisplayManager to query displays that
support a certain category of uses.
Improved the documentation of the Presentation class to explain
how to choose an appropriate Display for presentation.
Bug: 7409073
Change-Id: Iab451215e570ae55f3718fc228303143c800fe51