Loading core/api/current.txt +7 −5 Original line number Diff line number Diff line Loading @@ -25297,6 +25297,7 @@ package android.media { public final class MediaRouter2 { method @FlaggedApi("com.android.media.flags.enable_screen_off_scanning") public void cancelScanRequest(@NonNull android.media.MediaRouter2.ScanToken); method @FlaggedApi("com.android.media.flags.enable_suggested_device_api") public void clearDeviceSuggestions(); 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(); Loading @@ -25306,7 +25307,7 @@ package android.media { 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 @FlaggedApi("com.android.media.flags.enable_suggested_device_api") public void registerDeviceSuggestionsUpdatesCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.DeviceSuggestionsUpdatesCallback); method public void registerRouteCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.RouteCallback, @NonNull android.media.RouteDiscoveryPreference); method 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); Loading @@ -25319,7 +25320,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 @FlaggedApi("com.android.media.flags.enable_suggested_device_api") public void unregisterDeviceSuggestionsUpdatesCallback(@NonNull android.media.MediaRouter2.DeviceSuggestionsUpdatesCallback); method public void unregisterRouteCallback(@NonNull android.media.MediaRouter2.RouteCallback); method public void unregisterRouteListingPreferenceUpdatedCallback(@NonNull java.util.function.Consumer<android.media.RouteListingPreference>); method public void unregisterTransferCallback(@NonNull android.media.MediaRouter2.TransferCallback); Loading @@ -25330,9 +25331,10 @@ 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>); @FlaggedApi("com.android.media.flags.enable_suggested_device_api") public static interface MediaRouter2.DeviceSuggestionsUpdatesCallback { method public void onSuggestionsCleared(@NonNull String); method public void onSuggestionsRequested(); method public void onSuggestionsUpdated(@NonNull String, @NonNull java.util.List<android.media.SuggestedDeviceInfo>); } public static interface MediaRouter2.OnGetControllerHintsListener { media/java/android/media/MediaRouter2.java +68 −33 Original line number Diff line number Diff line Loading @@ -159,8 +159,8 @@ public final class MediaRouter2 { new CopyOnWriteArrayList<>(); private final CopyOnWriteArrayList<ControllerCallbackRecord> mControllerCallbackRecords = new CopyOnWriteArrayList<>(); private final CopyOnWriteArrayList<DeviceSuggestionsCallbackRecord> mDeviceSuggestionsCallbackRecords = new CopyOnWriteArrayList<>(); private final CopyOnWriteArrayList<DeviceSuggestionsUpdatesCallbackRecord> mDeviceSuggestionsUpdatesCallbackRecords = new CopyOnWriteArrayList<>(); private final CopyOnWriteArrayList<ControllerCreationRequest> mControllerCreationRequests = new CopyOnWriteArrayList<>(); Loading Loading @@ -771,17 +771,18 @@ public final class MediaRouter2 { * <p>Calls using a previously registered callback will overwrite the previous executor. */ @FlaggedApi(FLAG_ENABLE_SUGGESTED_DEVICE_API) public void registerDeviceSuggestionsCallback( public void registerDeviceSuggestionsUpdatesCallback( @NonNull @CallbackExecutor Executor executor, @NonNull DeviceSuggestionsCallback deviceSuggestionsCallback) { @NonNull DeviceSuggestionsUpdatesCallback deviceSuggestionsUpdatesCallback) { Objects.requireNonNull(executor, "executor must not be null"); Objects.requireNonNull(deviceSuggestionsCallback, "callback must not be null"); Objects.requireNonNull(deviceSuggestionsUpdatesCallback, "callback must not be null"); DeviceSuggestionsCallbackRecord record = new DeviceSuggestionsCallbackRecord(executor, deviceSuggestionsCallback); DeviceSuggestionsUpdatesCallbackRecord record = new DeviceSuggestionsUpdatesCallbackRecord( executor, deviceSuggestionsUpdatesCallback); mDeviceSuggestionsCallbackRecords.remove(record); mDeviceSuggestionsCallbackRecords.add(record); mDeviceSuggestionsUpdatesCallbackRecords.remove(record); mDeviceSuggestionsUpdatesCallbackRecords.add(record); } /** Loading @@ -805,15 +806,19 @@ public final class MediaRouter2 { /** * Unregisters the given callback to not receive {@link SuggestedDeviceInfo} change events. * * @see #registerDeviceSuggestionsCallback(Executor, DeviceSuggestionsCallback) * @see #registerDeviceSuggestionsUpdatesCallback(Executor, DeviceSuggestionsUpdatesCallback) */ @FlaggedApi(FLAG_ENABLE_SUGGESTED_DEVICE_API) public void unregisterDeviceSuggestionsCallback(@NonNull DeviceSuggestionsCallback callback) { public void unregisterDeviceSuggestionsUpdatesCallback( @NonNull DeviceSuggestionsUpdatesCallback callback) { Objects.requireNonNull(callback, "callback must not be null"); if (!mDeviceSuggestionsCallbackRecords.remove( new DeviceSuggestionsCallbackRecord(/* executor */ null, callback))) { Log.w(TAG, "unregisterDeviceSuggestionsCallback: Ignoring an unknown" + " callback"); if (!mDeviceSuggestionsUpdatesCallbackRecords.remove( new DeviceSuggestionsUpdatesCallbackRecord(/* executor */ null, callback))) { Log.w( TAG, "unregisterDeviceSuggestionsUpdatesCallback: Ignoring an unknown" + " callback"); } } Loading Loading @@ -888,6 +893,20 @@ public final class MediaRouter2 { mImpl.setDeviceSuggestions(suggestedDeviceInfo); } /** * Clears the {@link SuggestedDeviceInfo device suggestions} provided by this router. * * <p>Use this method to tell the system that this router is not currently providing any * suggestions. * * <p>If the router explicitly wants to recommend that no suggestion is appropriate, use {@link * setDeviceSuggestions} with an empty list */ @FlaggedApi(FLAG_ENABLE_SUGGESTED_DEVICE_API) public void clearDeviceSuggestions() { mImpl.setDeviceSuggestions(null); } /** * Gets the current suggested devices. * Loading Loading @@ -1610,18 +1629,26 @@ public final class MediaRouter2 { private void notifyDeviceSuggestionsUpdated( @NonNull String suggestingPackageName, @Nullable List<SuggestedDeviceInfo> deviceSuggestions) { for (DeviceSuggestionsCallbackRecord record : mDeviceSuggestionsCallbackRecords) { for (DeviceSuggestionsUpdatesCallbackRecord record : mDeviceSuggestionsUpdatesCallbackRecords) { record.mExecutor.execute( () -> record.mDeviceSuggestionsCallback.onSuggestionUpdated( suggestingPackageName, deviceSuggestions)); () -> { if (deviceSuggestions != null) { record.mDeviceSuggestionsUpdatesCallback.onSuggestionsUpdated( suggestingPackageName, deviceSuggestions); } else { record.mDeviceSuggestionsUpdatesCallback.onSuggestionsCleared( suggestingPackageName); } }); } } private void notifyCallbacksDeviceSuggestionRequested() { for (DeviceSuggestionsCallbackRecord record : mDeviceSuggestionsCallbackRecords) { for (DeviceSuggestionsUpdatesCallbackRecord record : mDeviceSuggestionsUpdatesCallbackRecords) { record.mExecutor.execute( () -> record.mDeviceSuggestionsCallback.onSuggestionRequested()); () -> record.mDeviceSuggestionsUpdatesCallback.onSuggestionsRequested()); } } Loading Loading @@ -1677,7 +1704,7 @@ public final class MediaRouter2 { /** Callback for receiving events about device suggestions */ @FlaggedApi(FLAG_ENABLE_SUGGESTED_DEVICE_API) public interface DeviceSuggestionsCallback { public interface DeviceSuggestionsUpdatesCallback { /** * Called when suggestions are updated. Loading @@ -1685,12 +1712,19 @@ public final class MediaRouter2 { * @param suggestingPackageName the package that provided the suggestions. * @param suggestedDeviceInfo the suggestions provided by the package. */ void onSuggestionUpdated( void onSuggestionsUpdated( @NonNull String suggestingPackageName, @NonNull List<SuggestedDeviceInfo> suggestedDeviceInfo); /** * Called when suggestions are cleared. * * @param suggestingPackageName the package that cleared their provided suggestions. */ void onSuggestionsCleared(@NonNull String suggestingPackageName); /** Called when a router requests a suggestion from suggestion providers. */ void onSuggestionRequested(); void onSuggestionsRequested(); } /** Callback for receiving events about media route discovery. */ Loading Loading @@ -2458,15 +2492,15 @@ public final class MediaRouter2 { } } private static final class DeviceSuggestionsCallbackRecord { private static final class DeviceSuggestionsUpdatesCallbackRecord { public final Executor mExecutor; public final DeviceSuggestionsCallback mDeviceSuggestionsCallback; public final DeviceSuggestionsUpdatesCallback mDeviceSuggestionsUpdatesCallback; /* package */ DeviceSuggestionsCallbackRecord( /* package */ DeviceSuggestionsUpdatesCallbackRecord( @NonNull Executor executor, @NonNull DeviceSuggestionsCallback deviceSuggestionsCallback) { @NonNull DeviceSuggestionsUpdatesCallback deviceSuggestionsUpdatesCallback) { mExecutor = executor; mDeviceSuggestionsCallback = deviceSuggestionsCallback; mDeviceSuggestionsUpdatesCallback = deviceSuggestionsUpdatesCallback; } @Override Loading @@ -2474,16 +2508,17 @@ public final class MediaRouter2 { if (this == obj) { return true; } if (!(obj instanceof DeviceSuggestionsCallbackRecord)) { if (!(obj instanceof DeviceSuggestionsUpdatesCallbackRecord)) { return false; } return mDeviceSuggestionsCallback == ((DeviceSuggestionsCallbackRecord) obj).mDeviceSuggestionsCallback; return mDeviceSuggestionsUpdatesCallback == ((DeviceSuggestionsUpdatesCallbackRecord) obj) .mDeviceSuggestionsUpdatesCallback; } @Override public int hashCode() { return mDeviceSuggestionsCallback.hashCode(); return mDeviceSuggestionsUpdatesCallback.hashCode(); } } Loading Loading @@ -2608,7 +2643,7 @@ public final class MediaRouter2 { @Override public void notifyDeviceSuggestionsUpdated( String suggestingPackageName, List<SuggestedDeviceInfo> suggestions) { String suggestingPackageName, @Nullable List<SuggestedDeviceInfo> suggestions) { mHandler.sendMessage( obtainMessage( MediaRouter2::notifyDeviceSuggestionsUpdated, Loading packages/SettingsLib/src/com/android/settingslib/media/RouterInfoMediaManager.java +14 −7 Original line number Diff line number Diff line Loading @@ -20,7 +20,7 @@ import android.annotation.SuppressLint; import android.content.Context; import android.media.MediaRoute2Info; import android.media.MediaRouter2; import android.media.MediaRouter2.DeviceSuggestionsCallback; import android.media.MediaRouter2.DeviceSuggestionsUpdatesCallback; import android.media.MediaRouter2.RoutingController; import android.media.MediaRouter2Manager; import android.media.RouteDiscoveryPreference; Loading Loading @@ -72,17 +72,23 @@ public final class RouterInfoMediaManager extends InfoMediaManager { notifyRouteListingPreferenceUpdated(preference); refreshDevices(); }; private final DeviceSuggestionsCallback mDeviceSuggestionsCallback = new DeviceSuggestionsCallback() { private final DeviceSuggestionsUpdatesCallback mDeviceSuggestionsUpdatesCallback = new DeviceSuggestionsUpdatesCallback() { @Override public void onSuggestionUpdated( public void onSuggestionsUpdated( String suggestingPackageName, List<SuggestedDeviceInfo> suggestedDeviceInfo) { updateDeviceSuggestion(suggestingPackageName, suggestedDeviceInfo); } @Override public void onSuggestionRequested() {} // no-op public void onSuggestionsCleared(String suggestingPackageName) { updateDeviceSuggestion(suggestingPackageName, null); } @Override public void onSuggestionsRequested() {} // no-op }; @GuardedBy("this") Loading Loading @@ -154,7 +160,8 @@ public final class RouterInfoMediaManager extends InfoMediaManager { mRouter.registerRouteCallback(mExecutor, mRouteCallback, RouteDiscoveryPreference.EMPTY); mRouter.registerRouteListingPreferenceUpdatedCallback( mExecutor, mRouteListingPreferenceCallback); mRouter.registerDeviceSuggestionsCallback(mExecutor, mDeviceSuggestionsCallback); mRouter.registerDeviceSuggestionsUpdatesCallback( mExecutor, mDeviceSuggestionsUpdatesCallback); if (Flags.enableSuggestedDeviceApi()) { for (Map.Entry<String, List<SuggestedDeviceInfo>> entry : mRouter.getDeviceSuggestions().entrySet()) { Loading Loading @@ -184,7 +191,7 @@ public final class RouterInfoMediaManager extends InfoMediaManager { mRouter.unregisterControllerCallback(mControllerCallback); mRouter.unregisterTransferCallback(mTransferCallback); mRouter.unregisterRouteListingPreferenceUpdatedCallback(mRouteListingPreferenceCallback); mRouter.unregisterDeviceSuggestionsCallback(mDeviceSuggestionsCallback); mRouter.unregisterDeviceSuggestionsUpdatesCallback(mDeviceSuggestionsUpdatesCallback); mRouter.unregisterRouteCallback(mRouteCallback); } Loading packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java +51 −49 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
core/api/current.txt +7 −5 Original line number Diff line number Diff line Loading @@ -25297,6 +25297,7 @@ package android.media { public final class MediaRouter2 { method @FlaggedApi("com.android.media.flags.enable_screen_off_scanning") public void cancelScanRequest(@NonNull android.media.MediaRouter2.ScanToken); method @FlaggedApi("com.android.media.flags.enable_suggested_device_api") public void clearDeviceSuggestions(); 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(); Loading @@ -25306,7 +25307,7 @@ package android.media { 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 @FlaggedApi("com.android.media.flags.enable_suggested_device_api") public void registerDeviceSuggestionsUpdatesCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.DeviceSuggestionsUpdatesCallback); method public void registerRouteCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.RouteCallback, @NonNull android.media.RouteDiscoveryPreference); method 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); Loading @@ -25319,7 +25320,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 @FlaggedApi("com.android.media.flags.enable_suggested_device_api") public void unregisterDeviceSuggestionsUpdatesCallback(@NonNull android.media.MediaRouter2.DeviceSuggestionsUpdatesCallback); method public void unregisterRouteCallback(@NonNull android.media.MediaRouter2.RouteCallback); method public void unregisterRouteListingPreferenceUpdatedCallback(@NonNull java.util.function.Consumer<android.media.RouteListingPreference>); method public void unregisterTransferCallback(@NonNull android.media.MediaRouter2.TransferCallback); Loading @@ -25330,9 +25331,10 @@ 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>); @FlaggedApi("com.android.media.flags.enable_suggested_device_api") public static interface MediaRouter2.DeviceSuggestionsUpdatesCallback { method public void onSuggestionsCleared(@NonNull String); method public void onSuggestionsRequested(); method public void onSuggestionsUpdated(@NonNull String, @NonNull java.util.List<android.media.SuggestedDeviceInfo>); } public static interface MediaRouter2.OnGetControllerHintsListener {
media/java/android/media/MediaRouter2.java +68 −33 Original line number Diff line number Diff line Loading @@ -159,8 +159,8 @@ public final class MediaRouter2 { new CopyOnWriteArrayList<>(); private final CopyOnWriteArrayList<ControllerCallbackRecord> mControllerCallbackRecords = new CopyOnWriteArrayList<>(); private final CopyOnWriteArrayList<DeviceSuggestionsCallbackRecord> mDeviceSuggestionsCallbackRecords = new CopyOnWriteArrayList<>(); private final CopyOnWriteArrayList<DeviceSuggestionsUpdatesCallbackRecord> mDeviceSuggestionsUpdatesCallbackRecords = new CopyOnWriteArrayList<>(); private final CopyOnWriteArrayList<ControllerCreationRequest> mControllerCreationRequests = new CopyOnWriteArrayList<>(); Loading Loading @@ -771,17 +771,18 @@ public final class MediaRouter2 { * <p>Calls using a previously registered callback will overwrite the previous executor. */ @FlaggedApi(FLAG_ENABLE_SUGGESTED_DEVICE_API) public void registerDeviceSuggestionsCallback( public void registerDeviceSuggestionsUpdatesCallback( @NonNull @CallbackExecutor Executor executor, @NonNull DeviceSuggestionsCallback deviceSuggestionsCallback) { @NonNull DeviceSuggestionsUpdatesCallback deviceSuggestionsUpdatesCallback) { Objects.requireNonNull(executor, "executor must not be null"); Objects.requireNonNull(deviceSuggestionsCallback, "callback must not be null"); Objects.requireNonNull(deviceSuggestionsUpdatesCallback, "callback must not be null"); DeviceSuggestionsCallbackRecord record = new DeviceSuggestionsCallbackRecord(executor, deviceSuggestionsCallback); DeviceSuggestionsUpdatesCallbackRecord record = new DeviceSuggestionsUpdatesCallbackRecord( executor, deviceSuggestionsUpdatesCallback); mDeviceSuggestionsCallbackRecords.remove(record); mDeviceSuggestionsCallbackRecords.add(record); mDeviceSuggestionsUpdatesCallbackRecords.remove(record); mDeviceSuggestionsUpdatesCallbackRecords.add(record); } /** Loading @@ -805,15 +806,19 @@ public final class MediaRouter2 { /** * Unregisters the given callback to not receive {@link SuggestedDeviceInfo} change events. * * @see #registerDeviceSuggestionsCallback(Executor, DeviceSuggestionsCallback) * @see #registerDeviceSuggestionsUpdatesCallback(Executor, DeviceSuggestionsUpdatesCallback) */ @FlaggedApi(FLAG_ENABLE_SUGGESTED_DEVICE_API) public void unregisterDeviceSuggestionsCallback(@NonNull DeviceSuggestionsCallback callback) { public void unregisterDeviceSuggestionsUpdatesCallback( @NonNull DeviceSuggestionsUpdatesCallback callback) { Objects.requireNonNull(callback, "callback must not be null"); if (!mDeviceSuggestionsCallbackRecords.remove( new DeviceSuggestionsCallbackRecord(/* executor */ null, callback))) { Log.w(TAG, "unregisterDeviceSuggestionsCallback: Ignoring an unknown" + " callback"); if (!mDeviceSuggestionsUpdatesCallbackRecords.remove( new DeviceSuggestionsUpdatesCallbackRecord(/* executor */ null, callback))) { Log.w( TAG, "unregisterDeviceSuggestionsUpdatesCallback: Ignoring an unknown" + " callback"); } } Loading Loading @@ -888,6 +893,20 @@ public final class MediaRouter2 { mImpl.setDeviceSuggestions(suggestedDeviceInfo); } /** * Clears the {@link SuggestedDeviceInfo device suggestions} provided by this router. * * <p>Use this method to tell the system that this router is not currently providing any * suggestions. * * <p>If the router explicitly wants to recommend that no suggestion is appropriate, use {@link * setDeviceSuggestions} with an empty list */ @FlaggedApi(FLAG_ENABLE_SUGGESTED_DEVICE_API) public void clearDeviceSuggestions() { mImpl.setDeviceSuggestions(null); } /** * Gets the current suggested devices. * Loading Loading @@ -1610,18 +1629,26 @@ public final class MediaRouter2 { private void notifyDeviceSuggestionsUpdated( @NonNull String suggestingPackageName, @Nullable List<SuggestedDeviceInfo> deviceSuggestions) { for (DeviceSuggestionsCallbackRecord record : mDeviceSuggestionsCallbackRecords) { for (DeviceSuggestionsUpdatesCallbackRecord record : mDeviceSuggestionsUpdatesCallbackRecords) { record.mExecutor.execute( () -> record.mDeviceSuggestionsCallback.onSuggestionUpdated( suggestingPackageName, deviceSuggestions)); () -> { if (deviceSuggestions != null) { record.mDeviceSuggestionsUpdatesCallback.onSuggestionsUpdated( suggestingPackageName, deviceSuggestions); } else { record.mDeviceSuggestionsUpdatesCallback.onSuggestionsCleared( suggestingPackageName); } }); } } private void notifyCallbacksDeviceSuggestionRequested() { for (DeviceSuggestionsCallbackRecord record : mDeviceSuggestionsCallbackRecords) { for (DeviceSuggestionsUpdatesCallbackRecord record : mDeviceSuggestionsUpdatesCallbackRecords) { record.mExecutor.execute( () -> record.mDeviceSuggestionsCallback.onSuggestionRequested()); () -> record.mDeviceSuggestionsUpdatesCallback.onSuggestionsRequested()); } } Loading Loading @@ -1677,7 +1704,7 @@ public final class MediaRouter2 { /** Callback for receiving events about device suggestions */ @FlaggedApi(FLAG_ENABLE_SUGGESTED_DEVICE_API) public interface DeviceSuggestionsCallback { public interface DeviceSuggestionsUpdatesCallback { /** * Called when suggestions are updated. Loading @@ -1685,12 +1712,19 @@ public final class MediaRouter2 { * @param suggestingPackageName the package that provided the suggestions. * @param suggestedDeviceInfo the suggestions provided by the package. */ void onSuggestionUpdated( void onSuggestionsUpdated( @NonNull String suggestingPackageName, @NonNull List<SuggestedDeviceInfo> suggestedDeviceInfo); /** * Called when suggestions are cleared. * * @param suggestingPackageName the package that cleared their provided suggestions. */ void onSuggestionsCleared(@NonNull String suggestingPackageName); /** Called when a router requests a suggestion from suggestion providers. */ void onSuggestionRequested(); void onSuggestionsRequested(); } /** Callback for receiving events about media route discovery. */ Loading Loading @@ -2458,15 +2492,15 @@ public final class MediaRouter2 { } } private static final class DeviceSuggestionsCallbackRecord { private static final class DeviceSuggestionsUpdatesCallbackRecord { public final Executor mExecutor; public final DeviceSuggestionsCallback mDeviceSuggestionsCallback; public final DeviceSuggestionsUpdatesCallback mDeviceSuggestionsUpdatesCallback; /* package */ DeviceSuggestionsCallbackRecord( /* package */ DeviceSuggestionsUpdatesCallbackRecord( @NonNull Executor executor, @NonNull DeviceSuggestionsCallback deviceSuggestionsCallback) { @NonNull DeviceSuggestionsUpdatesCallback deviceSuggestionsUpdatesCallback) { mExecutor = executor; mDeviceSuggestionsCallback = deviceSuggestionsCallback; mDeviceSuggestionsUpdatesCallback = deviceSuggestionsUpdatesCallback; } @Override Loading @@ -2474,16 +2508,17 @@ public final class MediaRouter2 { if (this == obj) { return true; } if (!(obj instanceof DeviceSuggestionsCallbackRecord)) { if (!(obj instanceof DeviceSuggestionsUpdatesCallbackRecord)) { return false; } return mDeviceSuggestionsCallback == ((DeviceSuggestionsCallbackRecord) obj).mDeviceSuggestionsCallback; return mDeviceSuggestionsUpdatesCallback == ((DeviceSuggestionsUpdatesCallbackRecord) obj) .mDeviceSuggestionsUpdatesCallback; } @Override public int hashCode() { return mDeviceSuggestionsCallback.hashCode(); return mDeviceSuggestionsUpdatesCallback.hashCode(); } } Loading Loading @@ -2608,7 +2643,7 @@ public final class MediaRouter2 { @Override public void notifyDeviceSuggestionsUpdated( String suggestingPackageName, List<SuggestedDeviceInfo> suggestions) { String suggestingPackageName, @Nullable List<SuggestedDeviceInfo> suggestions) { mHandler.sendMessage( obtainMessage( MediaRouter2::notifyDeviceSuggestionsUpdated, Loading
packages/SettingsLib/src/com/android/settingslib/media/RouterInfoMediaManager.java +14 −7 Original line number Diff line number Diff line Loading @@ -20,7 +20,7 @@ import android.annotation.SuppressLint; import android.content.Context; import android.media.MediaRoute2Info; import android.media.MediaRouter2; import android.media.MediaRouter2.DeviceSuggestionsCallback; import android.media.MediaRouter2.DeviceSuggestionsUpdatesCallback; import android.media.MediaRouter2.RoutingController; import android.media.MediaRouter2Manager; import android.media.RouteDiscoveryPreference; Loading Loading @@ -72,17 +72,23 @@ public final class RouterInfoMediaManager extends InfoMediaManager { notifyRouteListingPreferenceUpdated(preference); refreshDevices(); }; private final DeviceSuggestionsCallback mDeviceSuggestionsCallback = new DeviceSuggestionsCallback() { private final DeviceSuggestionsUpdatesCallback mDeviceSuggestionsUpdatesCallback = new DeviceSuggestionsUpdatesCallback() { @Override public void onSuggestionUpdated( public void onSuggestionsUpdated( String suggestingPackageName, List<SuggestedDeviceInfo> suggestedDeviceInfo) { updateDeviceSuggestion(suggestingPackageName, suggestedDeviceInfo); } @Override public void onSuggestionRequested() {} // no-op public void onSuggestionsCleared(String suggestingPackageName) { updateDeviceSuggestion(suggestingPackageName, null); } @Override public void onSuggestionsRequested() {} // no-op }; @GuardedBy("this") Loading Loading @@ -154,7 +160,8 @@ public final class RouterInfoMediaManager extends InfoMediaManager { mRouter.registerRouteCallback(mExecutor, mRouteCallback, RouteDiscoveryPreference.EMPTY); mRouter.registerRouteListingPreferenceUpdatedCallback( mExecutor, mRouteListingPreferenceCallback); mRouter.registerDeviceSuggestionsCallback(mExecutor, mDeviceSuggestionsCallback); mRouter.registerDeviceSuggestionsUpdatesCallback( mExecutor, mDeviceSuggestionsUpdatesCallback); if (Flags.enableSuggestedDeviceApi()) { for (Map.Entry<String, List<SuggestedDeviceInfo>> entry : mRouter.getDeviceSuggestions().entrySet()) { Loading Loading @@ -184,7 +191,7 @@ public final class RouterInfoMediaManager extends InfoMediaManager { mRouter.unregisterControllerCallback(mControllerCallback); mRouter.unregisterTransferCallback(mTransferCallback); mRouter.unregisterRouteListingPreferenceUpdatedCallback(mRouteListingPreferenceCallback); mRouter.unregisterDeviceSuggestionsCallback(mDeviceSuggestionsCallback); mRouter.unregisterDeviceSuggestionsUpdatesCallback(mDeviceSuggestionsUpdatesCallback); mRouter.unregisterRouteCallback(mRouteCallback); } Loading
packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java +51 −49 File changed.Preview size limit exceeded, changes collapsed. Show changes