Commit Graph

82 Commits

Author SHA1 Message Date
Sungsoo
909371b6f6 Make dispatchAudioRoutesChanged be called when BT A2DP status changed am: 71f3563c39 am: 139f1e3742
am: 220f348fb3

Change-Id: I34ebeddffe313747008ed6f7d941097bd67d7b9b
2016-09-29 11:27:02 +00:00
Sungsoo
69e48e6181 Revert "Disable selecting the default audio route when a BT route is avaiable" am: fa6f70e225 am: 96942eb2ef
am: 727ecf0264

Change-Id: I104fb3405e1841a2120edd546c55b28b85e02550
2016-09-29 11:26:11 +00:00
Sungsoo
71f3563c39 Make dispatchAudioRoutesChanged be called when BT A2DP status changed
Bug: 28517884, Bug: 31398128
Change-Id: Ic1e2f5e828a772c667caf1408ebfc9b0d7c3f7d4
2016-09-29 10:16:19 +09:00
Sungsoo
fa6f70e225 Revert "Disable selecting the default audio route when a BT route is avaiable"
This reverts commit 0d33113196.

Bug: 28517884, Bug: 31398128
Change-Id: Ida4a3fc1f6f0aae09a5c4463bca8619412f3db58
2016-09-29 10:15:54 +09:00
Sungsoo
4c3b24759d Disable selecting the default audio route when a BT route is avaiable am: 0d33113196 am: 9c18f58031
am: 9b2b7cdf83

Change-Id: I6bce27791fb0ae74d1317c967cfd4d244cbc2d8c
2016-09-14 04:43:41 +00:00
Sungsoo
0d33113196 Disable selecting the default audio route when a BT route is avaiable
Bug: 28517884
Change-Id: I537db7242adf8adb07f9860a0c43c9eaf40a4229
2016-09-08 15:14:27 +09:00
Hyundo Moon
eadd6d2329 MediaRouter: Make sStatic.mResources store application resources.
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
2016-08-19 15:07:33 +09:00
Jae Seo
18687b7a27 MediaRouter: Add more logs for debugging
Bug: 28517884
Change-Id: I325b407983e79a78701acfbfd8f109657f006846
2016-05-07 14:12:55 -07:00
Insun Kang
7c090d54e2 Annotate Media section of framework/base
Use @IntDef and @StringDef annotations where appropriate to ensure that
IDEs can autocomplete to the correct set of constants.

Bug: 22726900
Change-Id: I7626beb0634b754ffea9c012f42e6a21aa0faa51
2016-02-29 16:06:27 +09:00
Insun Kang
9dd66417ea MediaRouter: Add getDeviceType() to RouteInfo
Bug: 24777080
Change-Id: I5d7b44ec84371fbb9560578ece439e1a00dcdd50
2015-12-09 14:04:09 +09:00
P.Y. Laligand
9d93a378c5 Consistent null-checking in MediaRouter.
b/19747094

Change-Id: I5f8d086f717a11a9d03874e633471efed787a6c3
2015-04-16 16:22:35 -07:00
John Spurlock
bc4cf00dc5 Fix a few found doc problems.
Change-Id: I98567f4a0fc96f501c00bf361688e2c55232f78d
2015-03-24 21:51:20 -04:00
Tor Norbye
7b9c912f53 Add @ResourceInt annotations on APIs
Change-Id: I119cc059c2f8bd98fd585fc84ac2b1b7d5892a08
2015-02-18 07:49:03 -08:00
John Spurlock
6156017c22 Move AudioService to services.
...and a few dependencies. Move remaining shared items to AudioSystem.

Change-Id: Ib9623ff867678d34977337856bb0156e8cdaeeb5
2015-02-09 17:13:38 -05:00
RoboErik
0d0f67f5ee Update VolumeProvider apis per feedback
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
2014-09-03 16:29:15 -07:00
Jeff Brown
f1b2335a36 Only select bluetooth route by default when A2DP is enabled.
Bug: 15756471
Change-Id: I822e51742e009b473000b8d67ec9c9a81c39b702
2014-08-20 14:45:38 -07:00
RoboErik
9db9bf7034 Switch Session APIs over to AudioAttributes
The session apis were using audioStream in several places. This
updates them to use AudioAttributes instead.

bug:16403289
Change-Id: Ic4da9ca5fbea2536e80c71503bd9a9bf7f346997
2014-07-23 17:08:32 +00:00
RoboErik
1ff5b1648a Change adjustVolumeBy to adjustVolume
This makes volume adjustments take a direction instead of a number of
steps and renames the API appropriately.

Change-Id: I6a31cbc42d889a38aa63446686a424cb2b8b2270
2014-07-16 12:03:45 -07:00
RoboErik
ef3c9e9b05 Add volume handling APIs to sessions
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
2014-06-20 13:39:41 -07:00
RoboErik
430fc48865 Work on removing non-session media routing code
Change-Id: I73e7d22f2f8772c7b07ccf32d962161d79d5db74
2014-06-16 14:00:16 -07:00
RoboErik
5d3114b64a b/15388389 Add volume handling support to MediaRouter
This makes MediaRouter work with sessions to handle volume
requests. Should work with all existing custom volume handling.

Change-Id: I5dfde26a6203a1072b7fc700978b4ca852ebe7d0
2014-06-08 12:18:25 -07:00
Kenny Root
62d509d24f am 37c69fdd: Merge "Use java.util.Objects instead on internal API"
* commit '37c69fdd826f3973966430adc1abfbefc19bc16e':
  Use java.util.Objects instead on internal API
2013-12-13 14:17:29 -08:00
Kenny Root
e6585b32ea Use java.util.Objects instead on internal API
Not needed since java.util.Objects implements all the needed
functionality.

Change-Id: Icd31d49a9801d1705427f028e9ac927d58e7d34c
2013-12-13 13:40:30 -08:00
Jeff Brown
ce468a35b3 Stop wifi display discovery when no longer needed.
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
2013-11-21 19:32:59 -08:00
Chong Zhang
a68c87eda8 Only scan for wifi display when there is no active connections
Bug: 11717053
Change-Id: I4ab73f6517fbfb8fcc131b89d0e934380dcf69e0
2013-11-19 19:56:16 -08:00
Jeff Brown
af574183c2 Disallow applications from initiating cast screen.
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
2013-11-15 00:29:43 -08:00
Jeff Brown
39ad0e5598 UI tweaks.
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
2013-11-11 21:48:53 -08:00
Jeff Brown
75af171006 Changes to support new screen cast settings screen.
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
2013-11-10 22:51:15 -08:00
Jeff Brown
dd4f9e8b61 Merge "Update the media router dialogs and integrate into system UI." into klp-dev 2013-11-11 05:59:38 +00:00
Jeff Brown
0abd3a6ce8 Update the media router dialogs and integrate into system UI.
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
2013-11-10 14:39:19 -08:00
Chong Zhang
5830b0b336 Fixed a bug updating presentation displays.
Also made findRemoteDisplay public.

Bug: 11257292
Change-Id: Ibc9bf3d8ee7c90293ffd8796270e8883ea458a65
2013-11-08 19:02:48 -08:00
Jeff Brown
69b07161be Add media router service and integrate with remote displays.
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
2013-11-07 03:25:37 -08:00
Chong Zhang
2e5fbf5521 Select BT route when currently selected route becomes unavailable
Bug: 10003524
Change-Id: I5de740fac9f2bc2a56125296defe892a8deb505e
2013-07-26 15:36:37 -07:00
Chong Zhang
ab87a63997 MediaRouter: grey out wifi displays that's in use
bug 9229799

Change-Id: I9f5fd2107f60c492d42c74e575e6483838a51267
2013-06-13 20:17:39 -07:00
Jeff Brown
718aefb6ff am 6474d840: am 636af7a1: Merge "Rename CALLBACK_FLAG_ACTIVE_SCAN for clarity." into jb-mr2-dev
* commit '6474d8407cb1551608fc403861e11cf514f8558e':
  Rename CALLBACK_FLAG_ACTIVE_SCAN for clarity.
2013-05-30 18:02:31 -07:00
Jeff Brown
14507e257a Rename CALLBACK_FLAG_ACTIVE_SCAN for clarity.
Bug: 9210033
Change-Id: I973c03b3a37e12af72a27c46d7da7fb59a30b606
2013-05-30 14:44:18 -07:00
Jeff Brown
2feefe01e9 am b7871af2: am 50ab525a: Merge "Add route description API." into jb-mr2-dev
* commit 'b7871af2fbde70c7cf4812d5710b2729588bac54':
  Add route description API.
2013-05-17 12:46:08 -07:00
Jeff Brown
56d4b744b3 Add route description API.
Bug: 8175766
Change-Id: I65dbc10fc04f9ff8f6abc1bda23fbf5baa227737
2013-05-16 14:41:30 -07:00
Jeff Brown
83d551898d am f8e54846: am 9766caed: Merge "Add an API to determine if a route is connecting." into jb-mr2-dev
* commit 'f8e54846146c234aa9a201f54eea70df93ee56e2':
  Add an API to determine if a route is connecting.
2013-05-10 16:16:45 -07:00
Jeff Brown
a27b8fb429 Add an API to determine if a route is connecting.
Bug: 8175766
Change-Id: I54d5f31d4e7d79c471c0e1bbc438cd8ebb4f8a1e
2013-05-09 21:56:42 -07:00
Jeff Brown
89efc6e6c1 am da58f92b: am b2f6842d: Merge "Add an API to allow a callback to request active scans." into jb-mr2-dev
* commit 'da58f92bfaf875074656a55103c819e6f4dda341':
  Add an API to allow a callback to request active scans.
2013-05-09 17:09:24 -07:00
Jeff Brown
1f59cbb20a am 507a3c77: am 2298d68e: Merge "Fix bug managing wifi display routes." into jb-mr2-dev
* commit '507a3c77d583643f4a884c5d7b0c5e6bce3222bb':
  Fix bug managing wifi display routes.
2013-05-09 17:09:22 -07:00
Jeff Brown
66f3b39ec4 Add an API to allow a callback to request active scans.
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
2013-05-09 14:44:08 -07:00
Jeff Brown
77e59fef24 Fix bug managing wifi display routes.
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
2013-05-09 13:42:57 -07:00
Dianne Hackborn
ba50b97cff Add new app ops for various interesting audio service things.
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
2013-05-06 16:12:12 -07:00
Adam Powell
615e413a90 Make MediaRouter ignore remembered wifi displays when wifi display is off
Bug 8417329

Change-Id: Ica9bf1b250be4b72ba32e63d7eb1a6ff0b727961
2013-04-10 16:04:59 -07:00
Jeff Brown
3afc18af2c Enhance MediaRouter API.
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
2013-03-07 13:26:40 -08:00
Adam Powell
1cf2ca8358 Clean up behavior of type arguments for MediaRouter#getSelectedRoute
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
2012-11-28 11:22:01 -08:00
Jeff Brown
74da109102 Support Wifi display devices that rename themselves.
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
2012-11-07 18:43:32 -08:00
Jeff Brown
92130f6407 Add MediaRouter API to get presentation display.
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
2012-10-25 20:31:21 -07:00