Merge "Specify the display ID to mirror for media projection" into main
diff --git a/media/java/android/media/projection/MediaProjection.java b/media/java/android/media/projection/MediaProjection.java
index 31f8996..ef4c3ef 100644
--- a/media/java/android/media/projection/MediaProjection.java
+++ b/media/java/android/media/projection/MediaProjection.java
@@ -16,6 +16,8 @@
 
 package android.media.projection;
 
+import static android.view.Display.DEFAULT_DISPLAY;
+
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.app.compat.CompatChanges;
@@ -29,6 +31,7 @@
 import android.os.Build;
 import android.os.Handler;
 import android.os.RemoteException;
+import android.os.UserManager;
 import android.util.ArrayMap;
 import android.util.Log;
 import android.util.Slog;
@@ -70,6 +73,7 @@
     private final DisplayManager mDisplayManager;
     @NonNull
     private final Map<Callback, CallbackRecord> mCallbacks = new ArrayMap<>();
+    private final int mDisplayId;
 
     /** @hide */
     public MediaProjection(Context context, IMediaProjection impl) {
@@ -88,6 +92,11 @@
             throw new RuntimeException("Failed to start media projection", e);
         }
         mDisplayManager = displayManager;
+
+        final UserManager userManager = context.getSystemService(UserManager.class);
+        mDisplayId = userManager.isVisibleBackgroundUsersSupported()
+                ? userManager.getMainDisplayIdAssignedToUser()
+                : DEFAULT_DISPLAY;
     }
 
     /**
@@ -156,6 +165,7 @@
         if (surface != null) {
             builder.setSurface(surface);
         }
+        builder.setDisplayIdToMirror(mDisplayId);
         return createVirtualDisplay(builder, callback, handler);
     }
 
@@ -234,6 +244,7 @@
         if (surface != null) {
             builder.setSurface(surface);
         }
+        builder.setDisplayIdToMirror(mDisplayId);
         return createVirtualDisplay(builder, callback, handler);
     }