Loading core/api/current.txt +25 −0 Original line number Diff line number Diff line Loading @@ -25235,16 +25235,19 @@ package android.media { method @FlaggedApi("com.android.media.flags.enable_screen_off_scanning") public void cancelScanRequest(@NonNull android.media.MediaRouter2.ScanToken); method @Nullable public android.media.MediaRouter2.RoutingController getController(@NonNull String); method @NonNull public java.util.List<android.media.MediaRouter2.RoutingController> getControllers(); method @FlaggedApi("com.android.media.flags.enable_suggested_device_api") @NonNull public java.util.Map<java.lang.String,java.util.List<android.media.SuggestedDeviceInfo>> getDeviceSuggestions(); method @NonNull public static android.media.MediaRouter2 getInstance(@NonNull android.content.Context); method @FlaggedApi("com.android.media.flags.enable_privileged_routing_for_media_routing_control") @NonNull @RequiresPermission(anyOf={android.Manifest.permission.MEDIA_CONTENT_CONTROL, android.Manifest.permission.MEDIA_ROUTING_CONTROL}) public static android.media.MediaRouter2 getInstance(@NonNull android.content.Context, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull Runnable); method @FlaggedApi("com.android.media.flags.enable_rlp_callbacks_in_media_router2") @Nullable public android.media.RouteListingPreference getRouteListingPreference(); method @NonNull public java.util.List<android.media.MediaRoute2Info> getRoutes(); method @NonNull public android.media.MediaRouter2.RoutingController getSystemController(); method public void registerControllerCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.ControllerCallback); method @FlaggedApi("com.android.media.flags.enable_suggested_device_api") public void registerDeviceSuggestionsCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.DeviceSuggestionsCallback); method public void registerRouteCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.RouteCallback, @NonNull android.media.RouteDiscoveryPreference); method @FlaggedApi("com.android.media.flags.enable_rlp_callbacks_in_media_router2") public void registerRouteListingPreferenceUpdatedCallback(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.media.RouteListingPreference>); method public void registerTransferCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.TransferCallback); method @FlaggedApi("com.android.media.flags.enable_screen_off_scanning") @NonNull public android.media.MediaRouter2.ScanToken requestScan(@NonNull android.media.MediaRouter2.ScanRequest); method @FlaggedApi("com.android.media.flags.enable_suggested_device_api") public void setDeviceSuggestions(@NonNull java.util.List<android.media.SuggestedDeviceInfo>); method public void setOnGetControllerHintsListener(@Nullable android.media.MediaRouter2.OnGetControllerHintsListener); method public void setRouteListingPreference(@Nullable android.media.RouteListingPreference); method @FlaggedApi("com.android.media.flags.enable_privileged_routing_for_media_routing_control") @RequiresPermission(anyOf={android.Manifest.permission.MEDIA_CONTENT_CONTROL, android.Manifest.permission.MEDIA_ROUTING_CONTROL}) public void setRouteVolume(@NonNull android.media.MediaRoute2Info, int); Loading @@ -25252,6 +25255,7 @@ package android.media { method public void stop(); method public void transferTo(@NonNull android.media.MediaRoute2Info); method public void unregisterControllerCallback(@NonNull android.media.MediaRouter2.ControllerCallback); method @FlaggedApi("com.android.media.flags.enable_suggested_device_api") public void unregisterDeviceSuggestionsCallback(@NonNull android.media.MediaRouter2.DeviceSuggestionsCallback); method public void unregisterRouteCallback(@NonNull android.media.MediaRouter2.RouteCallback); method @FlaggedApi("com.android.media.flags.enable_rlp_callbacks_in_media_router2") public void unregisterRouteListingPreferenceUpdatedCallback(@NonNull java.util.function.Consumer<android.media.RouteListingPreference>); method public void unregisterTransferCallback(@NonNull android.media.MediaRouter2.TransferCallback); Loading @@ -25262,6 +25266,11 @@ package android.media { method public void onControllerUpdated(@NonNull android.media.MediaRouter2.RoutingController); } @FlaggedApi("com.android.media.flags.enable_suggested_device_api") public static interface MediaRouter2.DeviceSuggestionsCallback { method public void onSuggestionRequested(); method public void onSuggestionUpdated(@NonNull String, @NonNull java.util.List<android.media.SuggestedDeviceInfo>); } public static interface MediaRouter2.OnGetControllerHintsListener { method @Nullable public android.os.Bundle onGetControllerHints(@NonNull android.media.MediaRoute2Info); } Loading Loading @@ -25807,6 +25816,22 @@ package android.media { method public int getTrackIndex(); } @FlaggedApi("com.android.media.flags.enable_suggested_device_api") public final class SuggestedDeviceInfo implements android.os.Parcelable { method public int describeContents(); method @NonNull public String getDeviceDisplayName(); method @NonNull public android.os.Bundle getExtras(); method @NonNull public String getRouteId(); method public int getType(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.media.SuggestedDeviceInfo> CREATOR; } public static final class SuggestedDeviceInfo.Builder { ctor public SuggestedDeviceInfo.Builder(@NonNull String, @NonNull String, int); method @NonNull public android.media.SuggestedDeviceInfo build(); method @NonNull public android.media.SuggestedDeviceInfo.Builder setExtras(@NonNull android.os.Bundle); } public final class SyncParams { ctor public SyncParams(); method public android.media.SyncParams allowDefaults(); media/java/android/media/MediaRouter2.java +14 −20 Original line number Diff line number Diff line Loading @@ -771,9 +771,8 @@ public final class MediaRouter2 { * router changes. * * <p>Calls using a previously registered callback will overwrite the previous executor. * * @hide */ @FlaggedApi(FLAG_ENABLE_SUGGESTED_DEVICE_API) public void registerDeviceSuggestionsCallback( @NonNull @CallbackExecutor Executor executor, @NonNull DeviceSuggestionsCallback deviceSuggestionsCallback) { Loading Loading @@ -810,8 +809,8 @@ public final class MediaRouter2 { * Unregisters the given callback to not receive {@link SuggestedDeviceInfo} change events. * * @see #registerDeviceSuggestionsCallback(Executor, DeviceSuggestionsCallback) * @hide */ @FlaggedApi(FLAG_ENABLE_SUGGESTED_DEVICE_API) public void unregisterDeviceSuggestionsCallback(@NonNull DeviceSuggestionsCallback callback) { Objects.requireNonNull(callback, "callback must not be null"); Loading Loading @@ -875,20 +874,20 @@ public final class MediaRouter2 { } /** * Sets the suggested devices. * Sets a list of {@link SuggestedDeviceInfo device suggestions}. * * <p>Use this method to inform the system UI that this device is suggested in the Output * Switcher and media controls. * <p>Use this method to tell the system about device suggestions for the current router. The * system may use these suggestions to populate system UI such as Output Switcher and media * controls. * * <p>You should pass null to this method to clear a previously set suggestion without setting a * new one. * <p>Suggestions will be expired automatically by the system, at which point you should call * this method again if the suggestion is still relevant and should still be surfaced. * * @param suggestedDeviceInfo The {@link SuggestedDeviceInfo} the router suggests should be * provided to the user. * @hide */ @FlaggedApi(FLAG_ENABLE_SUGGESTED_DEVICE_API) public void setDeviceSuggestions(@Nullable List<SuggestedDeviceInfo> suggestedDeviceInfo) { public void setDeviceSuggestions(@NonNull List<SuggestedDeviceInfo> suggestedDeviceInfo) { mImpl.setDeviceSuggestions(suggestedDeviceInfo); } Loading @@ -896,10 +895,9 @@ public final class MediaRouter2 { * Gets the current suggested devices. * * @return the suggested devices, keyed by the package name providing each suggestion list. * @hide */ @FlaggedApi(FLAG_ENABLE_SUGGESTED_DEVICE_API) @Nullable @NonNull public Map<String, List<SuggestedDeviceInfo>> getDeviceSuggestions() { return mImpl.getDeviceSuggestions(); } Loading Loading @@ -1670,23 +1668,19 @@ public final class MediaRouter2 { .build(); } /** * Callback for receiving events about device suggestions * * @hide */ /** Callback for receiving events about device suggestions */ @FlaggedApi(FLAG_ENABLE_SUGGESTED_DEVICE_API) public interface DeviceSuggestionsCallback { /** * Called when suggestions are updated. Whenever you register a callback, this will be * invoked with the current suggestions. * Called when suggestions are updated. * * @param suggestingPackageName the package that provided the suggestions. * @param suggestedDeviceInfo the suggestions provided by the package. */ void onSuggestionUpdated( @NonNull String suggestingPackageName, @Nullable List<SuggestedDeviceInfo> suggestedDeviceInfo); @NonNull List<SuggestedDeviceInfo> suggestedDeviceInfo); /** Called when a router requests a suggestion from suggestion providers. */ void onSuggestionRequested(); Loading media/java/android/media/SuggestedDeviceInfo.java +24 −56 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import static com.android.media.flags.Flags.FLAG_ENABLE_SUGGESTED_DEVICE_API; import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.annotation.Nullable; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; Loading @@ -32,8 +31,9 @@ import java.util.Objects; * Allows applications to suggest routes to the system UI (for example, in the System UI Output * Switcher). * * <p>Suggested devices are used to transfer the current media session from one device to another. * * @see MediaRouter2#setSuggestedDevice * @hide */ @FlaggedApi(FLAG_ENABLE_SUGGESTED_DEVICE_API) public final class SuggestedDeviceInfo implements Parcelable { Loading @@ -55,7 +55,7 @@ public final class SuggestedDeviceInfo implements Parcelable { @NonNull private final String mRouteId; private final int mType; private final @MediaRoute2Info.Type int mType; @NonNull private final Bundle mExtras; Loading Loading @@ -98,7 +98,7 @@ public final class SuggestedDeviceInfo implements Parcelable { * * @return The device type. */ public int getType() { public @MediaRoute2Info.Type int getType() { return mType; } Loading @@ -107,7 +107,7 @@ public final class SuggestedDeviceInfo implements Parcelable { * * @return The extras. */ @Nullable @NonNull public Bundle getExtras() { return mExtras; } Loading Loading @@ -151,70 +151,37 @@ public final class SuggestedDeviceInfo implements Parcelable { /** Builder for {@link SuggestedDeviceInfo}. */ public static final class Builder { @NonNull private String mDeviceDisplayName; @NonNull private final String mDeviceDisplayName; @NonNull private String mRouteId; @NonNull private final String mRouteId; @NonNull private Integer mType; private final int mType; private Bundle mExtras = Bundle.EMPTY; /** * Creates a new SuggestedDeviceInfo. The device display name, route ID, and type must be * set. The extras cannot be null, but default to an empty {@link Bundle}. * * @throws IllegalArgumentException if the builder has a mandatory unset field. */ public SuggestedDeviceInfo build() { if (mDeviceDisplayName == null) { throw new IllegalArgumentException("Device display name cannot be null"); } if (mRouteId == null) { throw new IllegalArgumentException("Route ID cannot be null."); } if (mType == null) { throw new IllegalArgumentException("Device type cannot be null."); } if (mExtras == null) { throw new IllegalArgumentException("Extras cannot be null."); } return new SuggestedDeviceInfo(this); } /** * Sets the {@link #getDeviceDisplayName() device display name}. * * @throws IllegalArgumentException if the name is null or empty. */ public Builder setDeviceDisplayName(@NonNull String deviceDisplayName) { public Builder( @NonNull String deviceDisplayName, @NonNull String routeId, @MediaRoute2Info.Type int type) { if (TextUtils.isEmpty(deviceDisplayName)) { throw new IllegalArgumentException("Device display name cannot be null"); throw new IllegalArgumentException("Device display name cannot be empty"); } mDeviceDisplayName = deviceDisplayName; return this; } /** * Sets the {@link #getRouteId() route id}. * * @throws IllegalArgumentException if the route id is null or empty. */ public Builder setRouteId(@NonNull String routeId) { if (TextUtils.isEmpty(routeId)) { throw new IllegalArgumentException("Device display name cannot be null"); throw new IllegalArgumentException("Route ID cannot be empty."); } mRouteId = routeId; return this; mType = type; } /** Sets the {@link #getType() device type}. */ public Builder setType(int type) { mType = type; return this; /** * Creates a new SuggestedDeviceInfo. The device display name, route ID, and type must be * set. The extras cannot be null, but default to an empty {@link Bundle}. */ @NonNull public SuggestedDeviceInfo build() { return new SuggestedDeviceInfo(this); } /** Loading @@ -227,8 +194,9 @@ public final class SuggestedDeviceInfo implements Parcelable { * * @throws NullPointerException if the extras are null. */ @NonNull public Builder setExtras(@NonNull Bundle extras) { mExtras = Objects.requireNonNull(extras, "extras must not be null"); mExtras = Objects.requireNonNull(extras, "Extras must not be null"); return this; } } Loading packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java +9 −45 Original line number Diff line number Diff line Loading @@ -974,11 +974,7 @@ public class InfoMediaManagerTest { @Test public void onSuggestionUpdated_listenersNotified() { SuggestedDeviceInfo suggestedDeviceInfo = new SuggestedDeviceInfo.Builder() .setDeviceDisplayName("device_name") .setRouteId(TEST_ID_3) .setType(0) .build(); new SuggestedDeviceInfo.Builder("device_name", TEST_ID_3, 0).build(); RouterInfoMediaManager mediaManager = createRouterInfoMediaManager(); setAvailableRoutesList(TEST_PACKAGE_NAME); mediaManager.registerCallback(mCallback); Loading @@ -1001,11 +997,7 @@ public class InfoMediaManagerTest { @Test public void onSuggestionUpdated_routesNotSet_listenersNotified() { SuggestedDeviceInfo suggestedDeviceInfo = new SuggestedDeviceInfo.Builder() .setDeviceDisplayName("device_name") .setRouteId(TEST_ID_3) .setType(0) .build(); new SuggestedDeviceInfo.Builder("device_name", TEST_ID_3, 0).build(); RouterInfoMediaManager mediaManager = createRouterInfoMediaManager(); mediaManager.registerCallback(mCallback); clearInvocations(mCallback); Loading @@ -1026,11 +1018,7 @@ public class InfoMediaManagerTest { @Test public void onSuggestionUpdated_mediaDeviceIsSuggested() { SuggestedDeviceInfo suggestedDeviceInfo = new SuggestedDeviceInfo.Builder() .setDeviceDisplayName("device_name") .setRouteId(TEST_ID_3) .setType(0) .build(); new SuggestedDeviceInfo.Builder("device_name", TEST_ID_3, 0).build(); RouterInfoMediaManager mediaManager = createRouterInfoMediaManager(); setAvailableRoutesList(TEST_PACKAGE_NAME); mediaManager.registerCallback(mCallback); Loading @@ -1052,11 +1040,7 @@ public class InfoMediaManagerTest { @Test public void onSuggestionUpdated_noSuggestedDevices_noSuggestedMediaDevices() { SuggestedDeviceInfo suggestedDeviceInfo = new SuggestedDeviceInfo.Builder() .setDeviceDisplayName("device_name") .setRouteId(TEST_ID_3) .setType(0) .build(); new SuggestedDeviceInfo.Builder("device_name", TEST_ID_3, 0).build(); RouterInfoMediaManager mediaManager = createRouterInfoMediaManager(); setAvailableRoutesList(TEST_PACKAGE_NAME); mediaManager.registerCallback(mCallback); Loading @@ -1081,17 +1065,9 @@ public class InfoMediaManagerTest { @Test public void onSuggestionUpdated_multipleProviders_noSuggestedMediaDevices() { SuggestedDeviceInfo suggestedDeviceInfo1 = new SuggestedDeviceInfo.Builder() .setDeviceDisplayName("device_name") .setRouteId(TEST_ID_3) .setType(0) .build(); new SuggestedDeviceInfo.Builder("device_name_1", TEST_ID_3, 0).build(); SuggestedDeviceInfo suggestedDeviceInfo2 = new SuggestedDeviceInfo.Builder() .setDeviceDisplayName("device_name_2") .setRouteId(TEST_ID_3) .setType(0) .build(); new SuggestedDeviceInfo.Builder("device_name_2", TEST_ID_3, 0).build(); RouterInfoMediaManager mediaManager = createRouterInfoMediaManager(); setAvailableRoutesList(TEST_PACKAGE_NAME); mediaManager.registerCallback(mCallback); Loading @@ -1116,11 +1092,7 @@ public class InfoMediaManagerTest { @Test public void onSuggestionUpdated_firstSuggestionFromSamePackage_suggestionIsFromSamePackage() { SuggestedDeviceInfo suggestedDeviceInfo = new SuggestedDeviceInfo.Builder() .setDeviceDisplayName("device_name") .setRouteId(TEST_ID_3) .setType(0) .build(); new SuggestedDeviceInfo.Builder("device_name", TEST_ID_3, 0).build(); RouterInfoMediaManager mediaManager = createRouterInfoMediaManager(); setAvailableRoutesList(TEST_PACKAGE_NAME); mediaManager.registerCallback(mCallback); Loading @@ -1145,11 +1117,7 @@ public class InfoMediaManagerTest { @Test public void onSuggestionUpdated_laterSuggestionFromSamePackage_suggestionIsFromSamePackage() { SuggestedDeviceInfo suggestedDeviceInfo = new SuggestedDeviceInfo.Builder() .setDeviceDisplayName("device_name") .setRouteId(TEST_ID_3) .setType(0) .build(); new SuggestedDeviceInfo.Builder("device_name", TEST_ID_3, 0).build(); RouterInfoMediaManager mediaManager = createRouterInfoMediaManager(); setAvailableRoutesList(TEST_PACKAGE_NAME); mediaManager.registerCallback(mCallback); Loading @@ -1174,11 +1142,7 @@ public class InfoMediaManagerTest { @Test public void setDeviceState_suggestionListenerNotified() { SuggestedDeviceInfo suggestedDeviceInfo = new SuggestedDeviceInfo.Builder() .setDeviceDisplayName("device_name") .setRouteId(TEST_ID_3) .setType(0) .build(); new SuggestedDeviceInfo.Builder("device_name", TEST_ID_3, 0).build(); RouterInfoMediaManager mediaManager = createRouterInfoMediaManager(); setAvailableRoutesList(TEST_PACKAGE_NAME); mediaManager.registerCallback(mCallback); Loading Loading
core/api/current.txt +25 −0 Original line number Diff line number Diff line Loading @@ -25235,16 +25235,19 @@ package android.media { method @FlaggedApi("com.android.media.flags.enable_screen_off_scanning") public void cancelScanRequest(@NonNull android.media.MediaRouter2.ScanToken); method @Nullable public android.media.MediaRouter2.RoutingController getController(@NonNull String); method @NonNull public java.util.List<android.media.MediaRouter2.RoutingController> getControllers(); method @FlaggedApi("com.android.media.flags.enable_suggested_device_api") @NonNull public java.util.Map<java.lang.String,java.util.List<android.media.SuggestedDeviceInfo>> getDeviceSuggestions(); method @NonNull public static android.media.MediaRouter2 getInstance(@NonNull android.content.Context); method @FlaggedApi("com.android.media.flags.enable_privileged_routing_for_media_routing_control") @NonNull @RequiresPermission(anyOf={android.Manifest.permission.MEDIA_CONTENT_CONTROL, android.Manifest.permission.MEDIA_ROUTING_CONTROL}) public static android.media.MediaRouter2 getInstance(@NonNull android.content.Context, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull Runnable); method @FlaggedApi("com.android.media.flags.enable_rlp_callbacks_in_media_router2") @Nullable public android.media.RouteListingPreference getRouteListingPreference(); method @NonNull public java.util.List<android.media.MediaRoute2Info> getRoutes(); method @NonNull public android.media.MediaRouter2.RoutingController getSystemController(); method public void registerControllerCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.ControllerCallback); method @FlaggedApi("com.android.media.flags.enable_suggested_device_api") public void registerDeviceSuggestionsCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.DeviceSuggestionsCallback); method public void registerRouteCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.RouteCallback, @NonNull android.media.RouteDiscoveryPreference); method @FlaggedApi("com.android.media.flags.enable_rlp_callbacks_in_media_router2") public void registerRouteListingPreferenceUpdatedCallback(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.media.RouteListingPreference>); method public void registerTransferCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.TransferCallback); method @FlaggedApi("com.android.media.flags.enable_screen_off_scanning") @NonNull public android.media.MediaRouter2.ScanToken requestScan(@NonNull android.media.MediaRouter2.ScanRequest); method @FlaggedApi("com.android.media.flags.enable_suggested_device_api") public void setDeviceSuggestions(@NonNull java.util.List<android.media.SuggestedDeviceInfo>); method public void setOnGetControllerHintsListener(@Nullable android.media.MediaRouter2.OnGetControllerHintsListener); method public void setRouteListingPreference(@Nullable android.media.RouteListingPreference); method @FlaggedApi("com.android.media.flags.enable_privileged_routing_for_media_routing_control") @RequiresPermission(anyOf={android.Manifest.permission.MEDIA_CONTENT_CONTROL, android.Manifest.permission.MEDIA_ROUTING_CONTROL}) public void setRouteVolume(@NonNull android.media.MediaRoute2Info, int); Loading @@ -25252,6 +25255,7 @@ package android.media { method public void stop(); method public void transferTo(@NonNull android.media.MediaRoute2Info); method public void unregisterControllerCallback(@NonNull android.media.MediaRouter2.ControllerCallback); method @FlaggedApi("com.android.media.flags.enable_suggested_device_api") public void unregisterDeviceSuggestionsCallback(@NonNull android.media.MediaRouter2.DeviceSuggestionsCallback); method public void unregisterRouteCallback(@NonNull android.media.MediaRouter2.RouteCallback); method @FlaggedApi("com.android.media.flags.enable_rlp_callbacks_in_media_router2") public void unregisterRouteListingPreferenceUpdatedCallback(@NonNull java.util.function.Consumer<android.media.RouteListingPreference>); method public void unregisterTransferCallback(@NonNull android.media.MediaRouter2.TransferCallback); Loading @@ -25262,6 +25266,11 @@ package android.media { method public void onControllerUpdated(@NonNull android.media.MediaRouter2.RoutingController); } @FlaggedApi("com.android.media.flags.enable_suggested_device_api") public static interface MediaRouter2.DeviceSuggestionsCallback { method public void onSuggestionRequested(); method public void onSuggestionUpdated(@NonNull String, @NonNull java.util.List<android.media.SuggestedDeviceInfo>); } public static interface MediaRouter2.OnGetControllerHintsListener { method @Nullable public android.os.Bundle onGetControllerHints(@NonNull android.media.MediaRoute2Info); } Loading Loading @@ -25807,6 +25816,22 @@ package android.media { method public int getTrackIndex(); } @FlaggedApi("com.android.media.flags.enable_suggested_device_api") public final class SuggestedDeviceInfo implements android.os.Parcelable { method public int describeContents(); method @NonNull public String getDeviceDisplayName(); method @NonNull public android.os.Bundle getExtras(); method @NonNull public String getRouteId(); method public int getType(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.media.SuggestedDeviceInfo> CREATOR; } public static final class SuggestedDeviceInfo.Builder { ctor public SuggestedDeviceInfo.Builder(@NonNull String, @NonNull String, int); method @NonNull public android.media.SuggestedDeviceInfo build(); method @NonNull public android.media.SuggestedDeviceInfo.Builder setExtras(@NonNull android.os.Bundle); } public final class SyncParams { ctor public SyncParams(); method public android.media.SyncParams allowDefaults();
media/java/android/media/MediaRouter2.java +14 −20 Original line number Diff line number Diff line Loading @@ -771,9 +771,8 @@ public final class MediaRouter2 { * router changes. * * <p>Calls using a previously registered callback will overwrite the previous executor. * * @hide */ @FlaggedApi(FLAG_ENABLE_SUGGESTED_DEVICE_API) public void registerDeviceSuggestionsCallback( @NonNull @CallbackExecutor Executor executor, @NonNull DeviceSuggestionsCallback deviceSuggestionsCallback) { Loading Loading @@ -810,8 +809,8 @@ public final class MediaRouter2 { * Unregisters the given callback to not receive {@link SuggestedDeviceInfo} change events. * * @see #registerDeviceSuggestionsCallback(Executor, DeviceSuggestionsCallback) * @hide */ @FlaggedApi(FLAG_ENABLE_SUGGESTED_DEVICE_API) public void unregisterDeviceSuggestionsCallback(@NonNull DeviceSuggestionsCallback callback) { Objects.requireNonNull(callback, "callback must not be null"); Loading Loading @@ -875,20 +874,20 @@ public final class MediaRouter2 { } /** * Sets the suggested devices. * Sets a list of {@link SuggestedDeviceInfo device suggestions}. * * <p>Use this method to inform the system UI that this device is suggested in the Output * Switcher and media controls. * <p>Use this method to tell the system about device suggestions for the current router. The * system may use these suggestions to populate system UI such as Output Switcher and media * controls. * * <p>You should pass null to this method to clear a previously set suggestion without setting a * new one. * <p>Suggestions will be expired automatically by the system, at which point you should call * this method again if the suggestion is still relevant and should still be surfaced. * * @param suggestedDeviceInfo The {@link SuggestedDeviceInfo} the router suggests should be * provided to the user. * @hide */ @FlaggedApi(FLAG_ENABLE_SUGGESTED_DEVICE_API) public void setDeviceSuggestions(@Nullable List<SuggestedDeviceInfo> suggestedDeviceInfo) { public void setDeviceSuggestions(@NonNull List<SuggestedDeviceInfo> suggestedDeviceInfo) { mImpl.setDeviceSuggestions(suggestedDeviceInfo); } Loading @@ -896,10 +895,9 @@ public final class MediaRouter2 { * Gets the current suggested devices. * * @return the suggested devices, keyed by the package name providing each suggestion list. * @hide */ @FlaggedApi(FLAG_ENABLE_SUGGESTED_DEVICE_API) @Nullable @NonNull public Map<String, List<SuggestedDeviceInfo>> getDeviceSuggestions() { return mImpl.getDeviceSuggestions(); } Loading Loading @@ -1670,23 +1668,19 @@ public final class MediaRouter2 { .build(); } /** * Callback for receiving events about device suggestions * * @hide */ /** Callback for receiving events about device suggestions */ @FlaggedApi(FLAG_ENABLE_SUGGESTED_DEVICE_API) public interface DeviceSuggestionsCallback { /** * Called when suggestions are updated. Whenever you register a callback, this will be * invoked with the current suggestions. * Called when suggestions are updated. * * @param suggestingPackageName the package that provided the suggestions. * @param suggestedDeviceInfo the suggestions provided by the package. */ void onSuggestionUpdated( @NonNull String suggestingPackageName, @Nullable List<SuggestedDeviceInfo> suggestedDeviceInfo); @NonNull List<SuggestedDeviceInfo> suggestedDeviceInfo); /** Called when a router requests a suggestion from suggestion providers. */ void onSuggestionRequested(); Loading
media/java/android/media/SuggestedDeviceInfo.java +24 −56 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import static com.android.media.flags.Flags.FLAG_ENABLE_SUGGESTED_DEVICE_API; import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.annotation.Nullable; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; Loading @@ -32,8 +31,9 @@ import java.util.Objects; * Allows applications to suggest routes to the system UI (for example, in the System UI Output * Switcher). * * <p>Suggested devices are used to transfer the current media session from one device to another. * * @see MediaRouter2#setSuggestedDevice * @hide */ @FlaggedApi(FLAG_ENABLE_SUGGESTED_DEVICE_API) public final class SuggestedDeviceInfo implements Parcelable { Loading @@ -55,7 +55,7 @@ public final class SuggestedDeviceInfo implements Parcelable { @NonNull private final String mRouteId; private final int mType; private final @MediaRoute2Info.Type int mType; @NonNull private final Bundle mExtras; Loading Loading @@ -98,7 +98,7 @@ public final class SuggestedDeviceInfo implements Parcelable { * * @return The device type. */ public int getType() { public @MediaRoute2Info.Type int getType() { return mType; } Loading @@ -107,7 +107,7 @@ public final class SuggestedDeviceInfo implements Parcelable { * * @return The extras. */ @Nullable @NonNull public Bundle getExtras() { return mExtras; } Loading Loading @@ -151,70 +151,37 @@ public final class SuggestedDeviceInfo implements Parcelable { /** Builder for {@link SuggestedDeviceInfo}. */ public static final class Builder { @NonNull private String mDeviceDisplayName; @NonNull private final String mDeviceDisplayName; @NonNull private String mRouteId; @NonNull private final String mRouteId; @NonNull private Integer mType; private final int mType; private Bundle mExtras = Bundle.EMPTY; /** * Creates a new SuggestedDeviceInfo. The device display name, route ID, and type must be * set. The extras cannot be null, but default to an empty {@link Bundle}. * * @throws IllegalArgumentException if the builder has a mandatory unset field. */ public SuggestedDeviceInfo build() { if (mDeviceDisplayName == null) { throw new IllegalArgumentException("Device display name cannot be null"); } if (mRouteId == null) { throw new IllegalArgumentException("Route ID cannot be null."); } if (mType == null) { throw new IllegalArgumentException("Device type cannot be null."); } if (mExtras == null) { throw new IllegalArgumentException("Extras cannot be null."); } return new SuggestedDeviceInfo(this); } /** * Sets the {@link #getDeviceDisplayName() device display name}. * * @throws IllegalArgumentException if the name is null or empty. */ public Builder setDeviceDisplayName(@NonNull String deviceDisplayName) { public Builder( @NonNull String deviceDisplayName, @NonNull String routeId, @MediaRoute2Info.Type int type) { if (TextUtils.isEmpty(deviceDisplayName)) { throw new IllegalArgumentException("Device display name cannot be null"); throw new IllegalArgumentException("Device display name cannot be empty"); } mDeviceDisplayName = deviceDisplayName; return this; } /** * Sets the {@link #getRouteId() route id}. * * @throws IllegalArgumentException if the route id is null or empty. */ public Builder setRouteId(@NonNull String routeId) { if (TextUtils.isEmpty(routeId)) { throw new IllegalArgumentException("Device display name cannot be null"); throw new IllegalArgumentException("Route ID cannot be empty."); } mRouteId = routeId; return this; mType = type; } /** Sets the {@link #getType() device type}. */ public Builder setType(int type) { mType = type; return this; /** * Creates a new SuggestedDeviceInfo. The device display name, route ID, and type must be * set. The extras cannot be null, but default to an empty {@link Bundle}. */ @NonNull public SuggestedDeviceInfo build() { return new SuggestedDeviceInfo(this); } /** Loading @@ -227,8 +194,9 @@ public final class SuggestedDeviceInfo implements Parcelable { * * @throws NullPointerException if the extras are null. */ @NonNull public Builder setExtras(@NonNull Bundle extras) { mExtras = Objects.requireNonNull(extras, "extras must not be null"); mExtras = Objects.requireNonNull(extras, "Extras must not be null"); return this; } } Loading
packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java +9 −45 Original line number Diff line number Diff line Loading @@ -974,11 +974,7 @@ public class InfoMediaManagerTest { @Test public void onSuggestionUpdated_listenersNotified() { SuggestedDeviceInfo suggestedDeviceInfo = new SuggestedDeviceInfo.Builder() .setDeviceDisplayName("device_name") .setRouteId(TEST_ID_3) .setType(0) .build(); new SuggestedDeviceInfo.Builder("device_name", TEST_ID_3, 0).build(); RouterInfoMediaManager mediaManager = createRouterInfoMediaManager(); setAvailableRoutesList(TEST_PACKAGE_NAME); mediaManager.registerCallback(mCallback); Loading @@ -1001,11 +997,7 @@ public class InfoMediaManagerTest { @Test public void onSuggestionUpdated_routesNotSet_listenersNotified() { SuggestedDeviceInfo suggestedDeviceInfo = new SuggestedDeviceInfo.Builder() .setDeviceDisplayName("device_name") .setRouteId(TEST_ID_3) .setType(0) .build(); new SuggestedDeviceInfo.Builder("device_name", TEST_ID_3, 0).build(); RouterInfoMediaManager mediaManager = createRouterInfoMediaManager(); mediaManager.registerCallback(mCallback); clearInvocations(mCallback); Loading @@ -1026,11 +1018,7 @@ public class InfoMediaManagerTest { @Test public void onSuggestionUpdated_mediaDeviceIsSuggested() { SuggestedDeviceInfo suggestedDeviceInfo = new SuggestedDeviceInfo.Builder() .setDeviceDisplayName("device_name") .setRouteId(TEST_ID_3) .setType(0) .build(); new SuggestedDeviceInfo.Builder("device_name", TEST_ID_3, 0).build(); RouterInfoMediaManager mediaManager = createRouterInfoMediaManager(); setAvailableRoutesList(TEST_PACKAGE_NAME); mediaManager.registerCallback(mCallback); Loading @@ -1052,11 +1040,7 @@ public class InfoMediaManagerTest { @Test public void onSuggestionUpdated_noSuggestedDevices_noSuggestedMediaDevices() { SuggestedDeviceInfo suggestedDeviceInfo = new SuggestedDeviceInfo.Builder() .setDeviceDisplayName("device_name") .setRouteId(TEST_ID_3) .setType(0) .build(); new SuggestedDeviceInfo.Builder("device_name", TEST_ID_3, 0).build(); RouterInfoMediaManager mediaManager = createRouterInfoMediaManager(); setAvailableRoutesList(TEST_PACKAGE_NAME); mediaManager.registerCallback(mCallback); Loading @@ -1081,17 +1065,9 @@ public class InfoMediaManagerTest { @Test public void onSuggestionUpdated_multipleProviders_noSuggestedMediaDevices() { SuggestedDeviceInfo suggestedDeviceInfo1 = new SuggestedDeviceInfo.Builder() .setDeviceDisplayName("device_name") .setRouteId(TEST_ID_3) .setType(0) .build(); new SuggestedDeviceInfo.Builder("device_name_1", TEST_ID_3, 0).build(); SuggestedDeviceInfo suggestedDeviceInfo2 = new SuggestedDeviceInfo.Builder() .setDeviceDisplayName("device_name_2") .setRouteId(TEST_ID_3) .setType(0) .build(); new SuggestedDeviceInfo.Builder("device_name_2", TEST_ID_3, 0).build(); RouterInfoMediaManager mediaManager = createRouterInfoMediaManager(); setAvailableRoutesList(TEST_PACKAGE_NAME); mediaManager.registerCallback(mCallback); Loading @@ -1116,11 +1092,7 @@ public class InfoMediaManagerTest { @Test public void onSuggestionUpdated_firstSuggestionFromSamePackage_suggestionIsFromSamePackage() { SuggestedDeviceInfo suggestedDeviceInfo = new SuggestedDeviceInfo.Builder() .setDeviceDisplayName("device_name") .setRouteId(TEST_ID_3) .setType(0) .build(); new SuggestedDeviceInfo.Builder("device_name", TEST_ID_3, 0).build(); RouterInfoMediaManager mediaManager = createRouterInfoMediaManager(); setAvailableRoutesList(TEST_PACKAGE_NAME); mediaManager.registerCallback(mCallback); Loading @@ -1145,11 +1117,7 @@ public class InfoMediaManagerTest { @Test public void onSuggestionUpdated_laterSuggestionFromSamePackage_suggestionIsFromSamePackage() { SuggestedDeviceInfo suggestedDeviceInfo = new SuggestedDeviceInfo.Builder() .setDeviceDisplayName("device_name") .setRouteId(TEST_ID_3) .setType(0) .build(); new SuggestedDeviceInfo.Builder("device_name", TEST_ID_3, 0).build(); RouterInfoMediaManager mediaManager = createRouterInfoMediaManager(); setAvailableRoutesList(TEST_PACKAGE_NAME); mediaManager.registerCallback(mCallback); Loading @@ -1174,11 +1142,7 @@ public class InfoMediaManagerTest { @Test public void setDeviceState_suggestionListenerNotified() { SuggestedDeviceInfo suggestedDeviceInfo = new SuggestedDeviceInfo.Builder() .setDeviceDisplayName("device_name") .setRouteId(TEST_ID_3) .setType(0) .build(); new SuggestedDeviceInfo.Builder("device_name", TEST_ID_3, 0).build(); RouterInfoMediaManager mediaManager = createRouterInfoMediaManager(); setAvailableRoutesList(TEST_PACKAGE_NAME); mediaManager.registerCallback(mCallback); Loading