Merge "Put requestId first in notifySessionCreated() arguments" into rvc-dev am: fde3c9ac59 am: 3eea5e81a6
Change-Id: I40374c06d20509877add279dd61e691a4d89a30b
This commit is contained in:
@@ -26902,7 +26902,7 @@ package android.media {
|
|||||||
method @Nullable public final android.media.RoutingSessionInfo getSessionInfo(@NonNull String);
|
method @Nullable public final android.media.RoutingSessionInfo getSessionInfo(@NonNull String);
|
||||||
method public final void notifyRequestFailed(long, int);
|
method public final void notifyRequestFailed(long, int);
|
||||||
method public final void notifyRoutes(@NonNull java.util.Collection<android.media.MediaRoute2Info>);
|
method public final void notifyRoutes(@NonNull java.util.Collection<android.media.MediaRoute2Info>);
|
||||||
method public final void notifySessionCreated(@NonNull android.media.RoutingSessionInfo, long);
|
method public final void notifySessionCreated(long, @NonNull android.media.RoutingSessionInfo);
|
||||||
method public final void notifySessionReleased(@NonNull String);
|
method public final void notifySessionReleased(@NonNull String);
|
||||||
method public final void notifySessionUpdated(@NonNull android.media.RoutingSessionInfo);
|
method public final void notifySessionUpdated(@NonNull android.media.RoutingSessionInfo);
|
||||||
method @CallSuper @Nullable public android.os.IBinder onBind(@NonNull android.content.Intent);
|
method @CallSuper @Nullable public android.os.IBinder onBind(@NonNull android.content.Intent);
|
||||||
|
|||||||
@@ -29,13 +29,13 @@ oneway interface IMediaRoute2ProviderService {
|
|||||||
// MediaRoute2ProviderService#MediaRoute2ProviderServiceStub for readability.
|
// MediaRoute2ProviderService#MediaRoute2ProviderServiceStub for readability.
|
||||||
void setCallback(IMediaRoute2ProviderServiceCallback callback);
|
void setCallback(IMediaRoute2ProviderServiceCallback callback);
|
||||||
void updateDiscoveryPreference(in RouteDiscoveryPreference discoveryPreference);
|
void updateDiscoveryPreference(in RouteDiscoveryPreference discoveryPreference);
|
||||||
void setRouteVolume(String routeId, int volume, long requestId);
|
void setRouteVolume(long requestId, String routeId, int volume);
|
||||||
|
|
||||||
void requestCreateSession(String packageName, String routeId, long requestId,
|
void requestCreateSession(long requestId, String packageName, String routeId,
|
||||||
in @nullable Bundle sessionHints);
|
in @nullable Bundle sessionHints);
|
||||||
void selectRoute(String sessionId, String routeId, long requestId);
|
void selectRoute(long requestId, String sessionId, String routeId);
|
||||||
void deselectRoute(String sessionId, String routeId, long requestId);
|
void deselectRoute(long requestId, String sessionId, String routeId);
|
||||||
void transferToRoute(String sessionId, String routeId, long requestId);
|
void transferToRoute(long requestId, String sessionId, String routeId);
|
||||||
void setSessionVolume(String sessionId, int volume, long requestId);
|
void setSessionVolume(long requestId, String sessionId, int volume);
|
||||||
void releaseSession(String sessionId, long requestId);
|
void releaseSession(long requestId, String sessionId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ import android.os.Bundle;
|
|||||||
oneway interface IMediaRoute2ProviderServiceCallback {
|
oneway interface IMediaRoute2ProviderServiceCallback {
|
||||||
// TODO: Change it to updateRoutes?
|
// TODO: Change it to updateRoutes?
|
||||||
void updateState(in MediaRoute2ProviderInfo providerInfo);
|
void updateState(in MediaRoute2ProviderInfo providerInfo);
|
||||||
void notifySessionCreated(in RoutingSessionInfo sessionInfo, long requestId);
|
void notifySessionCreated(long requestId, in RoutingSessionInfo sessionInfo);
|
||||||
void notifySessionUpdated(in RoutingSessionInfo sessionInfo);
|
void notifySessionUpdated(in RoutingSessionInfo sessionInfo);
|
||||||
void notifySessionReleased(in RoutingSessionInfo sessionInfo);
|
void notifySessionReleased(in RoutingSessionInfo sessionInfo);
|
||||||
void notifyRequestFailed(long requestId, int reason);
|
void notifyRequestFailed(long requestId, int reason);
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ oneway interface IMediaRouter2 {
|
|||||||
void notifyRoutesAdded(in List<MediaRoute2Info> routes);
|
void notifyRoutesAdded(in List<MediaRoute2Info> routes);
|
||||||
void notifyRoutesRemoved(in List<MediaRoute2Info> routes);
|
void notifyRoutesRemoved(in List<MediaRoute2Info> routes);
|
||||||
void notifyRoutesChanged(in List<MediaRoute2Info> routes);
|
void notifyRoutesChanged(in List<MediaRoute2Info> routes);
|
||||||
void notifySessionCreated(in @nullable RoutingSessionInfo sessionInfo, int requestId);
|
void notifySessionCreated(int requestId, in @nullable RoutingSessionInfo sessionInfo);
|
||||||
void notifySessionInfoChanged(in RoutingSessionInfo sessionInfo);
|
void notifySessionInfoChanged(in RoutingSessionInfo sessionInfo);
|
||||||
void notifySessionReleased(in RoutingSessionInfo sessionInfo);
|
void notifySessionReleased(in RoutingSessionInfo sessionInfo);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,8 +57,8 @@ interface IMediaRouterService {
|
|||||||
in RouteDiscoveryPreference preference);
|
in RouteDiscoveryPreference preference);
|
||||||
void setRouteVolumeWithRouter2(IMediaRouter2 router, in MediaRoute2Info route, int volume);
|
void setRouteVolumeWithRouter2(IMediaRouter2 router, in MediaRoute2Info route, int volume);
|
||||||
|
|
||||||
void requestCreateSessionWithRouter2(IMediaRouter2 router, in MediaRoute2Info route,
|
void requestCreateSessionWithRouter2(IMediaRouter2 router, int requestId,
|
||||||
int requestId, in @nullable Bundle sessionHints);
|
in MediaRoute2Info route, in @nullable Bundle sessionHints);
|
||||||
void selectRouteWithRouter2(IMediaRouter2 router, String sessionId, in MediaRoute2Info route);
|
void selectRouteWithRouter2(IMediaRouter2 router, String sessionId, in MediaRoute2Info route);
|
||||||
void deselectRouteWithRouter2(IMediaRouter2 router, String sessionId, in MediaRoute2Info route);
|
void deselectRouteWithRouter2(IMediaRouter2 router, String sessionId, in MediaRoute2Info route);
|
||||||
void transferToRouteWithRouter2(IMediaRouter2 router, String sessionId,
|
void transferToRouteWithRouter2(IMediaRouter2 router, String sessionId,
|
||||||
@@ -70,18 +70,18 @@ interface IMediaRouterService {
|
|||||||
List<RoutingSessionInfo> getActiveSessions(IMediaRouter2Manager manager);
|
List<RoutingSessionInfo> getActiveSessions(IMediaRouter2Manager manager);
|
||||||
void registerManager(IMediaRouter2Manager manager, String packageName);
|
void registerManager(IMediaRouter2Manager manager, String packageName);
|
||||||
void unregisterManager(IMediaRouter2Manager manager);
|
void unregisterManager(IMediaRouter2Manager manager);
|
||||||
void setRouteVolumeWithManager(IMediaRouter2Manager manager, in MediaRoute2Info route,
|
void setRouteVolumeWithManager(IMediaRouter2Manager manager, int requestId,
|
||||||
int volume, int requestId);
|
in MediaRoute2Info route, int volume);
|
||||||
|
|
||||||
void requestCreateSessionWithManager(IMediaRouter2Manager manager, String packageName,
|
void requestCreateSessionWithManager(IMediaRouter2Manager manager, int requestId,
|
||||||
in @nullable MediaRoute2Info route, int requestId);
|
String packageName, in @nullable MediaRoute2Info route);
|
||||||
void selectRouteWithManager(IMediaRouter2Manager manager, String sessionId,
|
void selectRouteWithManager(IMediaRouter2Manager manager, int requestId,
|
||||||
in MediaRoute2Info route, int requestId);
|
String sessionId, in MediaRoute2Info route);
|
||||||
void deselectRouteWithManager(IMediaRouter2Manager manager, String sessionId,
|
void deselectRouteWithManager(IMediaRouter2Manager manager, int requestId,
|
||||||
in MediaRoute2Info route, int requestId);
|
String sessionId, in MediaRoute2Info route);
|
||||||
void transferToRouteWithManager(IMediaRouter2Manager manager, String sessionId,
|
void transferToRouteWithManager(IMediaRouter2Manager manager, int requestId,
|
||||||
in MediaRoute2Info route, int requestId);
|
String sessionId, in MediaRoute2Info route);
|
||||||
void setSessionVolumeWithManager(IMediaRouter2Manager manager, String sessionId, int volume,
|
void setSessionVolumeWithManager(IMediaRouter2Manager manager, int requestId,
|
||||||
int requestId);
|
String sessionId, int volume);
|
||||||
void releaseSessionWithManager(IMediaRouter2Manager manager, String sessionId, int requestId);
|
void releaseSessionWithManager(IMediaRouter2Manager manager, int requestId, String sessionId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -78,11 +78,11 @@ public abstract class MediaRoute2ProviderService extends Service {
|
|||||||
public static final String SERVICE_INTERFACE = "android.media.MediaRoute2ProviderService";
|
public static final String SERVICE_INTERFACE = "android.media.MediaRoute2ProviderService";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The request ID to pass {@link #notifySessionCreated(RoutingSessionInfo, long)}
|
* The request ID to pass {@link #notifySessionCreated(long, RoutingSessionInfo)}
|
||||||
* when {@link MediaRoute2ProviderService} created a session although there was no creation
|
* when {@link MediaRoute2ProviderService} created a session although there was no creation
|
||||||
* request.
|
* request.
|
||||||
*
|
*
|
||||||
* @see #notifySessionCreated(RoutingSessionInfo, long)
|
* @see #notifySessionCreated(long, RoutingSessionInfo)
|
||||||
*/
|
*/
|
||||||
public static final long REQUEST_ID_NONE = 0;
|
public static final long REQUEST_ID_NONE = 0;
|
||||||
|
|
||||||
@@ -218,16 +218,16 @@ public abstract class MediaRoute2ProviderService extends Service {
|
|||||||
* If this session is created without any creation request, use {@link #REQUEST_ID_NONE}
|
* If this session is created without any creation request, use {@link #REQUEST_ID_NONE}
|
||||||
* as the request ID.
|
* as the request ID.
|
||||||
*
|
*
|
||||||
* @param sessionInfo information of the new session.
|
|
||||||
* The {@link RoutingSessionInfo#getId() id} of the session must be unique.
|
|
||||||
* @param requestId id of the previous request to create this session provided in
|
* @param requestId id of the previous request to create this session provided in
|
||||||
* {@link #onCreateSession(long, String, String, Bundle)}. Can be
|
* {@link #onCreateSession(long, String, String, Bundle)}. Can be
|
||||||
* {@link #REQUEST_ID_NONE} if this session is created without any request.
|
* {@link #REQUEST_ID_NONE} if this session is created without any request.
|
||||||
|
* @param sessionInfo information of the new session.
|
||||||
|
* The {@link RoutingSessionInfo#getId() id} of the session must be unique.
|
||||||
* @see #onCreateSession(long, String, String, Bundle)
|
* @see #onCreateSession(long, String, String, Bundle)
|
||||||
* @see #getSessionInfo(String)
|
* @see #getSessionInfo(String)
|
||||||
*/
|
*/
|
||||||
public final void notifySessionCreated(@NonNull RoutingSessionInfo sessionInfo,
|
public final void notifySessionCreated(long requestId,
|
||||||
long requestId) {
|
@NonNull RoutingSessionInfo sessionInfo) {
|
||||||
Objects.requireNonNull(sessionInfo, "sessionInfo must not be null");
|
Objects.requireNonNull(sessionInfo, "sessionInfo must not be null");
|
||||||
|
|
||||||
String sessionId = sessionInfo.getId();
|
String sessionId = sessionInfo.getId();
|
||||||
@@ -247,7 +247,7 @@ public abstract class MediaRoute2ProviderService extends Service {
|
|||||||
// TODO: Calling binder calls in multiple thread may cause timing issue.
|
// TODO: Calling binder calls in multiple thread may cause timing issue.
|
||||||
// Consider to change implementations to avoid the problems.
|
// Consider to change implementations to avoid the problems.
|
||||||
// For example, post binder calls, always send all sessions at once, etc.
|
// For example, post binder calls, always send all sessions at once, etc.
|
||||||
mRemoteCallback.notifySessionCreated(sessionInfo, requestId);
|
mRemoteCallback.notifySessionCreated(requestId, sessionInfo);
|
||||||
} catch (RemoteException ex) {
|
} catch (RemoteException ex) {
|
||||||
Log.w(TAG, "Failed to notify session created.");
|
Log.w(TAG, "Failed to notify session created.");
|
||||||
}
|
}
|
||||||
@@ -337,7 +337,7 @@ public abstract class MediaRoute2ProviderService extends Service {
|
|||||||
* Called when the service receives a request to create a session.
|
* Called when the service receives a request to create a session.
|
||||||
* <p>
|
* <p>
|
||||||
* You should create and maintain your own session and notifies the client of
|
* You should create and maintain your own session and notifies the client of
|
||||||
* session info. Call {@link #notifySessionCreated(RoutingSessionInfo, long)}
|
* session info. Call {@link #notifySessionCreated(long, RoutingSessionInfo)}
|
||||||
* with the given {@code requestId} to notify the information of a new session.
|
* with the given {@code requestId} to notify the information of a new session.
|
||||||
* The created session must have the same route feature and must include the given route
|
* The created session must have the same route feature and must include the given route
|
||||||
* specified by {@code routeId}.
|
* specified by {@code routeId}.
|
||||||
@@ -504,7 +504,7 @@ public abstract class MediaRoute2ProviderService extends Service {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setRouteVolume(String routeId, int volume, long requestId) {
|
public void setRouteVolume(long requestId, String routeId, int volume) {
|
||||||
if (!checkCallerisSystem()) {
|
if (!checkCallerisSystem()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -513,7 +513,7 @@ public abstract class MediaRoute2ProviderService extends Service {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void requestCreateSession(String packageName, String routeId, long requestId,
|
public void requestCreateSession(long requestId, String packageName, String routeId,
|
||||||
@Nullable Bundle requestCreateSession) {
|
@Nullable Bundle requestCreateSession) {
|
||||||
if (!checkCallerisSystem()) {
|
if (!checkCallerisSystem()) {
|
||||||
return;
|
return;
|
||||||
@@ -524,7 +524,7 @@ public abstract class MediaRoute2ProviderService extends Service {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void selectRoute(String sessionId, String routeId, long requestId) {
|
public void selectRoute(long requestId, String sessionId, String routeId) {
|
||||||
if (!checkCallerisSystem()) {
|
if (!checkCallerisSystem()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -537,7 +537,7 @@ public abstract class MediaRoute2ProviderService extends Service {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deselectRoute(String sessionId, String routeId, long requestId) {
|
public void deselectRoute(long requestId, String sessionId, String routeId) {
|
||||||
if (!checkCallerisSystem()) {
|
if (!checkCallerisSystem()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -550,7 +550,7 @@ public abstract class MediaRoute2ProviderService extends Service {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void transferToRoute(String sessionId, String routeId, long requestId) {
|
public void transferToRoute(long requestId, String sessionId, String routeId) {
|
||||||
if (!checkCallerisSystem()) {
|
if (!checkCallerisSystem()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -563,7 +563,7 @@ public abstract class MediaRoute2ProviderService extends Service {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setSessionVolume(String sessionId, int volume, long requestId) {
|
public void setSessionVolume(long requestId, String sessionId, int volume) {
|
||||||
if (!checkCallerisSystem()) {
|
if (!checkCallerisSystem()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -572,7 +572,7 @@ public abstract class MediaRoute2ProviderService extends Service {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void releaseSession(String sessionId, long requestId) {
|
public void releaseSession(long requestId, String sessionId) {
|
||||||
if (!checkCallerisSystem()) {
|
if (!checkCallerisSystem()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -429,11 +429,11 @@ public class MediaRouter2 {
|
|||||||
if (stub != null) {
|
if (stub != null) {
|
||||||
try {
|
try {
|
||||||
mMediaRouterService.requestCreateSessionWithRouter2(
|
mMediaRouterService.requestCreateSessionWithRouter2(
|
||||||
stub, route, requestId, controllerHints);
|
stub, requestId, route, controllerHints);
|
||||||
} catch (RemoteException ex) {
|
} catch (RemoteException ex) {
|
||||||
Log.e(TAG, "transfer: Unable to request to create controller.", ex);
|
Log.e(TAG, "transfer: Unable to request to create controller.", ex);
|
||||||
mHandler.sendMessage(obtainMessage(MediaRouter2::createControllerOnHandler,
|
mHandler.sendMessage(obtainMessage(MediaRouter2::createControllerOnHandler,
|
||||||
MediaRouter2.this, null, requestId));
|
MediaRouter2.this, requestId, null));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -559,7 +559,7 @@ public class MediaRouter2 {
|
|||||||
* <p>
|
* <p>
|
||||||
* Pass {@code null} to sessionInfo for the failure case.
|
* Pass {@code null} to sessionInfo for the failure case.
|
||||||
*/
|
*/
|
||||||
void createControllerOnHandler(@Nullable RoutingSessionInfo sessionInfo, int requestId) {
|
void createControllerOnHandler(int requestId, @Nullable RoutingSessionInfo sessionInfo) {
|
||||||
ControllerCreationRequest matchingRequest = null;
|
ControllerCreationRequest matchingRequest = null;
|
||||||
for (ControllerCreationRequest request : mControllerCreationRequests) {
|
for (ControllerCreationRequest request : mControllerCreationRequests) {
|
||||||
if (request.mRequestId == requestId) {
|
if (request.mRequestId == requestId) {
|
||||||
@@ -1378,9 +1378,9 @@ public class MediaRouter2 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void notifySessionCreated(@Nullable RoutingSessionInfo sessionInfo, int requestId) {
|
public void notifySessionCreated(int requestId, @Nullable RoutingSessionInfo sessionInfo) {
|
||||||
mHandler.sendMessage(obtainMessage(MediaRouter2::createControllerOnHandler,
|
mHandler.sendMessage(obtainMessage(MediaRouter2::createControllerOnHandler,
|
||||||
MediaRouter2.this, sessionInfo, requestId));
|
MediaRouter2.this, requestId, sessionInfo));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -329,7 +329,7 @@ public class MediaRouter2Manager {
|
|||||||
try {
|
try {
|
||||||
int requestId = mNextRequestId.getAndIncrement();
|
int requestId = mNextRequestId.getAndIncrement();
|
||||||
mMediaRouterService.requestCreateSessionWithManager(
|
mMediaRouterService.requestCreateSessionWithManager(
|
||||||
client, sessionInfo.getClientPackageName(), route, requestId);
|
client, requestId, sessionInfo.getClientPackageName(), route);
|
||||||
} catch (RemoteException ex) {
|
} catch (RemoteException ex) {
|
||||||
Log.e(TAG, "Unable to select media route", ex);
|
Log.e(TAG, "Unable to select media route", ex);
|
||||||
}
|
}
|
||||||
@@ -373,7 +373,7 @@ public class MediaRouter2Manager {
|
|||||||
if (client != null) {
|
if (client != null) {
|
||||||
try {
|
try {
|
||||||
int requestId = mNextRequestId.getAndIncrement();
|
int requestId = mNextRequestId.getAndIncrement();
|
||||||
mMediaRouterService.setRouteVolumeWithManager(client, route, volume, requestId);
|
mMediaRouterService.setRouteVolumeWithManager(client, requestId, route, volume);
|
||||||
} catch (RemoteException ex) {
|
} catch (RemoteException ex) {
|
||||||
Log.e(TAG, "Unable to send control request.", ex);
|
Log.e(TAG, "Unable to send control request.", ex);
|
||||||
}
|
}
|
||||||
@@ -406,7 +406,7 @@ public class MediaRouter2Manager {
|
|||||||
try {
|
try {
|
||||||
int requestId = mNextRequestId.getAndIncrement();
|
int requestId = mNextRequestId.getAndIncrement();
|
||||||
mMediaRouterService.setSessionVolumeWithManager(
|
mMediaRouterService.setSessionVolumeWithManager(
|
||||||
client, sessionInfo.getId(), volume, requestId);
|
client, requestId, sessionInfo.getId(), volume);
|
||||||
} catch (RemoteException ex) {
|
} catch (RemoteException ex) {
|
||||||
Log.e(TAG, "Unable to send control request.", ex);
|
Log.e(TAG, "Unable to send control request.", ex);
|
||||||
}
|
}
|
||||||
@@ -594,7 +594,7 @@ public class MediaRouter2Manager {
|
|||||||
try {
|
try {
|
||||||
int requestId = mNextRequestId.getAndIncrement();
|
int requestId = mNextRequestId.getAndIncrement();
|
||||||
mMediaRouterService.selectRouteWithManager(
|
mMediaRouterService.selectRouteWithManager(
|
||||||
mClient, sessionInfo.getId(), route, requestId);
|
mClient, requestId, sessionInfo.getId(), route);
|
||||||
} catch (RemoteException ex) {
|
} catch (RemoteException ex) {
|
||||||
Log.e(TAG, "selectRoute: Failed to send a request.", ex);
|
Log.e(TAG, "selectRoute: Failed to send a request.", ex);
|
||||||
}
|
}
|
||||||
@@ -639,7 +639,7 @@ public class MediaRouter2Manager {
|
|||||||
try {
|
try {
|
||||||
int requestId = mNextRequestId.getAndIncrement();
|
int requestId = mNextRequestId.getAndIncrement();
|
||||||
mMediaRouterService.deselectRouteWithManager(
|
mMediaRouterService.deselectRouteWithManager(
|
||||||
mClient, sessionInfo.getId(), route, requestId);
|
mClient, requestId, sessionInfo.getId(), route);
|
||||||
} catch (RemoteException ex) {
|
} catch (RemoteException ex) {
|
||||||
Log.e(TAG, "deselectRoute: Failed to send a request.", ex);
|
Log.e(TAG, "deselectRoute: Failed to send a request.", ex);
|
||||||
}
|
}
|
||||||
@@ -675,7 +675,7 @@ public class MediaRouter2Manager {
|
|||||||
try {
|
try {
|
||||||
int requestId = mNextRequestId.getAndIncrement();
|
int requestId = mNextRequestId.getAndIncrement();
|
||||||
mMediaRouterService.transferToRouteWithManager(
|
mMediaRouterService.transferToRouteWithManager(
|
||||||
mClient, sessionInfo.getId(), route, requestId);
|
mClient, requestId, sessionInfo.getId(), route);
|
||||||
} catch (RemoteException ex) {
|
} catch (RemoteException ex) {
|
||||||
Log.e(TAG, "transferToRoute: Failed to send a request.", ex);
|
Log.e(TAG, "transferToRoute: Failed to send a request.", ex);
|
||||||
}
|
}
|
||||||
@@ -703,7 +703,7 @@ public class MediaRouter2Manager {
|
|||||||
try {
|
try {
|
||||||
int requestId = mNextRequestId.getAndIncrement();
|
int requestId = mNextRequestId.getAndIncrement();
|
||||||
mMediaRouterService.releaseSessionWithManager(
|
mMediaRouterService.releaseSessionWithManager(
|
||||||
mClient, sessionInfo.getId(), requestId);
|
mClient, requestId, sessionInfo.getId());
|
||||||
} catch (RemoteException ex) {
|
} catch (RemoteException ex) {
|
||||||
Log.e(TAG, "releaseSession: Failed to send a request", ex);
|
Log.e(TAG, "releaseSession: Failed to send a request", ex);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -239,7 +239,7 @@ public class SampleMediaRoute2ProviderService extends MediaRoute2ProviderService
|
|||||||
// Set control hints with given sessionHints
|
// Set control hints with given sessionHints
|
||||||
.setControlHints(sessionHints)
|
.setControlHints(sessionHints)
|
||||||
.build();
|
.build();
|
||||||
notifySessionCreated(sessionInfo, requestId);
|
notifySessionCreated(requestId, sessionInfo);
|
||||||
publishRoutes();
|
publishRoutes();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -51,17 +51,17 @@ abstract class MediaRoute2Provider {
|
|||||||
mCallback = callback;
|
mCallback = callback;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract void requestCreateSession(String packageName, String routeId, long requestId,
|
public abstract void requestCreateSession(long requestId, String packageName, String routeId,
|
||||||
@Nullable Bundle sessionHints);
|
@Nullable Bundle sessionHints);
|
||||||
public abstract void releaseSession(String sessionId, long requestId);
|
public abstract void releaseSession(long requestId, String sessionId);
|
||||||
public abstract void updateDiscoveryPreference(RouteDiscoveryPreference discoveryPreference);
|
public abstract void updateDiscoveryPreference(RouteDiscoveryPreference discoveryPreference);
|
||||||
|
|
||||||
public abstract void selectRoute(String sessionId, String routeId, long requestId);
|
public abstract void selectRoute(long requestId, String sessionId, String routeId);
|
||||||
public abstract void deselectRoute(String sessionId, String routeId, long requestId);
|
public abstract void deselectRoute(long requestId, String sessionId, String routeId);
|
||||||
public abstract void transferToRoute(String sessionId, String routeId, long requestId);
|
public abstract void transferToRoute(long requestId, String sessionId, String routeId);
|
||||||
|
|
||||||
public abstract void setRouteVolume(String routeId, int volume, long requestId);
|
public abstract void setRouteVolume(long requestId, String routeId, int volume);
|
||||||
public abstract void setSessionVolume(String sessionId, int volume, long requestId);
|
public abstract void setSessionVolume(long requestId, String sessionId, int volume);
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
public String getUniqueId() {
|
public String getUniqueId() {
|
||||||
@@ -110,7 +110,7 @@ abstract class MediaRoute2Provider {
|
|||||||
public interface Callback {
|
public interface Callback {
|
||||||
void onProviderStateChanged(@Nullable MediaRoute2Provider provider);
|
void onProviderStateChanged(@Nullable MediaRoute2Provider provider);
|
||||||
void onSessionCreated(@NonNull MediaRoute2Provider provider,
|
void onSessionCreated(@NonNull MediaRoute2Provider provider,
|
||||||
@Nullable RoutingSessionInfo sessionInfo, long requestId);
|
long requestId, @Nullable RoutingSessionInfo sessionInfo);
|
||||||
void onSessionUpdated(@NonNull MediaRoute2Provider provider,
|
void onSessionUpdated(@NonNull MediaRoute2Provider provider,
|
||||||
@NonNull RoutingSessionInfo sessionInfo);
|
@NonNull RoutingSessionInfo sessionInfo);
|
||||||
void onSessionReleased(@NonNull MediaRoute2Provider provider,
|
void onSessionReleased(@NonNull MediaRoute2Provider provider,
|
||||||
|
|||||||
@@ -78,18 +78,18 @@ final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void requestCreateSession(String packageName, String routeId, long requestId,
|
public void requestCreateSession(long requestId, String packageName, String routeId,
|
||||||
Bundle sessionHints) {
|
Bundle sessionHints) {
|
||||||
if (mConnectionReady) {
|
if (mConnectionReady) {
|
||||||
mActiveConnection.requestCreateSession(packageName, routeId, requestId, sessionHints);
|
mActiveConnection.requestCreateSession(requestId, packageName, routeId, sessionHints);
|
||||||
updateBinding();
|
updateBinding();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void releaseSession(String sessionId, long requestId) {
|
public void releaseSession(long requestId, String sessionId) {
|
||||||
if (mConnectionReady) {
|
if (mConnectionReady) {
|
||||||
mActiveConnection.releaseSession(sessionId, requestId);
|
mActiveConnection.releaseSession(requestId, sessionId);
|
||||||
updateBinding();
|
updateBinding();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -103,38 +103,38 @@ final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void selectRoute(String sessionId, String routeId, long requestId) {
|
public void selectRoute(long requestId, String sessionId, String routeId) {
|
||||||
if (mConnectionReady) {
|
if (mConnectionReady) {
|
||||||
mActiveConnection.selectRoute(sessionId, routeId, requestId);
|
mActiveConnection.selectRoute(requestId, sessionId, routeId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deselectRoute(String sessionId, String routeId, long requestId) {
|
public void deselectRoute(long requestId, String sessionId, String routeId) {
|
||||||
if (mConnectionReady) {
|
if (mConnectionReady) {
|
||||||
mActiveConnection.deselectRoute(sessionId, routeId, requestId);
|
mActiveConnection.deselectRoute(requestId, sessionId, routeId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void transferToRoute(String sessionId, String routeId, long requestId) {
|
public void transferToRoute(long requestId, String sessionId, String routeId) {
|
||||||
if (mConnectionReady) {
|
if (mConnectionReady) {
|
||||||
mActiveConnection.transferToRoute(sessionId, routeId, requestId);
|
mActiveConnection.transferToRoute(requestId, sessionId, routeId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setRouteVolume(String routeId, int volume, long requestId) {
|
public void setRouteVolume(long requestId, String routeId, int volume) {
|
||||||
if (mConnectionReady) {
|
if (mConnectionReady) {
|
||||||
mActiveConnection.setRouteVolume(routeId, volume, requestId);
|
mActiveConnection.setRouteVolume(requestId, routeId, volume);
|
||||||
updateBinding();
|
updateBinding();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setSessionVolume(String sessionId, int volume, long requestId) {
|
public void setSessionVolume(long requestId, String sessionId, int volume) {
|
||||||
if (mConnectionReady) {
|
if (mConnectionReady) {
|
||||||
mActiveConnection.setSessionVolume(sessionId, volume, requestId);
|
mActiveConnection.setSessionVolume(requestId, sessionId, volume);
|
||||||
updateBinding();
|
updateBinding();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -294,8 +294,8 @@ final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider
|
|||||||
setAndNotifyProviderState(providerInfo);
|
setAndNotifyProviderState(providerInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onSessionCreated(Connection connection, RoutingSessionInfo sessionInfo,
|
private void onSessionCreated(Connection connection, long requestId,
|
||||||
long requestId) {
|
RoutingSessionInfo sessionInfo) {
|
||||||
if (mActiveConnection != connection) {
|
if (mActiveConnection != connection) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -325,7 +325,7 @@ final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
mCallback.onSessionCreated(this, sessionInfo, requestId);
|
mCallback.onSessionCreated(this, requestId, sessionInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onSessionUpdated(Connection connection, RoutingSessionInfo sessionInfo) {
|
private void onSessionUpdated(Connection connection, RoutingSessionInfo sessionInfo) {
|
||||||
@@ -452,18 +452,18 @@ final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider
|
|||||||
mCallbackStub.dispose();
|
mCallbackStub.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void requestCreateSession(String packageName, String routeId, long requestId,
|
public void requestCreateSession(long requestId, String packageName, String routeId,
|
||||||
Bundle sessionHints) {
|
Bundle sessionHints) {
|
||||||
try {
|
try {
|
||||||
mService.requestCreateSession(packageName, routeId, requestId, sessionHints);
|
mService.requestCreateSession(requestId, packageName, routeId, sessionHints);
|
||||||
} catch (RemoteException ex) {
|
} catch (RemoteException ex) {
|
||||||
Slog.e(TAG, "requestCreateSession: Failed to deliver request.");
|
Slog.e(TAG, "requestCreateSession: Failed to deliver request.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void releaseSession(String sessionId, long requestId) {
|
public void releaseSession(long requestId, String sessionId) {
|
||||||
try {
|
try {
|
||||||
mService.releaseSession(sessionId, requestId);
|
mService.releaseSession(requestId, sessionId);
|
||||||
} catch (RemoteException ex) {
|
} catch (RemoteException ex) {
|
||||||
Slog.e(TAG, "releaseSession: Failed to deliver request.");
|
Slog.e(TAG, "releaseSession: Failed to deliver request.");
|
||||||
}
|
}
|
||||||
@@ -477,41 +477,41 @@ final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void selectRoute(String sessionId, String routeId, long requestId) {
|
public void selectRoute(long requestId, String sessionId, String routeId) {
|
||||||
try {
|
try {
|
||||||
mService.selectRoute(sessionId, routeId, requestId);
|
mService.selectRoute(requestId, sessionId, routeId);
|
||||||
} catch (RemoteException ex) {
|
} catch (RemoteException ex) {
|
||||||
Slog.e(TAG, "selectRoute: Failed to deliver request.", ex);
|
Slog.e(TAG, "selectRoute: Failed to deliver request.", ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void deselectRoute(String sessionId, String routeId, long requestId) {
|
public void deselectRoute(long requestId, String sessionId, String routeId) {
|
||||||
try {
|
try {
|
||||||
mService.deselectRoute(sessionId, routeId, requestId);
|
mService.deselectRoute(requestId, sessionId, routeId);
|
||||||
} catch (RemoteException ex) {
|
} catch (RemoteException ex) {
|
||||||
Slog.e(TAG, "deselectRoute: Failed to deliver request.", ex);
|
Slog.e(TAG, "deselectRoute: Failed to deliver request.", ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void transferToRoute(String sessionId, String routeId, long requestId) {
|
public void transferToRoute(long requestId, String sessionId, String routeId) {
|
||||||
try {
|
try {
|
||||||
mService.transferToRoute(sessionId, routeId, requestId);
|
mService.transferToRoute(requestId, sessionId, routeId);
|
||||||
} catch (RemoteException ex) {
|
} catch (RemoteException ex) {
|
||||||
Slog.e(TAG, "transferToRoute: Failed to deliver request.", ex);
|
Slog.e(TAG, "transferToRoute: Failed to deliver request.", ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRouteVolume(String routeId, int volume, long requestId) {
|
public void setRouteVolume(long requestId, String routeId, int volume) {
|
||||||
try {
|
try {
|
||||||
mService.setRouteVolume(routeId, volume, requestId);
|
mService.setRouteVolume(requestId, routeId, volume);
|
||||||
} catch (RemoteException ex) {
|
} catch (RemoteException ex) {
|
||||||
Slog.e(TAG, "setRouteVolume: Failed to deliver request.", ex);
|
Slog.e(TAG, "setRouteVolume: Failed to deliver request.", ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSessionVolume(String sessionId, int volume, long requestId) {
|
public void setSessionVolume(long requestId, String sessionId, int volume) {
|
||||||
try {
|
try {
|
||||||
mService.setSessionVolume(sessionId, volume, requestId);
|
mService.setSessionVolume(requestId, sessionId, volume);
|
||||||
} catch (RemoteException ex) {
|
} catch (RemoteException ex) {
|
||||||
Slog.e(TAG, "setSessionVolume: Failed to deliver request.", ex);
|
Slog.e(TAG, "setSessionVolume: Failed to deliver request.", ex);
|
||||||
}
|
}
|
||||||
@@ -526,8 +526,8 @@ final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider
|
|||||||
mHandler.post(() -> onProviderStateUpdated(Connection.this, providerInfo));
|
mHandler.post(() -> onProviderStateUpdated(Connection.this, providerInfo));
|
||||||
}
|
}
|
||||||
|
|
||||||
void postSessionCreated(RoutingSessionInfo sessionInfo, long requestId) {
|
void postSessionCreated(long requestId, RoutingSessionInfo sessionInfo) {
|
||||||
mHandler.post(() -> onSessionCreated(Connection.this, sessionInfo, requestId));
|
mHandler.post(() -> onSessionCreated(Connection.this, requestId, sessionInfo));
|
||||||
}
|
}
|
||||||
|
|
||||||
void postSessionUpdated(RoutingSessionInfo sessionInfo) {
|
void postSessionUpdated(RoutingSessionInfo sessionInfo) {
|
||||||
@@ -564,10 +564,10 @@ final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void notifySessionCreated(RoutingSessionInfo sessionInfo, long requestId) {
|
public void notifySessionCreated(long requestId, RoutingSessionInfo sessionInfo) {
|
||||||
Connection connection = mConnectionRef.get();
|
Connection connection = mConnectionRef.get();
|
||||||
if (connection != null) {
|
if (connection != null) {
|
||||||
connection.postSessionCreated(sessionInfo, requestId);
|
connection.postSessionCreated(requestId, sessionInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -216,15 +216,15 @@ class MediaRouter2ServiceImpl {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void requestCreateSessionWithRouter2(IMediaRouter2 router, MediaRoute2Info route,
|
public void requestCreateSessionWithRouter2(IMediaRouter2 router, int requestId,
|
||||||
int requestId, Bundle sessionHints) {
|
MediaRoute2Info route, Bundle sessionHints) {
|
||||||
Objects.requireNonNull(router, "router must not be null");
|
Objects.requireNonNull(router, "router must not be null");
|
||||||
Objects.requireNonNull(route, "route must not be null");
|
Objects.requireNonNull(route, "route must not be null");
|
||||||
|
|
||||||
final long token = Binder.clearCallingIdentity();
|
final long token = Binder.clearCallingIdentity();
|
||||||
try {
|
try {
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
requestCreateSessionWithRouter2Locked(router, route, requestId, sessionHints);
|
requestCreateSessionWithRouter2Locked(requestId, router, route, sessionHints);
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
Binder.restoreCallingIdentity(token);
|
Binder.restoreCallingIdentity(token);
|
||||||
@@ -370,23 +370,23 @@ class MediaRouter2ServiceImpl {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRouteVolumeWithManager(IMediaRouter2Manager manager,
|
public void setRouteVolumeWithManager(IMediaRouter2Manager manager, int requestId,
|
||||||
MediaRoute2Info route, int volume, int requestId) {
|
MediaRoute2Info route, int volume) {
|
||||||
Objects.requireNonNull(manager, "manager must not be null");
|
Objects.requireNonNull(manager, "manager must not be null");
|
||||||
Objects.requireNonNull(route, "route must not be null");
|
Objects.requireNonNull(route, "route must not be null");
|
||||||
|
|
||||||
final long token = Binder.clearCallingIdentity();
|
final long token = Binder.clearCallingIdentity();
|
||||||
try {
|
try {
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
setRouteVolumeWithManagerLocked(manager, route, volume, requestId);
|
setRouteVolumeWithManagerLocked(requestId, manager, route, volume);
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
Binder.restoreCallingIdentity(token);
|
Binder.restoreCallingIdentity(token);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void requestCreateSessionWithManager(IMediaRouter2Manager manager, String packageName,
|
public void requestCreateSessionWithManager(IMediaRouter2Manager manager, int requestId,
|
||||||
MediaRoute2Info route, int requestId) {
|
String packageName, MediaRoute2Info route) {
|
||||||
Objects.requireNonNull(manager, "manager must not be null");
|
Objects.requireNonNull(manager, "manager must not be null");
|
||||||
if (TextUtils.isEmpty(packageName)) {
|
if (TextUtils.isEmpty(packageName)) {
|
||||||
throw new IllegalArgumentException("packageName must not be empty");
|
throw new IllegalArgumentException("packageName must not be empty");
|
||||||
@@ -395,15 +395,15 @@ class MediaRouter2ServiceImpl {
|
|||||||
final long token = Binder.clearCallingIdentity();
|
final long token = Binder.clearCallingIdentity();
|
||||||
try {
|
try {
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
requestCreateSessionWithManagerLocked(manager, packageName, route, requestId);
|
requestCreateSessionWithManagerLocked(requestId, manager, packageName, route);
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
Binder.restoreCallingIdentity(token);
|
Binder.restoreCallingIdentity(token);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void selectRouteWithManager(IMediaRouter2Manager manager, String uniqueSessionId,
|
public void selectRouteWithManager(IMediaRouter2Manager manager, int requestId,
|
||||||
MediaRoute2Info route, int requestId) {
|
String uniqueSessionId, MediaRoute2Info route) {
|
||||||
Objects.requireNonNull(manager, "manager must not be null");
|
Objects.requireNonNull(manager, "manager must not be null");
|
||||||
if (TextUtils.isEmpty(uniqueSessionId)) {
|
if (TextUtils.isEmpty(uniqueSessionId)) {
|
||||||
throw new IllegalArgumentException("uniqueSessionId must not be empty");
|
throw new IllegalArgumentException("uniqueSessionId must not be empty");
|
||||||
@@ -413,15 +413,15 @@ class MediaRouter2ServiceImpl {
|
|||||||
final long token = Binder.clearCallingIdentity();
|
final long token = Binder.clearCallingIdentity();
|
||||||
try {
|
try {
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
selectRouteWithManagerLocked(manager, uniqueSessionId, route, requestId);
|
selectRouteWithManagerLocked(requestId, manager, uniqueSessionId, route);
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
Binder.restoreCallingIdentity(token);
|
Binder.restoreCallingIdentity(token);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void deselectRouteWithManager(IMediaRouter2Manager manager, String uniqueSessionId,
|
public void deselectRouteWithManager(IMediaRouter2Manager manager, int requestId,
|
||||||
MediaRoute2Info route, int requestId) {
|
String uniqueSessionId, MediaRoute2Info route) {
|
||||||
Objects.requireNonNull(manager, "manager must not be null");
|
Objects.requireNonNull(manager, "manager must not be null");
|
||||||
if (TextUtils.isEmpty(uniqueSessionId)) {
|
if (TextUtils.isEmpty(uniqueSessionId)) {
|
||||||
throw new IllegalArgumentException("uniqueSessionId must not be empty");
|
throw new IllegalArgumentException("uniqueSessionId must not be empty");
|
||||||
@@ -431,15 +431,15 @@ class MediaRouter2ServiceImpl {
|
|||||||
final long token = Binder.clearCallingIdentity();
|
final long token = Binder.clearCallingIdentity();
|
||||||
try {
|
try {
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
deselectRouteWithManagerLocked(manager, uniqueSessionId, route, requestId);
|
deselectRouteWithManagerLocked(requestId, manager, uniqueSessionId, route);
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
Binder.restoreCallingIdentity(token);
|
Binder.restoreCallingIdentity(token);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void transferToRouteWithManager(IMediaRouter2Manager manager, String uniqueSessionId,
|
public void transferToRouteWithManager(IMediaRouter2Manager manager, int requestId,
|
||||||
MediaRoute2Info route, int requestId) {
|
String uniqueSessionId, MediaRoute2Info route) {
|
||||||
Objects.requireNonNull(manager, "manager must not be null");
|
Objects.requireNonNull(manager, "manager must not be null");
|
||||||
if (TextUtils.isEmpty(uniqueSessionId)) {
|
if (TextUtils.isEmpty(uniqueSessionId)) {
|
||||||
throw new IllegalArgumentException("uniqueSessionId must not be empty");
|
throw new IllegalArgumentException("uniqueSessionId must not be empty");
|
||||||
@@ -449,15 +449,15 @@ class MediaRouter2ServiceImpl {
|
|||||||
final long token = Binder.clearCallingIdentity();
|
final long token = Binder.clearCallingIdentity();
|
||||||
try {
|
try {
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
transferToRouteWithManagerLocked(manager, uniqueSessionId, route, requestId);
|
transferToRouteWithManagerLocked(requestId, manager, uniqueSessionId, route);
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
Binder.restoreCallingIdentity(token);
|
Binder.restoreCallingIdentity(token);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSessionVolumeWithManager(IMediaRouter2Manager manager,
|
public void setSessionVolumeWithManager(IMediaRouter2Manager manager, int requestId,
|
||||||
String uniqueSessionId, int volume, int requestId) {
|
String uniqueSessionId, int volume) {
|
||||||
Objects.requireNonNull(manager, "manager must not be null");
|
Objects.requireNonNull(manager, "manager must not be null");
|
||||||
if (TextUtils.isEmpty(uniqueSessionId)) {
|
if (TextUtils.isEmpty(uniqueSessionId)) {
|
||||||
throw new IllegalArgumentException("uniqueSessionId must not be empty");
|
throw new IllegalArgumentException("uniqueSessionId must not be empty");
|
||||||
@@ -466,15 +466,15 @@ class MediaRouter2ServiceImpl {
|
|||||||
final long token = Binder.clearCallingIdentity();
|
final long token = Binder.clearCallingIdentity();
|
||||||
try {
|
try {
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
setSessionVolumeWithManagerLocked(manager, uniqueSessionId, volume, requestId);
|
setSessionVolumeWithManagerLocked(requestId, manager, uniqueSessionId, volume);
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
Binder.restoreCallingIdentity(token);
|
Binder.restoreCallingIdentity(token);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void releaseSessionWithManager(IMediaRouter2Manager manager, String uniqueSessionId,
|
public void releaseSessionWithManager(IMediaRouter2Manager manager, int requestId,
|
||||||
int requestId) {
|
String uniqueSessionId) {
|
||||||
Objects.requireNonNull(manager, "manager must not be null");
|
Objects.requireNonNull(manager, "manager must not be null");
|
||||||
if (TextUtils.isEmpty(uniqueSessionId)) {
|
if (TextUtils.isEmpty(uniqueSessionId)) {
|
||||||
throw new IllegalArgumentException("uniqueSessionId must not be empty");
|
throw new IllegalArgumentException("uniqueSessionId must not be empty");
|
||||||
@@ -483,7 +483,7 @@ class MediaRouter2ServiceImpl {
|
|||||||
final long token = Binder.clearCallingIdentity();
|
final long token = Binder.clearCallingIdentity();
|
||||||
try {
|
try {
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
releaseSessionWithManagerLocked(manager, uniqueSessionId, requestId);
|
releaseSessionWithManagerLocked(requestId, manager, uniqueSessionId);
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
Binder.restoreCallingIdentity(token);
|
Binder.restoreCallingIdentity(token);
|
||||||
@@ -591,12 +591,13 @@ class MediaRouter2ServiceImpl {
|
|||||||
if (routerRecord != null) {
|
if (routerRecord != null) {
|
||||||
routerRecord.mUserRecord.mHandler.sendMessage(
|
routerRecord.mUserRecord.mHandler.sendMessage(
|
||||||
obtainMessage(UserHandler::setRouteVolumeOnHandler,
|
obtainMessage(UserHandler::setRouteVolumeOnHandler,
|
||||||
routerRecord.mUserRecord.mHandler, route, volume, DUMMY_REQUEST_ID));
|
routerRecord.mUserRecord.mHandler,
|
||||||
|
DUMMY_REQUEST_ID, route, volume));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void requestCreateSessionWithRouter2Locked(@NonNull IMediaRouter2 router,
|
private void requestCreateSessionWithRouter2Locked(int requestId, @NonNull IMediaRouter2 router,
|
||||||
@NonNull MediaRoute2Info route, int requestId, @Nullable Bundle sessionHints) {
|
@NonNull MediaRoute2Info route, @Nullable Bundle sessionHints) {
|
||||||
final IBinder binder = router.asBinder();
|
final IBinder binder = router.asBinder();
|
||||||
final RouterRecord routerRecord = mAllRouterRecords.get(binder);
|
final RouterRecord routerRecord = mAllRouterRecords.get(binder);
|
||||||
|
|
||||||
@@ -608,7 +609,7 @@ class MediaRouter2ServiceImpl {
|
|||||||
routerRecord.mUserRecord.mHandler.sendMessage(
|
routerRecord.mUserRecord.mHandler.sendMessage(
|
||||||
obtainMessage(UserHandler::requestCreateSessionOnHandler,
|
obtainMessage(UserHandler::requestCreateSessionOnHandler,
|
||||||
routerRecord.mUserRecord.mHandler,
|
routerRecord.mUserRecord.mHandler,
|
||||||
routerRecord, /* managerRecord= */ null, route, uniqueRequestId,
|
uniqueRequestId, routerRecord, /* managerRecord= */ null, route,
|
||||||
sessionHints));
|
sessionHints));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -623,8 +624,8 @@ class MediaRouter2ServiceImpl {
|
|||||||
|
|
||||||
routerRecord.mUserRecord.mHandler.sendMessage(
|
routerRecord.mUserRecord.mHandler.sendMessage(
|
||||||
obtainMessage(UserHandler::selectRouteOnHandler,
|
obtainMessage(UserHandler::selectRouteOnHandler,
|
||||||
routerRecord.mUserRecord.mHandler, routerRecord, uniqueSessionId, route,
|
routerRecord.mUserRecord.mHandler,
|
||||||
DUMMY_REQUEST_ID));
|
DUMMY_REQUEST_ID, routerRecord, uniqueSessionId, route));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void deselectRouteWithRouter2Locked(@NonNull IMediaRouter2 router,
|
private void deselectRouteWithRouter2Locked(@NonNull IMediaRouter2 router,
|
||||||
@@ -638,8 +639,8 @@ class MediaRouter2ServiceImpl {
|
|||||||
|
|
||||||
routerRecord.mUserRecord.mHandler.sendMessage(
|
routerRecord.mUserRecord.mHandler.sendMessage(
|
||||||
obtainMessage(UserHandler::deselectRouteOnHandler,
|
obtainMessage(UserHandler::deselectRouteOnHandler,
|
||||||
routerRecord.mUserRecord.mHandler, routerRecord, uniqueSessionId, route,
|
routerRecord.mUserRecord.mHandler,
|
||||||
DUMMY_REQUEST_ID));
|
DUMMY_REQUEST_ID, routerRecord, uniqueSessionId, route));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void transferToRouteWithRouter2Locked(@NonNull IMediaRouter2 router,
|
private void transferToRouteWithRouter2Locked(@NonNull IMediaRouter2 router,
|
||||||
@@ -653,8 +654,8 @@ class MediaRouter2ServiceImpl {
|
|||||||
|
|
||||||
routerRecord.mUserRecord.mHandler.sendMessage(
|
routerRecord.mUserRecord.mHandler.sendMessage(
|
||||||
obtainMessage(UserHandler::transferToRouteOnHandler,
|
obtainMessage(UserHandler::transferToRouteOnHandler,
|
||||||
routerRecord.mUserRecord.mHandler, routerRecord, uniqueSessionId, route,
|
routerRecord.mUserRecord.mHandler,
|
||||||
DUMMY_REQUEST_ID));
|
DUMMY_REQUEST_ID, routerRecord, uniqueSessionId, route));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setSessionVolumeWithRouter2Locked(@NonNull IMediaRouter2 router,
|
private void setSessionVolumeWithRouter2Locked(@NonNull IMediaRouter2 router,
|
||||||
@@ -668,8 +669,8 @@ class MediaRouter2ServiceImpl {
|
|||||||
|
|
||||||
routerRecord.mUserRecord.mHandler.sendMessage(
|
routerRecord.mUserRecord.mHandler.sendMessage(
|
||||||
obtainMessage(UserHandler::setSessionVolumeOnHandler,
|
obtainMessage(UserHandler::setSessionVolumeOnHandler,
|
||||||
routerRecord.mUserRecord.mHandler, uniqueSessionId, volume,
|
routerRecord.mUserRecord.mHandler,
|
||||||
DUMMY_REQUEST_ID));
|
DUMMY_REQUEST_ID, uniqueSessionId, volume));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void releaseSessionWithRouter2Locked(@NonNull IMediaRouter2 router,
|
private void releaseSessionWithRouter2Locked(@NonNull IMediaRouter2 router,
|
||||||
@@ -683,8 +684,8 @@ class MediaRouter2ServiceImpl {
|
|||||||
|
|
||||||
routerRecord.mUserRecord.mHandler.sendMessage(
|
routerRecord.mUserRecord.mHandler.sendMessage(
|
||||||
obtainMessage(UserHandler::releaseSessionOnHandler,
|
obtainMessage(UserHandler::releaseSessionOnHandler,
|
||||||
routerRecord.mUserRecord.mHandler, routerRecord, uniqueSessionId,
|
routerRecord.mUserRecord.mHandler,
|
||||||
DUMMY_REQUEST_ID));
|
DUMMY_REQUEST_ID, routerRecord, uniqueSessionId));
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
@@ -756,8 +757,9 @@ class MediaRouter2ServiceImpl {
|
|||||||
disposeUserIfNeededLocked(userRecord); // since manager removed from user
|
disposeUserIfNeededLocked(userRecord); // since manager removed from user
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setRouteVolumeWithManagerLocked(@NonNull IMediaRouter2Manager manager,
|
private void setRouteVolumeWithManagerLocked(int requestId,
|
||||||
@NonNull MediaRoute2Info route, int volume, int requestId) {
|
@NonNull IMediaRouter2Manager manager,
|
||||||
|
@NonNull MediaRoute2Info route, int volume) {
|
||||||
final IBinder binder = manager.asBinder();
|
final IBinder binder = manager.asBinder();
|
||||||
ManagerRecord managerRecord = mAllManagerRecords.get(binder);
|
ManagerRecord managerRecord = mAllManagerRecords.get(binder);
|
||||||
|
|
||||||
@@ -768,11 +770,13 @@ class MediaRouter2ServiceImpl {
|
|||||||
long uniqueRequestId = toUniqueRequestId(managerRecord.mManagerId, requestId);
|
long uniqueRequestId = toUniqueRequestId(managerRecord.mManagerId, requestId);
|
||||||
managerRecord.mUserRecord.mHandler.sendMessage(
|
managerRecord.mUserRecord.mHandler.sendMessage(
|
||||||
obtainMessage(UserHandler::setRouteVolumeOnHandler,
|
obtainMessage(UserHandler::setRouteVolumeOnHandler,
|
||||||
managerRecord.mUserRecord.mHandler, route, volume, uniqueRequestId));
|
managerRecord.mUserRecord.mHandler,
|
||||||
|
uniqueRequestId, route, volume));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void requestCreateSessionWithManagerLocked(@NonNull IMediaRouter2Manager manager,
|
private void requestCreateSessionWithManagerLocked(int requestId,
|
||||||
@NonNull String packageName, @NonNull MediaRoute2Info route, int requestId) {
|
@NonNull IMediaRouter2Manager manager,
|
||||||
|
@NonNull String packageName, @NonNull MediaRoute2Info route) {
|
||||||
ManagerRecord managerRecord = mAllManagerRecords.get(manager.asBinder());
|
ManagerRecord managerRecord = mAllManagerRecords.get(manager.asBinder());
|
||||||
if (managerRecord == null || !managerRecord.mTrusted) {
|
if (managerRecord == null || !managerRecord.mTrusted) {
|
||||||
return;
|
return;
|
||||||
@@ -789,12 +793,12 @@ class MediaRouter2ServiceImpl {
|
|||||||
routerRecord.mUserRecord.mHandler.sendMessage(
|
routerRecord.mUserRecord.mHandler.sendMessage(
|
||||||
obtainMessage(UserHandler::requestCreateSessionOnHandler,
|
obtainMessage(UserHandler::requestCreateSessionOnHandler,
|
||||||
routerRecord.mUserRecord.mHandler,
|
routerRecord.mUserRecord.mHandler,
|
||||||
routerRecord, managerRecord, route, uniqueRequestId,
|
uniqueRequestId, routerRecord, managerRecord, route,
|
||||||
/* sessionHints= */ null));
|
/* sessionHints= */ null));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void selectRouteWithManagerLocked(@NonNull IMediaRouter2Manager manager,
|
private void selectRouteWithManagerLocked(int requestId, @NonNull IMediaRouter2Manager manager,
|
||||||
@NonNull String uniqueSessionId, @NonNull MediaRoute2Info route, int requestId) {
|
@NonNull String uniqueSessionId, @NonNull MediaRoute2Info route) {
|
||||||
final IBinder binder = manager.asBinder();
|
final IBinder binder = manager.asBinder();
|
||||||
ManagerRecord managerRecord = mAllManagerRecords.get(binder);
|
ManagerRecord managerRecord = mAllManagerRecords.get(binder);
|
||||||
|
|
||||||
@@ -809,12 +813,13 @@ class MediaRouter2ServiceImpl {
|
|||||||
long uniqueRequestId = toUniqueRequestId(managerRecord.mManagerId, requestId);
|
long uniqueRequestId = toUniqueRequestId(managerRecord.mManagerId, requestId);
|
||||||
managerRecord.mUserRecord.mHandler.sendMessage(
|
managerRecord.mUserRecord.mHandler.sendMessage(
|
||||||
obtainMessage(UserHandler::selectRouteOnHandler,
|
obtainMessage(UserHandler::selectRouteOnHandler,
|
||||||
managerRecord.mUserRecord.mHandler, routerRecord, uniqueSessionId, route,
|
managerRecord.mUserRecord.mHandler,
|
||||||
uniqueRequestId));
|
uniqueRequestId, routerRecord, uniqueSessionId, route));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void deselectRouteWithManagerLocked(@NonNull IMediaRouter2Manager manager,
|
private void deselectRouteWithManagerLocked(int requestId,
|
||||||
@NonNull String uniqueSessionId, @NonNull MediaRoute2Info route, int requestId) {
|
@NonNull IMediaRouter2Manager manager,
|
||||||
|
@NonNull String uniqueSessionId, @NonNull MediaRoute2Info route) {
|
||||||
final IBinder binder = manager.asBinder();
|
final IBinder binder = manager.asBinder();
|
||||||
ManagerRecord managerRecord = mAllManagerRecords.get(binder);
|
ManagerRecord managerRecord = mAllManagerRecords.get(binder);
|
||||||
|
|
||||||
@@ -829,12 +834,13 @@ class MediaRouter2ServiceImpl {
|
|||||||
long uniqueRequestId = toUniqueRequestId(managerRecord.mManagerId, requestId);
|
long uniqueRequestId = toUniqueRequestId(managerRecord.mManagerId, requestId);
|
||||||
managerRecord.mUserRecord.mHandler.sendMessage(
|
managerRecord.mUserRecord.mHandler.sendMessage(
|
||||||
obtainMessage(UserHandler::deselectRouteOnHandler,
|
obtainMessage(UserHandler::deselectRouteOnHandler,
|
||||||
managerRecord.mUserRecord.mHandler, routerRecord, uniqueSessionId, route,
|
managerRecord.mUserRecord.mHandler,
|
||||||
uniqueRequestId));
|
uniqueRequestId, routerRecord, uniqueSessionId, route));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void transferToRouteWithManagerLocked(@NonNull IMediaRouter2Manager manager,
|
private void transferToRouteWithManagerLocked(int requestId,
|
||||||
@NonNull String uniqueSessionId, @NonNull MediaRoute2Info route, int requestId) {
|
@NonNull IMediaRouter2Manager manager,
|
||||||
|
@NonNull String uniqueSessionId, @NonNull MediaRoute2Info route) {
|
||||||
final IBinder binder = manager.asBinder();
|
final IBinder binder = manager.asBinder();
|
||||||
ManagerRecord managerRecord = mAllManagerRecords.get(binder);
|
ManagerRecord managerRecord = mAllManagerRecords.get(binder);
|
||||||
|
|
||||||
@@ -849,12 +855,13 @@ class MediaRouter2ServiceImpl {
|
|||||||
long uniqueRequestId = toUniqueRequestId(managerRecord.mManagerId, requestId);
|
long uniqueRequestId = toUniqueRequestId(managerRecord.mManagerId, requestId);
|
||||||
managerRecord.mUserRecord.mHandler.sendMessage(
|
managerRecord.mUserRecord.mHandler.sendMessage(
|
||||||
obtainMessage(UserHandler::transferToRouteOnHandler,
|
obtainMessage(UserHandler::transferToRouteOnHandler,
|
||||||
managerRecord.mUserRecord.mHandler, routerRecord, uniqueSessionId, route,
|
managerRecord.mUserRecord.mHandler,
|
||||||
uniqueRequestId));
|
uniqueRequestId, routerRecord, uniqueSessionId, route));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setSessionVolumeWithManagerLocked(@NonNull IMediaRouter2Manager manager,
|
private void setSessionVolumeWithManagerLocked(int requestId,
|
||||||
@NonNull String uniqueSessionId, int volume, int requestId) {
|
@NonNull IMediaRouter2Manager manager,
|
||||||
|
@NonNull String uniqueSessionId, int volume) {
|
||||||
final IBinder binder = manager.asBinder();
|
final IBinder binder = manager.asBinder();
|
||||||
ManagerRecord managerRecord = mAllManagerRecords.get(binder);
|
ManagerRecord managerRecord = mAllManagerRecords.get(binder);
|
||||||
|
|
||||||
@@ -865,12 +872,13 @@ class MediaRouter2ServiceImpl {
|
|||||||
long uniqueRequestId = toUniqueRequestId(managerRecord.mManagerId, requestId);
|
long uniqueRequestId = toUniqueRequestId(managerRecord.mManagerId, requestId);
|
||||||
managerRecord.mUserRecord.mHandler.sendMessage(
|
managerRecord.mUserRecord.mHandler.sendMessage(
|
||||||
obtainMessage(UserHandler::setSessionVolumeOnHandler,
|
obtainMessage(UserHandler::setSessionVolumeOnHandler,
|
||||||
managerRecord.mUserRecord.mHandler, uniqueSessionId, volume,
|
managerRecord.mUserRecord.mHandler,
|
||||||
uniqueRequestId));
|
uniqueRequestId, uniqueSessionId, volume));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void releaseSessionWithManagerLocked(@NonNull IMediaRouter2Manager manager,
|
private void releaseSessionWithManagerLocked(int requestId,
|
||||||
@NonNull String uniqueSessionId, int requestId) {
|
@NonNull IMediaRouter2Manager manager,
|
||||||
|
@NonNull String uniqueSessionId) {
|
||||||
final IBinder binder = manager.asBinder();
|
final IBinder binder = manager.asBinder();
|
||||||
ManagerRecord managerRecord = mAllManagerRecords.get(binder);
|
ManagerRecord managerRecord = mAllManagerRecords.get(binder);
|
||||||
|
|
||||||
@@ -887,8 +895,8 @@ class MediaRouter2ServiceImpl {
|
|||||||
long uniqueRequestId = toUniqueRequestId(managerRecord.mManagerId, requestId);
|
long uniqueRequestId = toUniqueRequestId(managerRecord.mManagerId, requestId);
|
||||||
managerRecord.mUserRecord.mHandler.sendMessage(
|
managerRecord.mUserRecord.mHandler.sendMessage(
|
||||||
obtainMessage(UserHandler::releaseSessionOnHandler,
|
obtainMessage(UserHandler::releaseSessionOnHandler,
|
||||||
managerRecord.mUserRecord.mHandler, routerRecord, uniqueSessionId,
|
managerRecord.mUserRecord.mHandler,
|
||||||
uniqueRequestId));
|
uniqueRequestId, routerRecord, uniqueSessionId));
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
@@ -925,8 +933,8 @@ class MediaRouter2ServiceImpl {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static long toUniqueRequestId(int routerOrManagerId, int originalRequestId) {
|
static long toUniqueRequestId(int requesterId, int originalRequestId) {
|
||||||
return ((long) routerOrManagerId << 32) | originalRequestId;
|
return ((long) requesterId << 32) | originalRequestId;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int toRequesterId(long uniqueRequestId) {
|
static int toRequesterId(long uniqueRequestId) {
|
||||||
@@ -1104,9 +1112,9 @@ class MediaRouter2ServiceImpl {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSessionCreated(@NonNull MediaRoute2Provider provider,
|
public void onSessionCreated(@NonNull MediaRoute2Provider provider,
|
||||||
@NonNull RoutingSessionInfo sessionInfo, long requestId) {
|
long requestId, @NonNull RoutingSessionInfo sessionInfo) {
|
||||||
sendMessage(PooledLambda.obtainMessage(UserHandler::onSessionCreatedOnHandler,
|
sendMessage(PooledLambda.obtainMessage(UserHandler::onSessionCreatedOnHandler,
|
||||||
this, provider, sessionInfo, requestId));
|
this, provider, requestId, sessionInfo));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1219,9 +1227,9 @@ class MediaRouter2ServiceImpl {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void requestCreateSessionOnHandler(@NonNull RouterRecord routerRecord,
|
private void requestCreateSessionOnHandler(long requestId,
|
||||||
@Nullable ManagerRecord managerRecord, @NonNull MediaRoute2Info route,
|
@NonNull RouterRecord routerRecord, @Nullable ManagerRecord managerRecord,
|
||||||
long requestId, @Nullable Bundle sessionHints) {
|
@NonNull MediaRoute2Info route, @Nullable Bundle sessionHints) {
|
||||||
|
|
||||||
final MediaRoute2Provider provider = findProvider(route.getProviderId());
|
final MediaRoute2Provider provider = findProvider(route.getProviderId());
|
||||||
if (provider == null) {
|
if (provider == null) {
|
||||||
@@ -1231,18 +1239,17 @@ class MediaRouter2ServiceImpl {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Apply timeout for each request (How many seconds should we wait?)
|
|
||||||
SessionCreationRequest request =
|
SessionCreationRequest request =
|
||||||
new SessionCreationRequest(routerRecord, managerRecord, route, requestId);
|
new SessionCreationRequest(routerRecord, requestId, route, managerRecord);
|
||||||
mSessionCreationRequests.add(request);
|
mSessionCreationRequests.add(request);
|
||||||
|
|
||||||
provider.requestCreateSession(routerRecord.mPackageName, route.getOriginalId(),
|
provider.requestCreateSession(requestId, routerRecord.mPackageName,
|
||||||
requestId, sessionHints);
|
route.getOriginalId(), sessionHints);
|
||||||
}
|
}
|
||||||
|
|
||||||
// routerRecord can be null if the session is system's.
|
// routerRecord can be null if the session is system's.
|
||||||
private void selectRouteOnHandler(@Nullable RouterRecord routerRecord,
|
private void selectRouteOnHandler(long requestId, @Nullable RouterRecord routerRecord,
|
||||||
@NonNull String uniqueSessionId, @NonNull MediaRoute2Info route, long requestId) {
|
@NonNull String uniqueSessionId, @NonNull MediaRoute2Info route) {
|
||||||
if (!checkArgumentsForSessionControl(routerRecord, uniqueSessionId, route,
|
if (!checkArgumentsForSessionControl(routerRecord, uniqueSessionId, route,
|
||||||
"selecting")) {
|
"selecting")) {
|
||||||
return;
|
return;
|
||||||
@@ -1254,12 +1261,12 @@ class MediaRouter2ServiceImpl {
|
|||||||
if (provider == null) {
|
if (provider == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
provider.selectRoute(getOriginalId(uniqueSessionId), route.getOriginalId(), requestId);
|
provider.selectRoute(requestId, getOriginalId(uniqueSessionId), route.getOriginalId());
|
||||||
}
|
}
|
||||||
|
|
||||||
// routerRecord can be null if the session is system's.
|
// routerRecord can be null if the session is system's.
|
||||||
private void deselectRouteOnHandler(@Nullable RouterRecord routerRecord,
|
private void deselectRouteOnHandler(long requestId, @Nullable RouterRecord routerRecord,
|
||||||
@NonNull String uniqueSessionId, @NonNull MediaRoute2Info route, long requestId) {
|
@NonNull String uniqueSessionId, @NonNull MediaRoute2Info route) {
|
||||||
if (!checkArgumentsForSessionControl(routerRecord, uniqueSessionId, route,
|
if (!checkArgumentsForSessionControl(routerRecord, uniqueSessionId, route,
|
||||||
"deselecting")) {
|
"deselecting")) {
|
||||||
return;
|
return;
|
||||||
@@ -1271,13 +1278,14 @@ class MediaRouter2ServiceImpl {
|
|||||||
if (provider == null) {
|
if (provider == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
provider.deselectRoute(getOriginalId(uniqueSessionId), route.getOriginalId(),
|
|
||||||
requestId);
|
provider.deselectRoute(requestId, getOriginalId(uniqueSessionId),
|
||||||
|
route.getOriginalId());
|
||||||
}
|
}
|
||||||
|
|
||||||
// routerRecord can be null if the session is system's.
|
// routerRecord can be null if the session is system's.
|
||||||
private void transferToRouteOnHandler(@Nullable RouterRecord routerRecord,
|
private void transferToRouteOnHandler(long requestId, @Nullable RouterRecord routerRecord,
|
||||||
@NonNull String uniqueSessionId, @NonNull MediaRoute2Info route, long requestId) {
|
@NonNull String uniqueSessionId, @NonNull MediaRoute2Info route) {
|
||||||
if (!checkArgumentsForSessionControl(routerRecord, uniqueSessionId, route,
|
if (!checkArgumentsForSessionControl(routerRecord, uniqueSessionId, route,
|
||||||
"transferring to")) {
|
"transferring to")) {
|
||||||
return;
|
return;
|
||||||
@@ -1289,8 +1297,8 @@ class MediaRouter2ServiceImpl {
|
|||||||
if (provider == null) {
|
if (provider == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
provider.transferToRoute(getOriginalId(uniqueSessionId), route.getOriginalId(),
|
provider.transferToRoute(requestId, getOriginalId(uniqueSessionId),
|
||||||
requestId);
|
route.getOriginalId());
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean checkArgumentsForSessionControl(@Nullable RouterRecord routerRecord,
|
private boolean checkArgumentsForSessionControl(@Nullable RouterRecord routerRecord,
|
||||||
@@ -1332,8 +1340,29 @@ class MediaRouter2ServiceImpl {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void releaseSessionOnHandler(@NonNull RouterRecord routerRecord,
|
private void setRouteVolumeOnHandler(long requestId, @NonNull MediaRoute2Info route,
|
||||||
@NonNull String uniqueSessionId, long uniqueRequestId) {
|
int volume) {
|
||||||
|
final MediaRoute2Provider provider = findProvider(route.getProviderId());
|
||||||
|
if (provider == null) {
|
||||||
|
Slog.w(TAG, "setRouteVolume: couldn't find provider for route=" + route);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
provider.setRouteVolume(requestId, route.getOriginalId(), volume);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setSessionVolumeOnHandler(long requestId, @NonNull String uniqueSessionId,
|
||||||
|
int volume) {
|
||||||
|
final MediaRoute2Provider provider = findProvider(getProviderId(uniqueSessionId));
|
||||||
|
if (provider == null) {
|
||||||
|
Slog.w(TAG, "setSessionVolume: couldn't find provider for session "
|
||||||
|
+ "id=" + uniqueSessionId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
provider.setSessionVolume(requestId, getOriginalId(uniqueSessionId), volume);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void releaseSessionOnHandler(long uniqueRequestId,
|
||||||
|
@NonNull RouterRecord routerRecord, @NonNull String uniqueSessionId) {
|
||||||
final RouterRecord matchingRecord = mSessionToRouterMap.get(uniqueSessionId);
|
final RouterRecord matchingRecord = mSessionToRouterMap.get(uniqueSessionId);
|
||||||
if (matchingRecord != routerRecord) {
|
if (matchingRecord != routerRecord) {
|
||||||
Slog.w(TAG, "Ignoring releasing session from non-matching router."
|
Slog.w(TAG, "Ignoring releasing session from non-matching router."
|
||||||
@@ -1363,11 +1392,11 @@ class MediaRouter2ServiceImpl {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
provider.releaseSession(sessionId, uniqueRequestId);
|
provider.releaseSession(uniqueRequestId, sessionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onSessionCreatedOnHandler(@NonNull MediaRoute2Provider provider,
|
private void onSessionCreatedOnHandler(@NonNull MediaRoute2Provider provider,
|
||||||
@NonNull RoutingSessionInfo sessionInfo, long requestId) {
|
long requestId, @NonNull RoutingSessionInfo sessionInfo) {
|
||||||
notifySessionCreatedToManagers(getManagers(), sessionInfo);
|
notifySessionCreatedToManagers(getManagers(), sessionInfo);
|
||||||
|
|
||||||
if (requestId == REQUEST_ID_NONE) {
|
if (requestId == REQUEST_ID_NONE) {
|
||||||
@@ -1415,7 +1444,7 @@ class MediaRouter2ServiceImpl {
|
|||||||
|
|
||||||
// Succeeded
|
// Succeeded
|
||||||
notifySessionCreatedToRouter(matchingRequest.mRouterRecord,
|
notifySessionCreatedToRouter(matchingRequest.mRouterRecord,
|
||||||
sessionInfo, toOriginalRequestId(requestId));
|
toOriginalRequestId(requestId), sessionInfo);
|
||||||
mSessionToRouterMap.put(sessionInfo.getId(), routerRecord);
|
mSessionToRouterMap.put(sessionInfo.getId(), routerRecord);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1510,9 +1539,9 @@ class MediaRouter2ServiceImpl {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void notifySessionCreatedToRouter(@NonNull RouterRecord routerRecord,
|
private void notifySessionCreatedToRouter(@NonNull RouterRecord routerRecord,
|
||||||
@NonNull RoutingSessionInfo sessionInfo, int requestId) {
|
int requestId, @NonNull RoutingSessionInfo sessionInfo) {
|
||||||
try {
|
try {
|
||||||
routerRecord.mRouter.notifySessionCreated(sessionInfo, requestId);
|
routerRecord.mRouter.notifySessionCreated(requestId, sessionInfo);
|
||||||
} catch (RemoteException ex) {
|
} catch (RemoteException ex) {
|
||||||
Slog.w(TAG, "Failed to notify router of the session creation."
|
Slog.w(TAG, "Failed to notify router of the session creation."
|
||||||
+ " Router probably died.", ex);
|
+ " Router probably died.", ex);
|
||||||
@@ -1522,7 +1551,7 @@ class MediaRouter2ServiceImpl {
|
|||||||
private void notifySessionCreationFailedToRouter(@NonNull RouterRecord routerRecord,
|
private void notifySessionCreationFailedToRouter(@NonNull RouterRecord routerRecord,
|
||||||
int requestId) {
|
int requestId) {
|
||||||
try {
|
try {
|
||||||
routerRecord.mRouter.notifySessionCreated(/* sessionInfo= */ null, requestId);
|
routerRecord.mRouter.notifySessionCreated(requestId, /* sessionInfo= */ null);
|
||||||
} catch (RemoteException ex) {
|
} catch (RemoteException ex) {
|
||||||
Slog.w(TAG, "Failed to notify router of the session creation failure."
|
Slog.w(TAG, "Failed to notify router of the session creation failure."
|
||||||
+ " Router probably died.", ex);
|
+ " Router probably died.", ex);
|
||||||
@@ -1549,25 +1578,6 @@ class MediaRouter2ServiceImpl {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setRouteVolumeOnHandler(@NonNull MediaRoute2Info route, int volume,
|
|
||||||
long requestId) {
|
|
||||||
final MediaRoute2Provider provider = findProvider(route.getProviderId());
|
|
||||||
if (provider != null) {
|
|
||||||
provider.setRouteVolume(route.getOriginalId(), volume, requestId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setSessionVolumeOnHandler(@NonNull String uniqueSessionId, int volume,
|
|
||||||
long requestId) {
|
|
||||||
final MediaRoute2Provider provider = findProvider(getProviderId(uniqueSessionId));
|
|
||||||
if (provider == null) {
|
|
||||||
Slog.w(TAG, "setSessionVolume: couldn't find provider for session "
|
|
||||||
+ "id=" + uniqueSessionId);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
provider.setSessionVolume(getOriginalId(uniqueSessionId), volume, requestId);
|
|
||||||
}
|
|
||||||
|
|
||||||
private List<IMediaRouter2> getRouters() {
|
private List<IMediaRouter2> getRouters() {
|
||||||
final List<IMediaRouter2> routers = new ArrayList<>();
|
final List<IMediaRouter2> routers = new ArrayList<>();
|
||||||
MediaRouter2ServiceImpl service = mServiceRef.get();
|
MediaRouter2ServiceImpl service = mServiceRef.get();
|
||||||
@@ -1599,7 +1609,7 @@ class MediaRouter2ServiceImpl {
|
|||||||
private List<ManagerRecord> getManagerRecords() {
|
private List<ManagerRecord> getManagerRecords() {
|
||||||
MediaRouter2ServiceImpl service = mServiceRef.get();
|
MediaRouter2ServiceImpl service = mServiceRef.get();
|
||||||
if (service == null) {
|
if (service == null) {
|
||||||
return new ArrayList<>();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
synchronized (service.mLock) {
|
synchronized (service.mLock) {
|
||||||
return new ArrayList<>(mUserRecord.mManagerRecords);
|
return new ArrayList<>(mUserRecord.mManagerRecords);
|
||||||
@@ -1799,18 +1809,18 @@ class MediaRouter2ServiceImpl {
|
|||||||
|
|
||||||
final class SessionCreationRequest {
|
final class SessionCreationRequest {
|
||||||
public final RouterRecord mRouterRecord;
|
public final RouterRecord mRouterRecord;
|
||||||
public final ManagerRecord mRequestedManagerRecord;
|
|
||||||
public final MediaRoute2Info mRoute;
|
|
||||||
public final long mRequestId;
|
public final long mRequestId;
|
||||||
|
public final MediaRoute2Info mRoute;
|
||||||
|
public final ManagerRecord mRequestedManagerRecord;
|
||||||
|
|
||||||
// requestedManagerRecord is not null only when the request is made by manager.
|
// requestedManagerRecord is not null only when the request is made by manager.
|
||||||
SessionCreationRequest(@NonNull RouterRecord routerRecord,
|
SessionCreationRequest(@NonNull RouterRecord routerRecord, long requestId,
|
||||||
@Nullable ManagerRecord requestedManagerRecord,
|
@NonNull MediaRoute2Info route,
|
||||||
@NonNull MediaRoute2Info route, long requestId) {
|
@Nullable ManagerRecord requestedManagerRecord) {
|
||||||
mRouterRecord = routerRecord;
|
mRouterRecord = routerRecord;
|
||||||
mRequestedManagerRecord = requestedManagerRecord;
|
|
||||||
mRoute = route;
|
|
||||||
mRequestId = requestId;
|
mRequestId = requestId;
|
||||||
|
mRoute = route;
|
||||||
|
mRequestedManagerRecord = requestedManagerRecord;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -480,9 +480,9 @@ public final class MediaRouterService extends IMediaRouterService.Stub
|
|||||||
|
|
||||||
// Binder call
|
// Binder call
|
||||||
@Override
|
@Override
|
||||||
public void requestCreateSessionWithRouter2(IMediaRouter2 router, MediaRoute2Info route,
|
public void requestCreateSessionWithRouter2(IMediaRouter2 router, int requestId,
|
||||||
int requestId, Bundle sessionHints) {
|
MediaRoute2Info route, Bundle sessionHints) {
|
||||||
mService2.requestCreateSessionWithRouter2(router, route, requestId, sessionHints);
|
mService2.requestCreateSessionWithRouter2(router, requestId, route, sessionHints);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Binder call
|
// Binder call
|
||||||
@@ -542,51 +542,51 @@ public final class MediaRouterService extends IMediaRouterService.Stub
|
|||||||
|
|
||||||
// Binder call
|
// Binder call
|
||||||
@Override
|
@Override
|
||||||
public void setRouteVolumeWithManager(IMediaRouter2Manager manager,
|
public void setRouteVolumeWithManager(IMediaRouter2Manager manager, int requestId,
|
||||||
MediaRoute2Info route, int volume, int requestId) {
|
MediaRoute2Info route, int volume) {
|
||||||
mService2.setRouteVolumeWithManager(manager, route, volume, requestId);
|
mService2.setRouteVolumeWithManager(manager, requestId, route, volume);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Binder call
|
// Binder call
|
||||||
@Override
|
@Override
|
||||||
public void requestCreateSessionWithManager(IMediaRouter2Manager manager, String packageName,
|
public void requestCreateSessionWithManager(IMediaRouter2Manager manager,
|
||||||
MediaRoute2Info route, int requestId) {
|
int requestId, String packageName, MediaRoute2Info route) {
|
||||||
mService2.requestCreateSessionWithManager(manager, packageName, route, requestId);
|
mService2.requestCreateSessionWithManager(manager, requestId, packageName, route);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Binder call
|
// Binder call
|
||||||
@Override
|
@Override
|
||||||
public void selectRouteWithManager(IMediaRouter2Manager manager, String sessionId,
|
public void selectRouteWithManager(IMediaRouter2Manager manager, int requestId,
|
||||||
MediaRoute2Info route, int requestId) {
|
String sessionId, MediaRoute2Info route) {
|
||||||
mService2.selectRouteWithManager(manager, sessionId, route, requestId);
|
mService2.selectRouteWithManager(manager, requestId, sessionId, route);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Binder call
|
// Binder call
|
||||||
@Override
|
@Override
|
||||||
public void deselectRouteWithManager(IMediaRouter2Manager manager, String sessionId,
|
public void deselectRouteWithManager(IMediaRouter2Manager manager, int requestId,
|
||||||
MediaRoute2Info route, int requestId) {
|
String sessionId, MediaRoute2Info route) {
|
||||||
mService2.deselectRouteWithManager(manager, sessionId, route, requestId);
|
mService2.deselectRouteWithManager(manager, requestId, sessionId, route);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Binder call
|
// Binder call
|
||||||
@Override
|
@Override
|
||||||
public void transferToRouteWithManager(IMediaRouter2Manager manager, String sessionId,
|
public void transferToRouteWithManager(IMediaRouter2Manager manager, int requestId,
|
||||||
MediaRoute2Info route, int requestId) {
|
String sessionId, MediaRoute2Info route) {
|
||||||
mService2.transferToRouteWithManager(manager, sessionId, route, requestId);
|
mService2.transferToRouteWithManager(manager, requestId, sessionId, route);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Binder call
|
// Binder call
|
||||||
@Override
|
@Override
|
||||||
public void setSessionVolumeWithManager(IMediaRouter2Manager manager,
|
public void setSessionVolumeWithManager(IMediaRouter2Manager manager, int requestId,
|
||||||
String sessionId, int volume, int requestId) {
|
String sessionId, int volume) {
|
||||||
mService2.setSessionVolumeWithManager(manager, sessionId, volume, requestId);
|
mService2.setSessionVolumeWithManager(manager, requestId, sessionId, volume);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Binder call
|
// Binder call
|
||||||
@Override
|
@Override
|
||||||
public void releaseSessionWithManager(IMediaRouter2Manager manager, String sessionId,
|
public void releaseSessionWithManager(IMediaRouter2Manager manager, int requestId,
|
||||||
int requestId) {
|
String sessionId) {
|
||||||
mService2.releaseSessionWithManager(manager, sessionId, requestId);
|
mService2.releaseSessionWithManager(manager, requestId, sessionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
void restoreBluetoothA2dp() {
|
void restoreBluetoothA2dp() {
|
||||||
|
|||||||
@@ -125,14 +125,14 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void requestCreateSession(String packageName, String routeId, long requestId,
|
public void requestCreateSession(long requestId, String packageName, String routeId,
|
||||||
Bundle sessionHints) {
|
Bundle sessionHints) {
|
||||||
// Handle it as an internal transfer.
|
// Handle it as an internal transfer.
|
||||||
transferToRoute(SYSTEM_SESSION_ID, routeId, requestId);
|
transferToRoute(requestId, SYSTEM_SESSION_ID, routeId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void releaseSession(String sessionId, long requestId) {
|
public void releaseSession(long requestId, String sessionId) {
|
||||||
// Do nothing
|
// Do nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -142,17 +142,17 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void selectRoute(String sessionId, String routeId, long requestId) {
|
public void selectRoute(long requestId, String sessionId, String routeId) {
|
||||||
// Do nothing since we don't support multiple BT yet.
|
// Do nothing since we don't support multiple BT yet.
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deselectRoute(String sessionId, String routeId, long requestId) {
|
public void deselectRoute(long requestId, String sessionId, String routeId) {
|
||||||
// Do nothing since we don't support multiple BT yet.
|
// Do nothing since we don't support multiple BT yet.
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void transferToRoute(String sessionId, String routeId, long requestId) {
|
public void transferToRoute(long requestId, String sessionId, String routeId) {
|
||||||
if (TextUtils.equals(routeId, mDefaultRoute.getId())) {
|
if (TextUtils.equals(routeId, mDefaultRoute.getId())) {
|
||||||
mBtRouteProvider.transferTo(null);
|
mBtRouteProvider.transferTo(null);
|
||||||
} else {
|
} else {
|
||||||
@@ -161,7 +161,7 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setRouteVolume(String routeId, int volume, long requestId) {
|
public void setRouteVolume(long requestId, String routeId, int volume) {
|
||||||
if (!TextUtils.equals(routeId, mSelectedRouteId)) {
|
if (!TextUtils.equals(routeId, mSelectedRouteId)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -169,7 +169,7 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setSessionVolume(String sessionId, int volume, long requestId) {
|
public void setSessionVolume(long requestId, String sessionId, int volume) {
|
||||||
// Do nothing since we don't support grouping volume yet.
|
// Do nothing since we don't support grouping volume yet.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user