Each MediaRoute2Provider instance saves session infos
published by MediaRoute2ProviderService.
For that, MediaRouter2ProviderService notifies provider info and session
infos simultaneously and to minimize the number of binder calls,
schedulePublishState is added into MediaRoute2ProviderService.
The saved sessions can be obtained by calling MRM.getActiveSessions().
Test: atest mediaroutertest
&& manually call MRM.getActiveSessions()
Change-Id: I6938105f8d154ad9542f7e7c6210a451ee4ae90d
A unique request id can be used to identify each request
and the client of the request.
Test: atest mediaroutertest
Change-Id: I3234eaf0c4d398a47d412bc13ce711165d87e2db
This CL unifies the different terms ([select, add, group] route)
which actually have the same meaning - into 'select'.
Same applies for ([deselect, remove]) -> deselect.
Bug: 146400872
Test: atest mediaroutertest
Change-Id: Ic985359dd53f8b30bba654e6a451fcdf3be6cf24
This CL pulls out the process of registering SessionCallback
from the method MediaRouter2#requestCreateSession.
Now the registered callback can be reused until unregistered.
Also, this renames existing (un)registerCallback methods to
(un)register'Route'Callback.
Bug: 146400872
Test: atest mediaroutertest
Change-Id: I68f71b0a857780ab9e2a0ca2a550af5ab4962f70
This CL adds session-related apis into MediaRouteProvider
so MediaRouterService can call them.
This CL also removes methods related to "route selection".
Test: atest mediaroutertest
Change-Id: I68c2cde91d305315e95e5d9ab1d6d23459c28c9d
RemoteUserInfo doesn't require IBinder for finer grained identification
among MediaControllers in the same process/package. So extra information
don't need to be shared across the processes.
Bug: 146815343
Test: Build
Change-Id: I6935c9c43b5fdfa0c608c753779e17b6cf0d341e
Since RouteSessionInfo and controlHints are passed
simultaenously, move controlHints into the session info
for simplicity.
Test: atest mediaroutertest
Change-Id: Id99e4d71744ab438e8fcd99101895c28e2585662
This CL adds
- connectionState : whether the route is connected/disconnected
- mIconUri : uri of the icon of the route
- deviceType : type of the route (BT, speaker, tv)
into MediaRoute2Info and corresponding tests
Bug: 146605788
Test: atest mediaroutertest
Change-Id: I8b3f33967478fd66d5a380bf5d069579f006b890
This CL introduces "session" into MediaRouterProviderService.
When a client wants to use a route of a provider, it should
request the provider to create a new session and then,
the client will control the session instead of a route.
Clients can add/remove routes into/from the session
(a.k.a. dynamic grouping) and transfer media to the other
route in a provider with less delay.
RouteSessionInfo holds information about a session and
MediaRoute2ProviderService must set session info and implement
abstract methods.
Bug: 142762829
Test: atest mediaroutertest
Change-Id: Iaf668d9a2c360cd9c7dbc5f1766d14e0d81bb3e3
Audio offload support was added to AudioTrack in Q,
but only a few encoding were exposed (MP3 & AAC).
This patch adds only Opus support.
For R we probably want to expose all format that the framework supports.
Bug: 146540917
Test: AudioTrackOffloadTest AudioFormatTest
Change-Id: I2ca57d45081668f76f8d9e153f66d1fd41209685
Signed-off-by: Kevin Rocard <krocard@google.com>
This method will list up routes that are actively used
by some applications.
Once dynamic grouping is implemented, it will return
sessions instead of routes.
Bug: 146604082
Test: atest mediaroutertest
Change-Id: Ic013d3c2ded47b7ebca0b4cf99d2a7ea75045dc1
New stream type: AUDIO_STREAM_ASSISTANT
This is intended to be used by a virtual assistant like
Google Assistant, Bixby, etc.
The audio stream has own volume alias and the volume
does not change by volume changes of other streams.
Bug: 123745215
Test: make
Change-Id: Iad07d9f0b25ea35c6d565be677af7815bf2f6bd7