diff options
| -rw-r--r-- | media/java/android/media/flags/media_better_together.aconfig | 7 | ||||
| -rw-r--r-- | services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java | 14 |
2 files changed, 16 insertions, 5 deletions
diff --git a/media/java/android/media/flags/media_better_together.aconfig b/media/java/android/media/flags/media_better_together.aconfig index 83d2b613f80a..efd0797ca8bd 100644 --- a/media/java/android/media/flags/media_better_together.aconfig +++ b/media/java/android/media/flags/media_better_together.aconfig @@ -20,3 +20,10 @@ flag { description: "Use Audio Policies implementation for device and Bluetooth route controllers." bug: "280576228" } + +flag { + namespace: "media_solutions" + name: "disable_screen_off_broadcast_receiver" + description: "Disables the broadcast receiver that prevents scanning when the screen is off." + bug: "304234628" +} diff --git a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java index c9528d8257c4..9dec1dff4cf0 100644 --- a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java +++ b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java @@ -63,6 +63,7 @@ import android.util.SparseArray; import com.android.internal.annotations.GuardedBy; import com.android.internal.util.function.pooled.PooledLambda; +import com.android.media.flags.Flags; import com.android.server.LocalServices; import com.android.server.pm.UserManagerInternal; @@ -161,11 +162,13 @@ class MediaRouter2ServiceImpl { mPowerManager = mContext.getSystemService(PowerManager.class); mUserManagerInternal = LocalServices.getService(UserManagerInternal.class); - IntentFilter screenOnOffIntentFilter = new IntentFilter(); - screenOnOffIntentFilter.addAction(ACTION_SCREEN_ON); - screenOnOffIntentFilter.addAction(ACTION_SCREEN_OFF); + if (!Flags.disableScreenOffBroadcastReceiver()) { + IntentFilter screenOnOffIntentFilter = new IntentFilter(); + screenOnOffIntentFilter.addAction(ACTION_SCREEN_ON); + screenOnOffIntentFilter.addAction(ACTION_SCREEN_OFF); + mContext.registerReceiver(mScreenOnOffReceiver, screenOnOffIntentFilter); + } - mContext.registerReceiver(mScreenOnOffReceiver, screenOnOffIntentFilter); mContext.getPackageManager().addOnPermissionsChangeListener(this::onPermissionsChanged); MediaFeatureFlagManager.getInstance() @@ -2779,7 +2782,8 @@ class MediaRouter2ServiceImpl { List<ManagerRecord> managerRecords = getManagerRecords(); boolean isManagerScanning = false; - if (service.mPowerManager.isInteractive()) { + if (Flags.disableScreenOffBroadcastReceiver() + || service.mPowerManager.isInteractive()) { isManagerScanning = managerRecords.stream().anyMatch(manager -> manager.mIsScanning && service.mActivityManager .getPackageImportance(manager.mOwnerPackageName) |