Loading api/current.txt +83 −0 Original line number Diff line number Diff line Loading @@ -26297,6 +26297,59 @@ package android.media { field public static final int SURFACE = 2; // 0x2 } public final class MediaRoute2Info implements android.os.Parcelable { method public int describeContents(); method public int getConnectionState(); method @Nullable public CharSequence getDescription(); method public int getDeviceType(); method @Nullable public android.os.Bundle getExtras(); method @NonNull public java.util.List<java.lang.String> getFeatures(); method @Nullable public android.net.Uri getIconUri(); method @NonNull public String getId(); method @NonNull public CharSequence getName(); method public int getVolume(); method public int getVolumeHandling(); method public int getVolumeMax(); method public boolean hasAnyFeatures(@NonNull java.util.Collection<java.lang.String>); method public void writeToParcel(@NonNull android.os.Parcel, int); field public static final int CONNECTION_STATE_CONNECTED = 2; // 0x2 field public static final int CONNECTION_STATE_CONNECTING = 1; // 0x1 field public static final int CONNECTION_STATE_DISCONNECTED = 0; // 0x0 field @NonNull public static final android.os.Parcelable.Creator<android.media.MediaRoute2Info> CREATOR; field public static final int DEVICE_TYPE_BLUETOOTH = 3; // 0x3 field public static final int DEVICE_TYPE_REMOTE_SPEAKER = 2; // 0x2 field public static final int DEVICE_TYPE_REMOTE_TV = 1; // 0x1 field public static final int DEVICE_TYPE_UNKNOWN = 0; // 0x0 field public static final int PLAYBACK_VOLUME_FIXED = 0; // 0x0 field public static final int PLAYBACK_VOLUME_VARIABLE = 1; // 0x1 } public static final class MediaRoute2Info.Builder { ctor public MediaRoute2Info.Builder(@NonNull String, @NonNull CharSequence); ctor public MediaRoute2Info.Builder(@NonNull android.media.MediaRoute2Info); method @NonNull public android.media.MediaRoute2Info.Builder addFeature(@NonNull String); method @NonNull public android.media.MediaRoute2Info.Builder addFeatures(@NonNull java.util.Collection<java.lang.String>); method @NonNull public android.media.MediaRoute2Info build(); method @NonNull public android.media.MediaRoute2Info.Builder clearFeatures(); method @NonNull public android.media.MediaRoute2Info.Builder setClientPackageName(@Nullable String); method @NonNull public android.media.MediaRoute2Info.Builder setConnectionState(int); method @NonNull public android.media.MediaRoute2Info.Builder setDescription(@Nullable CharSequence); method @NonNull public android.media.MediaRoute2Info.Builder setDeviceType(int); method @NonNull public android.media.MediaRoute2Info.Builder setExtras(@Nullable android.os.Bundle); method @NonNull public android.media.MediaRoute2Info.Builder setIconUri(@Nullable android.net.Uri); method @NonNull public android.media.MediaRoute2Info.Builder setVolume(int); method @NonNull public android.media.MediaRoute2Info.Builder setVolumeHandling(int); method @NonNull public android.media.MediaRoute2Info.Builder setVolumeMax(int); } public abstract class MediaRoute2ProviderService extends android.app.Service { ctor public MediaRoute2ProviderService(); method public final void notifyRoutes(@NonNull java.util.Collection<android.media.MediaRoute2Info>); method @NonNull public android.os.IBinder onBind(@NonNull android.content.Intent); method public void onDiscoveryPreferenceChanged(@NonNull android.media.RouteDiscoveryPreference); field public static final String SERVICE_INTERFACE = "android.media.MediaRoute2ProviderService"; } public class MediaRouter { method public void addCallback(int, android.media.MediaRouter.Callback); method public void addCallback(int, android.media.MediaRouter.Callback, int); Loading Loading @@ -26420,6 +26473,20 @@ package android.media { method public abstract void onVolumeUpdateRequest(android.media.MediaRouter.RouteInfo, int); } public class MediaRouter2 { method @NonNull public static android.media.MediaRouter2 getInstance(@NonNull android.content.Context); method @NonNull public java.util.List<android.media.MediaRoute2Info> getRoutes(); method public void registerRouteCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.RouteCallback, @NonNull android.media.RouteDiscoveryPreference); method public void unregisterRouteCallback(@NonNull android.media.MediaRouter2.RouteCallback); } public static class MediaRouter2.RouteCallback { ctor public MediaRouter2.RouteCallback(); method public void onRoutesAdded(@NonNull java.util.List<android.media.MediaRoute2Info>); method public void onRoutesChanged(@NonNull java.util.List<android.media.MediaRoute2Info>); method public void onRoutesRemoved(@NonNull java.util.List<android.media.MediaRoute2Info>); } public class MediaScannerConnection implements android.content.ServiceConnection { ctor public MediaScannerConnection(android.content.Context, android.media.MediaScannerConnection.MediaScannerConnectionClient); method public void connect(); Loading Loading @@ -26778,6 +26845,22 @@ package android.media { field public static final int URI_COLUMN_INDEX = 2; // 0x2 } public final class RouteDiscoveryPreference implements android.os.Parcelable { method public int describeContents(); method @NonNull public java.util.List<java.lang.String> getPreferredFeatures(); method public boolean isActiveScan(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.media.RouteDiscoveryPreference> CREATOR; } public static final class RouteDiscoveryPreference.Builder { ctor public RouteDiscoveryPreference.Builder(@NonNull java.util.List<java.lang.String>, boolean); ctor public RouteDiscoveryPreference.Builder(@NonNull android.media.RouteDiscoveryPreference); method @NonNull public android.media.RouteDiscoveryPreference build(); method @NonNull public android.media.RouteDiscoveryPreference.Builder setActiveScan(boolean); method @NonNull public android.media.RouteDiscoveryPreference.Builder setPreferredFeatures(@NonNull java.util.List<java.lang.String>); } public final class Session2Command implements android.os.Parcelable { ctor public Session2Command(int); ctor public Session2Command(@NonNull String, @Nullable android.os.Bundle); media/java/android/media/IMediaRoute2Provider.aidl +2 −1 Original line number Diff line number Diff line Loading @@ -24,7 +24,8 @@ import android.media.IMediaRoute2ProviderClient; */ oneway interface IMediaRoute2Provider { void setClient(IMediaRoute2ProviderClient client); void requestCreateSession(String packageName, String routeId, String routeType, long requestId); void requestCreateSession(String packageName, String routeId, String routeFeature, long requestId); void releaseSession(String sessionId); void selectRoute(String sessionId, String routeId); Loading media/java/android/media/IMediaRouter2Manager.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ import android.media.MediaRoute2Info; */ oneway interface IMediaRouter2Manager { void notifyRouteSelected(String packageName, in MediaRoute2Info route); void notifyRouteTypesChanged(String packageName, in List<String> routeTypes); void notifyPreferredFeaturesChanged(String packageName, in List<String> preferredFeatures); void notifyRoutesAdded(in List<MediaRoute2Info> routes); void notifyRoutesRemoved(in List<MediaRoute2Info> routes); void notifyRoutesChanged(in List<MediaRoute2Info> routes); Loading media/java/android/media/IMediaRouterService.aidl +3 −3 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ import android.media.IMediaRouter2Manager; import android.media.IMediaRouterClient; import android.media.MediaRoute2Info; import android.media.MediaRouterClientState; import android.media.RouteDiscoveryRequest; import android.media.RouteDiscoveryPreference; import android.media.RouteSessionInfo; /** Loading Loading @@ -52,8 +52,8 @@ interface IMediaRouterService { void requestUpdateVolume2(IMediaRouter2Client client, in MediaRoute2Info route, int direction); void requestCreateSession(IMediaRouter2Client client, in MediaRoute2Info route, String routeType, int requestId); void setDiscoveryRequest2(IMediaRouter2Client client, in RouteDiscoveryRequest request); String routeFeature, int requestId); void setDiscoveryRequest2(IMediaRouter2Client client, in RouteDiscoveryPreference preference); void selectRoute(IMediaRouter2Client client, String sessionId, in MediaRoute2Info route); void deselectRoute(IMediaRouter2Client client, String sessionId, in MediaRoute2Info route); void transferToRoute(IMediaRouter2Client client, String sessionId, in MediaRoute2Info route); Loading media/java/android/media/MediaRoute2Info.java +66 −83 Original line number Diff line number Diff line Loading @@ -36,7 +36,6 @@ import java.util.Objects; /** * Describes the properties of a route. * @hide */ public final class MediaRoute2Info implements Parcelable { @NonNull Loading @@ -56,7 +55,7 @@ public final class MediaRoute2Info implements Parcelable { @IntDef({CONNECTION_STATE_DISCONNECTED, CONNECTION_STATE_CONNECTING, CONNECTION_STATE_CONNECTED}) @Retention(RetentionPolicy.SOURCE) private @interface ConnectionState {} public @interface ConnectionState {} /** * The default connection state indicating the route is disconnected. Loading Loading @@ -99,16 +98,15 @@ public final class MediaRoute2Info implements Parcelable { /** @hide */ @IntDef({ DEVICE_TYPE_UNKNOWN, DEVICE_TYPE_TV, DEVICE_TYPE_SPEAKER, DEVICE_TYPE_BLUETOOTH}) DEVICE_TYPE_UNKNOWN, DEVICE_TYPE_REMOTE_TV, DEVICE_TYPE_REMOTE_SPEAKER, DEVICE_TYPE_BLUETOOTH}) @Retention(RetentionPolicy.SOURCE) private @interface DeviceType {} public @interface DeviceType {} /** * The default receiver device type of the route indicating the type is unknown. * * @see #getDeviceType * @hide */ public static final int DEVICE_TYPE_UNKNOWN = 0; Loading @@ -118,7 +116,7 @@ public final class MediaRoute2Info implements Parcelable { * * @see #getDeviceType */ public static final int DEVICE_TYPE_TV = 1; public static final int DEVICE_TYPE_REMOTE_TV = 1; /** * A receiver device type of the route indicating the presentation of the media is happening Loading @@ -126,14 +124,13 @@ public final class MediaRoute2Info implements Parcelable { * * @see #getDeviceType */ public static final int DEVICE_TYPE_SPEAKER = 2; public static final int DEVICE_TYPE_REMOTE_SPEAKER = 2; /** * A receiver device type of the route indicating the presentation of the media is happening * on a bluetooth device such as a bluetooth speaker. * * @see #getDeviceType * @hide */ public static final int DEVICE_TYPE_BLUETOOTH = 3; Loading @@ -152,7 +149,7 @@ public final class MediaRoute2Info implements Parcelable { @Nullable final String mClientPackageName; @NonNull final List<String> mRouteTypes; final List<String> mFeatures; final int mVolume; final int mVolumeMax; final int mVolumeHandling; Loading @@ -168,7 +165,7 @@ public final class MediaRoute2Info implements Parcelable { mConnectionState = builder.mConnectionState; mIconUri = builder.mIconUri; mClientPackageName = builder.mClientPackageName; mRouteTypes = builder.mRouteTypes; mFeatures = builder.mFeatures; mVolume = builder.mVolume; mVolumeMax = builder.mVolumeMax; mVolumeHandling = builder.mVolumeHandling; Loading @@ -184,7 +181,7 @@ public final class MediaRoute2Info implements Parcelable { mConnectionState = in.readInt(); mIconUri = in.readParcelable(null); mClientPackageName = in.readString(); mRouteTypes = in.createStringArrayList(); mFeatures = in.createStringArrayList(); mVolume = in.readInt(); mVolumeMax = in.readInt(); mVolumeHandling = in.readInt(); Loading Loading @@ -223,7 +220,7 @@ public final class MediaRoute2Info implements Parcelable { && (mConnectionState == other.mConnectionState) && Objects.equals(mIconUri, other.mIconUri) && Objects.equals(mClientPackageName, other.mClientPackageName) && Objects.equals(mRouteTypes, other.mRouteTypes) && Objects.equals(mFeatures, other.mFeatures) && (mVolume == other.mVolume) && (mVolumeMax == other.mVolumeMax) && (mVolumeHandling == other.mVolumeHandling) Loading @@ -235,7 +232,7 @@ public final class MediaRoute2Info implements Parcelable { @Override public int hashCode() { return Objects.hash(mId, mName, mDescription, mConnectionState, mIconUri, mRouteTypes, mVolume, mVolumeMax, mVolumeHandling, mDeviceType); mFeatures, mVolume, mVolumeMax, mVolumeHandling, mDeviceType); } /** Loading @@ -245,7 +242,7 @@ public final class MediaRoute2Info implements Parcelable { * In order to ensure uniqueness in {@link MediaRouter2} side, the value of this method * can be different from what was set in {@link MediaRoute2ProviderService}. * * @see Builder#setId(String) * @see Builder#Builder(String, CharSequence) */ @NonNull public String getId() { Loading @@ -257,7 +254,7 @@ public final class MediaRoute2Info implements Parcelable { } /** * Gets the original id set by {@link Builder#setId(String)}. * Gets the original id set by {@link Builder#Builder(String, CharSequence)}. * @hide */ @NonNull Loading Loading @@ -324,16 +321,16 @@ public final class MediaRoute2Info implements Parcelable { * Gets the supported categories of the route. */ @NonNull public List<String> getRouteTypes() { return mRouteTypes; public List<String> getFeatures() { return mFeatures; } //TODO: once device types are confirmed, reflect those into the comment. /** * Gets the type of the receiver device associated with this route. * * @return The type of the receiver device associated with this route: * {@link #DEVICE_TYPE_TV} or {@link #DEVICE_TYPE_SPEAKER}. * {@link #DEVICE_TYPE_REMOTE_TV}, {@link #DEVICE_TYPE_REMOTE_SPEAKER}, * {@link #DEVICE_TYPE_BLUETOOTH}. */ @DeviceType public int getDeviceType() { Loading Loading @@ -369,15 +366,15 @@ public final class MediaRoute2Info implements Parcelable { } /** * Returns if the route contains at least one of the specified route types. * Returns if the route has at least one of the specified route features. * * @param routeTypes the list of route types to consider * @return true if the route contains at least one type in the list * @param features the list of route features to consider * @return true if the route has at least one feature in the list */ public boolean containsRouteTypes(@NonNull Collection<String> routeTypes) { Objects.requireNonNull(routeTypes, "routeTypes must not be null"); for (String routeType : routeTypes) { if (getRouteTypes().contains(routeType)) { public boolean hasAnyFeatures(@NonNull Collection<String> features) { Objects.requireNonNull(features, "features must not be null"); for (String feature : features) { if (getFeatures().contains(feature)) { return true; } } Loading @@ -398,7 +395,7 @@ public final class MediaRoute2Info implements Parcelable { dest.writeInt(mConnectionState); dest.writeParcelable(mIconUri, flags); dest.writeString(mClientPackageName); dest.writeStringList(mRouteTypes); dest.writeStringList(mFeatures); dest.writeInt(mVolume); dest.writeInt(mVolumeMax); dest.writeInt(mVolumeHandling); Loading Loading @@ -428,15 +425,15 @@ public final class MediaRoute2Info implements Parcelable { * Builder for {@link MediaRoute2Info media route info}. */ public static final class Builder { String mId; final String mId; String mProviderId; CharSequence mName; final CharSequence mName; CharSequence mDescription; @ConnectionState int mConnectionState; Uri mIconUri; String mClientPackageName; List<String> mRouteTypes; List<String> mFeatures; int mVolume; int mVolumeMax; int mVolumeHandling = PLAYBACK_VOLUME_FIXED; Loading @@ -444,27 +441,43 @@ public final class MediaRoute2Info implements Parcelable { int mDeviceType = DEVICE_TYPE_UNKNOWN; Bundle mExtras; /** * Constructor for builder to create {@link MediaRoute2Info}. * <p> * In order to ensure ID uniqueness, the {@link MediaRoute2Info#getId() ID} of a route info * obtained from {@link MediaRouter2} can be different from what was set in * {@link MediaRoute2ProviderService}. * </p> * @param id * @param name */ public Builder(@NonNull String id, @NonNull CharSequence name) { setId(id); setName(name); mRouteTypes = new ArrayList<>(); if (TextUtils.isEmpty(id)) { throw new IllegalArgumentException("id must not be empty"); } if (TextUtils.isEmpty(name)) { throw new IllegalArgumentException("name must not be empty"); } mId = id; mName = name; mFeatures = new ArrayList<>(); } public Builder(@NonNull MediaRoute2Info routeInfo) { if (routeInfo == null) { throw new IllegalArgumentException("route info must not be null"); } mId = routeInfo.mId; mName = routeInfo.mName; setId(routeInfo.mId); if (!TextUtils.isEmpty(routeInfo.mProviderId)) { setProviderId(routeInfo.mProviderId); } setName(routeInfo.mName); mDescription = routeInfo.mDescription; mConnectionState = routeInfo.mConnectionState; mIconUri = routeInfo.mIconUri; setClientPackageName(routeInfo.mClientPackageName); setRouteTypes(routeInfo.mRouteTypes); mFeatures = new ArrayList<>(routeInfo.mFeatures); setVolume(routeInfo.mVolume); setVolumeMax(routeInfo.mVolumeMax); setVolumeHandling(routeInfo.mVolumeHandling); Loading @@ -474,26 +487,6 @@ public final class MediaRoute2Info implements Parcelable { } } /** * Sets the unique id of the route. The value given here must be unique for each of your * route. * <p> * In order to ensure uniqueness in {@link MediaRouter2} side, the value of * {@link MediaRoute2Info#getId()} can be different from what was set in * {@link MediaRoute2ProviderService}. * </p> * * @see MediaRoute2Info#getId() */ @NonNull public Builder setId(@NonNull String id) { if (TextUtils.isEmpty(id)) { throw new IllegalArgumentException("id must not be null or empty"); } mId = id; return this; } /** * Sets the provider id of the route. * @hide Loading @@ -507,21 +500,11 @@ public final class MediaRoute2Info implements Parcelable { return this; } /** * Sets the user-visible name of the route. */ @NonNull public Builder setName(@NonNull CharSequence name) { Objects.requireNonNull(name, "name must not be null"); mName = name; return this; } /** * Sets the user-visible description of the route. */ @NonNull public Builder setDescription(@Nullable String description) { public Builder setDescription(@Nullable CharSequence description) { mDescription = description; return this; } Loading Loading @@ -569,35 +552,35 @@ public final class MediaRoute2Info implements Parcelable { } /** * Sets the types of the route. * Clears the features of the route. */ @NonNull public Builder setRouteTypes(@NonNull Collection<String> routeTypes) { mRouteTypes = new ArrayList<>(); return addRouteTypes(routeTypes); public Builder clearFeatures() { mFeatures = new ArrayList<>(); return this; } /** * Adds types for the route. * Adds features for the route. */ @NonNull public Builder addRouteTypes(@NonNull Collection<String> routeTypes) { Objects.requireNonNull(routeTypes, "routeTypes must not be null"); for (String routeType: routeTypes) { addRouteType(routeType); public Builder addFeatures(@NonNull Collection<String> features) { Objects.requireNonNull(features, "features must not be null"); for (String feature : features) { addFeature(feature); } return this; } /** * Add a type for the route. * Adds a feature for the route. */ @NonNull public Builder addRouteType(@NonNull String routeType) { if (TextUtils.isEmpty(routeType)) { throw new IllegalArgumentException("routeType must not be null or empty"); public Builder addFeature(@NonNull String feature) { if (TextUtils.isEmpty(feature)) { throw new IllegalArgumentException("feature must not be null or empty"); } mRouteTypes.add(routeType); mFeatures.add(feature); return this; } Loading Loading @@ -642,7 +625,7 @@ public final class MediaRoute2Info implements Parcelable { */ @NonNull public Builder setExtras(@Nullable Bundle extras) { mExtras = extras; mExtras = new Bundle(extras); return this; } Loading Loading
api/current.txt +83 −0 Original line number Diff line number Diff line Loading @@ -26297,6 +26297,59 @@ package android.media { field public static final int SURFACE = 2; // 0x2 } public final class MediaRoute2Info implements android.os.Parcelable { method public int describeContents(); method public int getConnectionState(); method @Nullable public CharSequence getDescription(); method public int getDeviceType(); method @Nullable public android.os.Bundle getExtras(); method @NonNull public java.util.List<java.lang.String> getFeatures(); method @Nullable public android.net.Uri getIconUri(); method @NonNull public String getId(); method @NonNull public CharSequence getName(); method public int getVolume(); method public int getVolumeHandling(); method public int getVolumeMax(); method public boolean hasAnyFeatures(@NonNull java.util.Collection<java.lang.String>); method public void writeToParcel(@NonNull android.os.Parcel, int); field public static final int CONNECTION_STATE_CONNECTED = 2; // 0x2 field public static final int CONNECTION_STATE_CONNECTING = 1; // 0x1 field public static final int CONNECTION_STATE_DISCONNECTED = 0; // 0x0 field @NonNull public static final android.os.Parcelable.Creator<android.media.MediaRoute2Info> CREATOR; field public static final int DEVICE_TYPE_BLUETOOTH = 3; // 0x3 field public static final int DEVICE_TYPE_REMOTE_SPEAKER = 2; // 0x2 field public static final int DEVICE_TYPE_REMOTE_TV = 1; // 0x1 field public static final int DEVICE_TYPE_UNKNOWN = 0; // 0x0 field public static final int PLAYBACK_VOLUME_FIXED = 0; // 0x0 field public static final int PLAYBACK_VOLUME_VARIABLE = 1; // 0x1 } public static final class MediaRoute2Info.Builder { ctor public MediaRoute2Info.Builder(@NonNull String, @NonNull CharSequence); ctor public MediaRoute2Info.Builder(@NonNull android.media.MediaRoute2Info); method @NonNull public android.media.MediaRoute2Info.Builder addFeature(@NonNull String); method @NonNull public android.media.MediaRoute2Info.Builder addFeatures(@NonNull java.util.Collection<java.lang.String>); method @NonNull public android.media.MediaRoute2Info build(); method @NonNull public android.media.MediaRoute2Info.Builder clearFeatures(); method @NonNull public android.media.MediaRoute2Info.Builder setClientPackageName(@Nullable String); method @NonNull public android.media.MediaRoute2Info.Builder setConnectionState(int); method @NonNull public android.media.MediaRoute2Info.Builder setDescription(@Nullable CharSequence); method @NonNull public android.media.MediaRoute2Info.Builder setDeviceType(int); method @NonNull public android.media.MediaRoute2Info.Builder setExtras(@Nullable android.os.Bundle); method @NonNull public android.media.MediaRoute2Info.Builder setIconUri(@Nullable android.net.Uri); method @NonNull public android.media.MediaRoute2Info.Builder setVolume(int); method @NonNull public android.media.MediaRoute2Info.Builder setVolumeHandling(int); method @NonNull public android.media.MediaRoute2Info.Builder setVolumeMax(int); } public abstract class MediaRoute2ProviderService extends android.app.Service { ctor public MediaRoute2ProviderService(); method public final void notifyRoutes(@NonNull java.util.Collection<android.media.MediaRoute2Info>); method @NonNull public android.os.IBinder onBind(@NonNull android.content.Intent); method public void onDiscoveryPreferenceChanged(@NonNull android.media.RouteDiscoveryPreference); field public static final String SERVICE_INTERFACE = "android.media.MediaRoute2ProviderService"; } public class MediaRouter { method public void addCallback(int, android.media.MediaRouter.Callback); method public void addCallback(int, android.media.MediaRouter.Callback, int); Loading Loading @@ -26420,6 +26473,20 @@ package android.media { method public abstract void onVolumeUpdateRequest(android.media.MediaRouter.RouteInfo, int); } public class MediaRouter2 { method @NonNull public static android.media.MediaRouter2 getInstance(@NonNull android.content.Context); method @NonNull public java.util.List<android.media.MediaRoute2Info> getRoutes(); method public void registerRouteCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.RouteCallback, @NonNull android.media.RouteDiscoveryPreference); method public void unregisterRouteCallback(@NonNull android.media.MediaRouter2.RouteCallback); } public static class MediaRouter2.RouteCallback { ctor public MediaRouter2.RouteCallback(); method public void onRoutesAdded(@NonNull java.util.List<android.media.MediaRoute2Info>); method public void onRoutesChanged(@NonNull java.util.List<android.media.MediaRoute2Info>); method public void onRoutesRemoved(@NonNull java.util.List<android.media.MediaRoute2Info>); } public class MediaScannerConnection implements android.content.ServiceConnection { ctor public MediaScannerConnection(android.content.Context, android.media.MediaScannerConnection.MediaScannerConnectionClient); method public void connect(); Loading Loading @@ -26778,6 +26845,22 @@ package android.media { field public static final int URI_COLUMN_INDEX = 2; // 0x2 } public final class RouteDiscoveryPreference implements android.os.Parcelable { method public int describeContents(); method @NonNull public java.util.List<java.lang.String> getPreferredFeatures(); method public boolean isActiveScan(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.media.RouteDiscoveryPreference> CREATOR; } public static final class RouteDiscoveryPreference.Builder { ctor public RouteDiscoveryPreference.Builder(@NonNull java.util.List<java.lang.String>, boolean); ctor public RouteDiscoveryPreference.Builder(@NonNull android.media.RouteDiscoveryPreference); method @NonNull public android.media.RouteDiscoveryPreference build(); method @NonNull public android.media.RouteDiscoveryPreference.Builder setActiveScan(boolean); method @NonNull public android.media.RouteDiscoveryPreference.Builder setPreferredFeatures(@NonNull java.util.List<java.lang.String>); } public final class Session2Command implements android.os.Parcelable { ctor public Session2Command(int); ctor public Session2Command(@NonNull String, @Nullable android.os.Bundle);
media/java/android/media/IMediaRoute2Provider.aidl +2 −1 Original line number Diff line number Diff line Loading @@ -24,7 +24,8 @@ import android.media.IMediaRoute2ProviderClient; */ oneway interface IMediaRoute2Provider { void setClient(IMediaRoute2ProviderClient client); void requestCreateSession(String packageName, String routeId, String routeType, long requestId); void requestCreateSession(String packageName, String routeId, String routeFeature, long requestId); void releaseSession(String sessionId); void selectRoute(String sessionId, String routeId); Loading
media/java/android/media/IMediaRouter2Manager.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ import android.media.MediaRoute2Info; */ oneway interface IMediaRouter2Manager { void notifyRouteSelected(String packageName, in MediaRoute2Info route); void notifyRouteTypesChanged(String packageName, in List<String> routeTypes); void notifyPreferredFeaturesChanged(String packageName, in List<String> preferredFeatures); void notifyRoutesAdded(in List<MediaRoute2Info> routes); void notifyRoutesRemoved(in List<MediaRoute2Info> routes); void notifyRoutesChanged(in List<MediaRoute2Info> routes); Loading
media/java/android/media/IMediaRouterService.aidl +3 −3 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ import android.media.IMediaRouter2Manager; import android.media.IMediaRouterClient; import android.media.MediaRoute2Info; import android.media.MediaRouterClientState; import android.media.RouteDiscoveryRequest; import android.media.RouteDiscoveryPreference; import android.media.RouteSessionInfo; /** Loading Loading @@ -52,8 +52,8 @@ interface IMediaRouterService { void requestUpdateVolume2(IMediaRouter2Client client, in MediaRoute2Info route, int direction); void requestCreateSession(IMediaRouter2Client client, in MediaRoute2Info route, String routeType, int requestId); void setDiscoveryRequest2(IMediaRouter2Client client, in RouteDiscoveryRequest request); String routeFeature, int requestId); void setDiscoveryRequest2(IMediaRouter2Client client, in RouteDiscoveryPreference preference); void selectRoute(IMediaRouter2Client client, String sessionId, in MediaRoute2Info route); void deselectRoute(IMediaRouter2Client client, String sessionId, in MediaRoute2Info route); void transferToRoute(IMediaRouter2Client client, String sessionId, in MediaRoute2Info route); Loading
media/java/android/media/MediaRoute2Info.java +66 −83 Original line number Diff line number Diff line Loading @@ -36,7 +36,6 @@ import java.util.Objects; /** * Describes the properties of a route. * @hide */ public final class MediaRoute2Info implements Parcelable { @NonNull Loading @@ -56,7 +55,7 @@ public final class MediaRoute2Info implements Parcelable { @IntDef({CONNECTION_STATE_DISCONNECTED, CONNECTION_STATE_CONNECTING, CONNECTION_STATE_CONNECTED}) @Retention(RetentionPolicy.SOURCE) private @interface ConnectionState {} public @interface ConnectionState {} /** * The default connection state indicating the route is disconnected. Loading Loading @@ -99,16 +98,15 @@ public final class MediaRoute2Info implements Parcelable { /** @hide */ @IntDef({ DEVICE_TYPE_UNKNOWN, DEVICE_TYPE_TV, DEVICE_TYPE_SPEAKER, DEVICE_TYPE_BLUETOOTH}) DEVICE_TYPE_UNKNOWN, DEVICE_TYPE_REMOTE_TV, DEVICE_TYPE_REMOTE_SPEAKER, DEVICE_TYPE_BLUETOOTH}) @Retention(RetentionPolicy.SOURCE) private @interface DeviceType {} public @interface DeviceType {} /** * The default receiver device type of the route indicating the type is unknown. * * @see #getDeviceType * @hide */ public static final int DEVICE_TYPE_UNKNOWN = 0; Loading @@ -118,7 +116,7 @@ public final class MediaRoute2Info implements Parcelable { * * @see #getDeviceType */ public static final int DEVICE_TYPE_TV = 1; public static final int DEVICE_TYPE_REMOTE_TV = 1; /** * A receiver device type of the route indicating the presentation of the media is happening Loading @@ -126,14 +124,13 @@ public final class MediaRoute2Info implements Parcelable { * * @see #getDeviceType */ public static final int DEVICE_TYPE_SPEAKER = 2; public static final int DEVICE_TYPE_REMOTE_SPEAKER = 2; /** * A receiver device type of the route indicating the presentation of the media is happening * on a bluetooth device such as a bluetooth speaker. * * @see #getDeviceType * @hide */ public static final int DEVICE_TYPE_BLUETOOTH = 3; Loading @@ -152,7 +149,7 @@ public final class MediaRoute2Info implements Parcelable { @Nullable final String mClientPackageName; @NonNull final List<String> mRouteTypes; final List<String> mFeatures; final int mVolume; final int mVolumeMax; final int mVolumeHandling; Loading @@ -168,7 +165,7 @@ public final class MediaRoute2Info implements Parcelable { mConnectionState = builder.mConnectionState; mIconUri = builder.mIconUri; mClientPackageName = builder.mClientPackageName; mRouteTypes = builder.mRouteTypes; mFeatures = builder.mFeatures; mVolume = builder.mVolume; mVolumeMax = builder.mVolumeMax; mVolumeHandling = builder.mVolumeHandling; Loading @@ -184,7 +181,7 @@ public final class MediaRoute2Info implements Parcelable { mConnectionState = in.readInt(); mIconUri = in.readParcelable(null); mClientPackageName = in.readString(); mRouteTypes = in.createStringArrayList(); mFeatures = in.createStringArrayList(); mVolume = in.readInt(); mVolumeMax = in.readInt(); mVolumeHandling = in.readInt(); Loading Loading @@ -223,7 +220,7 @@ public final class MediaRoute2Info implements Parcelable { && (mConnectionState == other.mConnectionState) && Objects.equals(mIconUri, other.mIconUri) && Objects.equals(mClientPackageName, other.mClientPackageName) && Objects.equals(mRouteTypes, other.mRouteTypes) && Objects.equals(mFeatures, other.mFeatures) && (mVolume == other.mVolume) && (mVolumeMax == other.mVolumeMax) && (mVolumeHandling == other.mVolumeHandling) Loading @@ -235,7 +232,7 @@ public final class MediaRoute2Info implements Parcelable { @Override public int hashCode() { return Objects.hash(mId, mName, mDescription, mConnectionState, mIconUri, mRouteTypes, mVolume, mVolumeMax, mVolumeHandling, mDeviceType); mFeatures, mVolume, mVolumeMax, mVolumeHandling, mDeviceType); } /** Loading @@ -245,7 +242,7 @@ public final class MediaRoute2Info implements Parcelable { * In order to ensure uniqueness in {@link MediaRouter2} side, the value of this method * can be different from what was set in {@link MediaRoute2ProviderService}. * * @see Builder#setId(String) * @see Builder#Builder(String, CharSequence) */ @NonNull public String getId() { Loading @@ -257,7 +254,7 @@ public final class MediaRoute2Info implements Parcelable { } /** * Gets the original id set by {@link Builder#setId(String)}. * Gets the original id set by {@link Builder#Builder(String, CharSequence)}. * @hide */ @NonNull Loading Loading @@ -324,16 +321,16 @@ public final class MediaRoute2Info implements Parcelable { * Gets the supported categories of the route. */ @NonNull public List<String> getRouteTypes() { return mRouteTypes; public List<String> getFeatures() { return mFeatures; } //TODO: once device types are confirmed, reflect those into the comment. /** * Gets the type of the receiver device associated with this route. * * @return The type of the receiver device associated with this route: * {@link #DEVICE_TYPE_TV} or {@link #DEVICE_TYPE_SPEAKER}. * {@link #DEVICE_TYPE_REMOTE_TV}, {@link #DEVICE_TYPE_REMOTE_SPEAKER}, * {@link #DEVICE_TYPE_BLUETOOTH}. */ @DeviceType public int getDeviceType() { Loading Loading @@ -369,15 +366,15 @@ public final class MediaRoute2Info implements Parcelable { } /** * Returns if the route contains at least one of the specified route types. * Returns if the route has at least one of the specified route features. * * @param routeTypes the list of route types to consider * @return true if the route contains at least one type in the list * @param features the list of route features to consider * @return true if the route has at least one feature in the list */ public boolean containsRouteTypes(@NonNull Collection<String> routeTypes) { Objects.requireNonNull(routeTypes, "routeTypes must not be null"); for (String routeType : routeTypes) { if (getRouteTypes().contains(routeType)) { public boolean hasAnyFeatures(@NonNull Collection<String> features) { Objects.requireNonNull(features, "features must not be null"); for (String feature : features) { if (getFeatures().contains(feature)) { return true; } } Loading @@ -398,7 +395,7 @@ public final class MediaRoute2Info implements Parcelable { dest.writeInt(mConnectionState); dest.writeParcelable(mIconUri, flags); dest.writeString(mClientPackageName); dest.writeStringList(mRouteTypes); dest.writeStringList(mFeatures); dest.writeInt(mVolume); dest.writeInt(mVolumeMax); dest.writeInt(mVolumeHandling); Loading Loading @@ -428,15 +425,15 @@ public final class MediaRoute2Info implements Parcelable { * Builder for {@link MediaRoute2Info media route info}. */ public static final class Builder { String mId; final String mId; String mProviderId; CharSequence mName; final CharSequence mName; CharSequence mDescription; @ConnectionState int mConnectionState; Uri mIconUri; String mClientPackageName; List<String> mRouteTypes; List<String> mFeatures; int mVolume; int mVolumeMax; int mVolumeHandling = PLAYBACK_VOLUME_FIXED; Loading @@ -444,27 +441,43 @@ public final class MediaRoute2Info implements Parcelable { int mDeviceType = DEVICE_TYPE_UNKNOWN; Bundle mExtras; /** * Constructor for builder to create {@link MediaRoute2Info}. * <p> * In order to ensure ID uniqueness, the {@link MediaRoute2Info#getId() ID} of a route info * obtained from {@link MediaRouter2} can be different from what was set in * {@link MediaRoute2ProviderService}. * </p> * @param id * @param name */ public Builder(@NonNull String id, @NonNull CharSequence name) { setId(id); setName(name); mRouteTypes = new ArrayList<>(); if (TextUtils.isEmpty(id)) { throw new IllegalArgumentException("id must not be empty"); } if (TextUtils.isEmpty(name)) { throw new IllegalArgumentException("name must not be empty"); } mId = id; mName = name; mFeatures = new ArrayList<>(); } public Builder(@NonNull MediaRoute2Info routeInfo) { if (routeInfo == null) { throw new IllegalArgumentException("route info must not be null"); } mId = routeInfo.mId; mName = routeInfo.mName; setId(routeInfo.mId); if (!TextUtils.isEmpty(routeInfo.mProviderId)) { setProviderId(routeInfo.mProviderId); } setName(routeInfo.mName); mDescription = routeInfo.mDescription; mConnectionState = routeInfo.mConnectionState; mIconUri = routeInfo.mIconUri; setClientPackageName(routeInfo.mClientPackageName); setRouteTypes(routeInfo.mRouteTypes); mFeatures = new ArrayList<>(routeInfo.mFeatures); setVolume(routeInfo.mVolume); setVolumeMax(routeInfo.mVolumeMax); setVolumeHandling(routeInfo.mVolumeHandling); Loading @@ -474,26 +487,6 @@ public final class MediaRoute2Info implements Parcelable { } } /** * Sets the unique id of the route. The value given here must be unique for each of your * route. * <p> * In order to ensure uniqueness in {@link MediaRouter2} side, the value of * {@link MediaRoute2Info#getId()} can be different from what was set in * {@link MediaRoute2ProviderService}. * </p> * * @see MediaRoute2Info#getId() */ @NonNull public Builder setId(@NonNull String id) { if (TextUtils.isEmpty(id)) { throw new IllegalArgumentException("id must not be null or empty"); } mId = id; return this; } /** * Sets the provider id of the route. * @hide Loading @@ -507,21 +500,11 @@ public final class MediaRoute2Info implements Parcelable { return this; } /** * Sets the user-visible name of the route. */ @NonNull public Builder setName(@NonNull CharSequence name) { Objects.requireNonNull(name, "name must not be null"); mName = name; return this; } /** * Sets the user-visible description of the route. */ @NonNull public Builder setDescription(@Nullable String description) { public Builder setDescription(@Nullable CharSequence description) { mDescription = description; return this; } Loading Loading @@ -569,35 +552,35 @@ public final class MediaRoute2Info implements Parcelable { } /** * Sets the types of the route. * Clears the features of the route. */ @NonNull public Builder setRouteTypes(@NonNull Collection<String> routeTypes) { mRouteTypes = new ArrayList<>(); return addRouteTypes(routeTypes); public Builder clearFeatures() { mFeatures = new ArrayList<>(); return this; } /** * Adds types for the route. * Adds features for the route. */ @NonNull public Builder addRouteTypes(@NonNull Collection<String> routeTypes) { Objects.requireNonNull(routeTypes, "routeTypes must not be null"); for (String routeType: routeTypes) { addRouteType(routeType); public Builder addFeatures(@NonNull Collection<String> features) { Objects.requireNonNull(features, "features must not be null"); for (String feature : features) { addFeature(feature); } return this; } /** * Add a type for the route. * Adds a feature for the route. */ @NonNull public Builder addRouteType(@NonNull String routeType) { if (TextUtils.isEmpty(routeType)) { throw new IllegalArgumentException("routeType must not be null or empty"); public Builder addFeature(@NonNull String feature) { if (TextUtils.isEmpty(feature)) { throw new IllegalArgumentException("feature must not be null or empty"); } mRouteTypes.add(routeType); mFeatures.add(feature); return this; } Loading Loading @@ -642,7 +625,7 @@ public final class MediaRoute2Info implements Parcelable { */ @NonNull public Builder setExtras(@Nullable Bundle extras) { mExtras = extras; mExtras = new Bundle(extras); return this; } Loading