Loading api/current.txt +12 −1 Original line number Diff line number Diff line Loading @@ -26882,7 +26882,8 @@ package android.media { method public void onDiscoveryPreferenceChanged(@NonNull android.media.RouteDiscoveryPreference); method public abstract void onReleaseSession(@NonNull String); method public abstract void onSelectRoute(@NonNull String, @NonNull String); method public abstract void onSetVolume(@NonNull String, int); method public abstract void onSetRouteVolume(@NonNull String, int); method public abstract void onSetSessionVolume(@NonNull String, int); method public abstract void onTransferToRoute(@NonNull String, @NonNull String); field public static final long REQUEST_ID_UNKNOWN = 0L; // 0x0L field public static final String SERVICE_INTERFACE = "android.media.MediaRoute2ProviderService"; Loading Loading @@ -27043,9 +27044,13 @@ package android.media { method @NonNull public java.util.List<android.media.MediaRoute2Info> getSelectableRoutes(); method @NonNull public java.util.List<android.media.MediaRoute2Info> getSelectedRoutes(); method @NonNull public java.util.List<android.media.MediaRoute2Info> getTransferrableRoutes(); method public int getVolume(); method public int getVolumeHandling(); method public int getVolumeMax(); method public boolean isReleased(); method public void release(); method public void selectRoute(@NonNull android.media.MediaRoute2Info); method public void setVolume(int); method public void transferToRoute(@NonNull android.media.MediaRoute2Info); } Loading Loading @@ -27440,6 +27445,9 @@ package android.media { method @NonNull public java.util.List<java.lang.String> getSelectableRoutes(); method @NonNull public java.util.List<java.lang.String> getSelectedRoutes(); method @NonNull public java.util.List<java.lang.String> getTransferrableRoutes(); method public int getVolume(); method public int getVolumeHandling(); method public int getVolumeMax(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.media.RoutingSessionInfo> CREATOR; } Loading @@ -27461,6 +27469,9 @@ package android.media { method @NonNull public android.media.RoutingSessionInfo.Builder removeSelectedRoute(@NonNull String); method @NonNull public android.media.RoutingSessionInfo.Builder removeTransferrableRoute(@NonNull String); method @NonNull public android.media.RoutingSessionInfo.Builder setControlHints(@Nullable android.os.Bundle); method @NonNull public android.media.RoutingSessionInfo.Builder setVolume(int); method @NonNull public android.media.RoutingSessionInfo.Builder setVolumeHandling(int); method @NonNull public android.media.RoutingSessionInfo.Builder setVolumeMax(int); } public final class Session2Command implements android.os.Parcelable { media/java/android/media/IMediaRoute2Provider.aidl +2 −1 Original line number Diff line number Diff line Loading @@ -36,5 +36,6 @@ oneway interface IMediaRoute2Provider { void transferToRoute(String sessionId, String routeId); void notifyControlRequestSent(String id, in Intent request); void requestSetVolume(String id, int volume); void setRouteVolume(String routeId, int volume); void setSessionVolume(String sessionId, int volume); } media/java/android/media/IMediaRouterService.aidl +5 −2 Original line number Diff line number Diff line Loading @@ -51,7 +51,8 @@ interface IMediaRouterService { void unregisterClient2(IMediaRouter2Client client); void sendControlRequest(IMediaRouter2Client client, in MediaRoute2Info route, in Intent request); void requestSetVolume2(IMediaRouter2Client client, in MediaRoute2Info route, int volume); void setRouteVolume2(IMediaRouter2Client client, in MediaRoute2Info route, int volume); void setSessionVolume2(IMediaRouter2Client client, String sessionId, int volume); void requestCreateSession(IMediaRouter2Client client, in MediaRoute2Info route, int requestId, in @nullable Bundle sessionHints); Loading @@ -67,8 +68,10 @@ interface IMediaRouterService { void requestCreateClientSession(IMediaRouter2Manager manager, String packageName, in @nullable MediaRoute2Info route, int requestId); void requestSetVolume2Manager(IMediaRouter2Manager manager, void setRouteVolume2Manager(IMediaRouter2Manager manager, in MediaRoute2Info route, int volume); void setSessionVolume2Manager(IMediaRouter2Manager manager, String sessionId, int volume); List<RoutingSessionInfo> getActiveSessions(IMediaRouter2Manager manager); void selectClientRoute(IMediaRouter2Manager manager, Loading media/java/android/media/MediaRoute2ProviderService.java +23 −5 Original line number Diff line number Diff line Loading @@ -122,16 +122,25 @@ public abstract class MediaRoute2ProviderService extends Service { * @hide */ //TODO: Discuss what to use for request (e.g., Intent? Request class?) public abstract void onControlRequest(@NonNull String routeId, @NonNull Intent request); public void onControlRequest(@NonNull String routeId, @NonNull Intent request) {} /** * Called when requestSetVolume is called on a route of the provider. * Called when a volume setting is requested on a route of the provider * * @param routeId the id of the route * @param volume the target volume * @see MediaRoute2Info#getVolumeMax() */ public abstract void onSetVolume(@NonNull String routeId, int volume); public abstract void onSetRouteVolume(@NonNull String routeId, int volume); /** * Called when {@link MediaRouter2.RoutingController#setVolume(int)} is called on * a routing session of the provider * * @param sessionId the id of the routing session * @param volume the target volume */ public abstract void onSetSessionVolume(@NonNull String sessionId, int volume); /** * Gets information of the session with the given id. Loading Loading @@ -513,12 +522,21 @@ public abstract class MediaRoute2ProviderService extends Service { } @Override public void requestSetVolume(String routeId, int volume) { public void setRouteVolume(String routeId, int volume) { if (!checkCallerisSystem()) { return; } mHandler.sendMessage(obtainMessage(MediaRoute2ProviderService::onSetVolume, mHandler.sendMessage(obtainMessage(MediaRoute2ProviderService::onSetRouteVolume, MediaRoute2ProviderService.this, routeId, volume)); } @Override public void setSessionVolume(String sessionId, int volume) { if (!checkCallerisSystem()) { return; } mHandler.sendMessage(obtainMessage(MediaRoute2ProviderService::onSetSessionVolume, MediaRoute2ProviderService.this, sessionId, volume)); } } } media/java/android/media/MediaRouter2.java +75 −2 Original line number Diff line number Diff line Loading @@ -446,7 +446,7 @@ public class MediaRouter2 { * @param volume The new volume value between 0 and {@link MediaRoute2Info#getVolumeMax}. * @hide */ public void requestSetVolume(@NonNull MediaRoute2Info route, int volume) { public void setRouteVolume(@NonNull MediaRoute2Info route, int volume) { Objects.requireNonNull(route, "route must not be null"); Client2 client; Loading @@ -455,7 +455,7 @@ public class MediaRouter2 { } if (client != null) { try { mMediaRouterService.requestSetVolume2(client, route, volume); mMediaRouterService.setRouteVolume2(client, route, volume); } catch (RemoteException ex) { Log.e(TAG, "Unable to send control request.", ex); } Loading Loading @@ -884,6 +884,43 @@ public class MediaRouter2 { } } /** * Gets information about how volume is handled on the session. * * @return {@link MediaRoute2Info#PLAYBACK_VOLUME_FIXED} or * {@link MediaRoute2Info#PLAYBACK_VOLUME_VARIABLE} */ @MediaRoute2Info.PlaybackVolume public int getVolumeHandling() { synchronized (mControllerLock) { return mSessionInfo.getVolumeHandling(); } } /** * Gets the maximum volume of the session. */ public int getVolumeMax() { synchronized (mControllerLock) { return mSessionInfo.getVolumeMax(); } } /** * Gets the current volume of the session. * <p> * When it's available, it represents the volume of routing session, which is a group * of selected routes. To get the volume of a route, * use {@link MediaRoute2Info#getVolume()}. * </p> * @see MediaRoute2Info#getVolume() */ public int getVolume() { synchronized (mControllerLock) { return mSessionInfo.getVolume(); } } /** * Returns true if this controller is released, false otherwise. * If it is released, then all other getters from this instance may return invalid values. Loading Loading @@ -1039,6 +1076,42 @@ public class MediaRouter2 { } } /** * Requests a volume change for the remote session asynchronously. * * @param volume The new volume value between 0 and {@link RoutingController#getVolumeMax} * (inclusive). * @see #getVolume() */ public void setVolume(int volume) { if (getVolumeHandling() == MediaRoute2Info.PLAYBACK_VOLUME_FIXED) { Log.w(TAG, "setVolume: the routing session has fixed volume. Ignoring."); return; } if (volume < 0 || volume > getVolumeMax()) { Log.w(TAG, "setVolume: the target volume is out of range. Ignoring"); return; } synchronized (mControllerLock) { if (mIsReleased) { Log.w(TAG, "setVolume is called on released controller. Ignoring."); return; } } Client2 client; synchronized (sRouterLock) { client = mClient; } if (client != null) { try { mMediaRouterService.setSessionVolume2(client, getId(), volume); } catch (RemoteException ex) { Log.e(TAG, "setVolume: Failed to deliver request.", ex); } } } /** * Release this controller and corresponding session. * Any operations on this controller after calling this method will be ignored. Loading Loading
api/current.txt +12 −1 Original line number Diff line number Diff line Loading @@ -26882,7 +26882,8 @@ package android.media { method public void onDiscoveryPreferenceChanged(@NonNull android.media.RouteDiscoveryPreference); method public abstract void onReleaseSession(@NonNull String); method public abstract void onSelectRoute(@NonNull String, @NonNull String); method public abstract void onSetVolume(@NonNull String, int); method public abstract void onSetRouteVolume(@NonNull String, int); method public abstract void onSetSessionVolume(@NonNull String, int); method public abstract void onTransferToRoute(@NonNull String, @NonNull String); field public static final long REQUEST_ID_UNKNOWN = 0L; // 0x0L field public static final String SERVICE_INTERFACE = "android.media.MediaRoute2ProviderService"; Loading Loading @@ -27043,9 +27044,13 @@ package android.media { method @NonNull public java.util.List<android.media.MediaRoute2Info> getSelectableRoutes(); method @NonNull public java.util.List<android.media.MediaRoute2Info> getSelectedRoutes(); method @NonNull public java.util.List<android.media.MediaRoute2Info> getTransferrableRoutes(); method public int getVolume(); method public int getVolumeHandling(); method public int getVolumeMax(); method public boolean isReleased(); method public void release(); method public void selectRoute(@NonNull android.media.MediaRoute2Info); method public void setVolume(int); method public void transferToRoute(@NonNull android.media.MediaRoute2Info); } Loading Loading @@ -27440,6 +27445,9 @@ package android.media { method @NonNull public java.util.List<java.lang.String> getSelectableRoutes(); method @NonNull public java.util.List<java.lang.String> getSelectedRoutes(); method @NonNull public java.util.List<java.lang.String> getTransferrableRoutes(); method public int getVolume(); method public int getVolumeHandling(); method public int getVolumeMax(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.media.RoutingSessionInfo> CREATOR; } Loading @@ -27461,6 +27469,9 @@ package android.media { method @NonNull public android.media.RoutingSessionInfo.Builder removeSelectedRoute(@NonNull String); method @NonNull public android.media.RoutingSessionInfo.Builder removeTransferrableRoute(@NonNull String); method @NonNull public android.media.RoutingSessionInfo.Builder setControlHints(@Nullable android.os.Bundle); method @NonNull public android.media.RoutingSessionInfo.Builder setVolume(int); method @NonNull public android.media.RoutingSessionInfo.Builder setVolumeHandling(int); method @NonNull public android.media.RoutingSessionInfo.Builder setVolumeMax(int); } public final class Session2Command implements android.os.Parcelable {
media/java/android/media/IMediaRoute2Provider.aidl +2 −1 Original line number Diff line number Diff line Loading @@ -36,5 +36,6 @@ oneway interface IMediaRoute2Provider { void transferToRoute(String sessionId, String routeId); void notifyControlRequestSent(String id, in Intent request); void requestSetVolume(String id, int volume); void setRouteVolume(String routeId, int volume); void setSessionVolume(String sessionId, int volume); }
media/java/android/media/IMediaRouterService.aidl +5 −2 Original line number Diff line number Diff line Loading @@ -51,7 +51,8 @@ interface IMediaRouterService { void unregisterClient2(IMediaRouter2Client client); void sendControlRequest(IMediaRouter2Client client, in MediaRoute2Info route, in Intent request); void requestSetVolume2(IMediaRouter2Client client, in MediaRoute2Info route, int volume); void setRouteVolume2(IMediaRouter2Client client, in MediaRoute2Info route, int volume); void setSessionVolume2(IMediaRouter2Client client, String sessionId, int volume); void requestCreateSession(IMediaRouter2Client client, in MediaRoute2Info route, int requestId, in @nullable Bundle sessionHints); Loading @@ -67,8 +68,10 @@ interface IMediaRouterService { void requestCreateClientSession(IMediaRouter2Manager manager, String packageName, in @nullable MediaRoute2Info route, int requestId); void requestSetVolume2Manager(IMediaRouter2Manager manager, void setRouteVolume2Manager(IMediaRouter2Manager manager, in MediaRoute2Info route, int volume); void setSessionVolume2Manager(IMediaRouter2Manager manager, String sessionId, int volume); List<RoutingSessionInfo> getActiveSessions(IMediaRouter2Manager manager); void selectClientRoute(IMediaRouter2Manager manager, Loading
media/java/android/media/MediaRoute2ProviderService.java +23 −5 Original line number Diff line number Diff line Loading @@ -122,16 +122,25 @@ public abstract class MediaRoute2ProviderService extends Service { * @hide */ //TODO: Discuss what to use for request (e.g., Intent? Request class?) public abstract void onControlRequest(@NonNull String routeId, @NonNull Intent request); public void onControlRequest(@NonNull String routeId, @NonNull Intent request) {} /** * Called when requestSetVolume is called on a route of the provider. * Called when a volume setting is requested on a route of the provider * * @param routeId the id of the route * @param volume the target volume * @see MediaRoute2Info#getVolumeMax() */ public abstract void onSetVolume(@NonNull String routeId, int volume); public abstract void onSetRouteVolume(@NonNull String routeId, int volume); /** * Called when {@link MediaRouter2.RoutingController#setVolume(int)} is called on * a routing session of the provider * * @param sessionId the id of the routing session * @param volume the target volume */ public abstract void onSetSessionVolume(@NonNull String sessionId, int volume); /** * Gets information of the session with the given id. Loading Loading @@ -513,12 +522,21 @@ public abstract class MediaRoute2ProviderService extends Service { } @Override public void requestSetVolume(String routeId, int volume) { public void setRouteVolume(String routeId, int volume) { if (!checkCallerisSystem()) { return; } mHandler.sendMessage(obtainMessage(MediaRoute2ProviderService::onSetVolume, mHandler.sendMessage(obtainMessage(MediaRoute2ProviderService::onSetRouteVolume, MediaRoute2ProviderService.this, routeId, volume)); } @Override public void setSessionVolume(String sessionId, int volume) { if (!checkCallerisSystem()) { return; } mHandler.sendMessage(obtainMessage(MediaRoute2ProviderService::onSetSessionVolume, MediaRoute2ProviderService.this, sessionId, volume)); } } }
media/java/android/media/MediaRouter2.java +75 −2 Original line number Diff line number Diff line Loading @@ -446,7 +446,7 @@ public class MediaRouter2 { * @param volume The new volume value between 0 and {@link MediaRoute2Info#getVolumeMax}. * @hide */ public void requestSetVolume(@NonNull MediaRoute2Info route, int volume) { public void setRouteVolume(@NonNull MediaRoute2Info route, int volume) { Objects.requireNonNull(route, "route must not be null"); Client2 client; Loading @@ -455,7 +455,7 @@ public class MediaRouter2 { } if (client != null) { try { mMediaRouterService.requestSetVolume2(client, route, volume); mMediaRouterService.setRouteVolume2(client, route, volume); } catch (RemoteException ex) { Log.e(TAG, "Unable to send control request.", ex); } Loading Loading @@ -884,6 +884,43 @@ public class MediaRouter2 { } } /** * Gets information about how volume is handled on the session. * * @return {@link MediaRoute2Info#PLAYBACK_VOLUME_FIXED} or * {@link MediaRoute2Info#PLAYBACK_VOLUME_VARIABLE} */ @MediaRoute2Info.PlaybackVolume public int getVolumeHandling() { synchronized (mControllerLock) { return mSessionInfo.getVolumeHandling(); } } /** * Gets the maximum volume of the session. */ public int getVolumeMax() { synchronized (mControllerLock) { return mSessionInfo.getVolumeMax(); } } /** * Gets the current volume of the session. * <p> * When it's available, it represents the volume of routing session, which is a group * of selected routes. To get the volume of a route, * use {@link MediaRoute2Info#getVolume()}. * </p> * @see MediaRoute2Info#getVolume() */ public int getVolume() { synchronized (mControllerLock) { return mSessionInfo.getVolume(); } } /** * Returns true if this controller is released, false otherwise. * If it is released, then all other getters from this instance may return invalid values. Loading Loading @@ -1039,6 +1076,42 @@ public class MediaRouter2 { } } /** * Requests a volume change for the remote session asynchronously. * * @param volume The new volume value between 0 and {@link RoutingController#getVolumeMax} * (inclusive). * @see #getVolume() */ public void setVolume(int volume) { if (getVolumeHandling() == MediaRoute2Info.PLAYBACK_VOLUME_FIXED) { Log.w(TAG, "setVolume: the routing session has fixed volume. Ignoring."); return; } if (volume < 0 || volume > getVolumeMax()) { Log.w(TAG, "setVolume: the target volume is out of range. Ignoring"); return; } synchronized (mControllerLock) { if (mIsReleased) { Log.w(TAG, "setVolume is called on released controller. Ignoring."); return; } } Client2 client; synchronized (sRouterLock) { client = mClient; } if (client != null) { try { mMediaRouterService.setSessionVolume2(client, getId(), volume); } catch (RemoteException ex) { Log.e(TAG, "setVolume: Failed to deliver request.", ex); } } } /** * Release this controller and corresponding session. * Any operations on this controller after calling this method will be ignored. Loading