diff --git a/packages/SettingsLib/src/com/android/settingslib/media/RouterInfoMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/RouterInfoMediaManager.java index 0f08605a50d0e9df5f9650d186f9a3ba457de4af..df03167cd0f941a1f94478a36c8dda694d820aa7 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/RouterInfoMediaManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/RouterInfoMediaManager.java @@ -41,6 +41,7 @@ import java.util.HashMap; import java.util.List; import java.util.concurrent.Executor; import java.util.concurrent.Executors; +import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; import java.util.stream.Collectors; @@ -64,6 +65,8 @@ public final class RouterInfoMediaManager extends InfoMediaManager { refreshDevices(); }; + private final AtomicReference<MediaRouter2.ScanToken> mScanToken = new AtomicReference<>(); + // TODO (b/321969740): Plumb target UserHandle between UMO and RouterInfoMediaManager. /* package */ RouterInfoMediaManager( Context context, @@ -101,12 +104,24 @@ public final class RouterInfoMediaManager extends InfoMediaManager { mExecutor, mRouteListingPreferenceCallback); mRouter.registerTransferCallback(mExecutor, mTransferCallback); mRouter.registerControllerCallback(mExecutor, mControllerCallback); - mRouter.startScan(); + if (Flags.enableScreenOffScanning()) { + MediaRouter2.ScanRequest request = new MediaRouter2.ScanRequest.Builder().build(); + mScanToken.compareAndSet(null, mRouter.requestScan(request)); + } else { + mRouter.startScan(); + } } @Override public void stopScan() { - mRouter.stopScan(); + if (Flags.enableScreenOffScanning()) { + MediaRouter2.ScanToken token = mScanToken.getAndSet(null); + if (token != null) { + mRouter.cancelScanRequest(token); + } + } else { + mRouter.stopScan(); + } mRouter.unregisterControllerCallback(mControllerCallback); mRouter.unregisterTransferCallback(mTransferCallback); mRouter.unregisterRouteListingPreferenceUpdatedCallback(mRouteListingPreferenceCallback);