Fix screen capture orientation for landscape-native devices (#1854)

- Corrects isDeviceOrientationPortrait() to properly detect device orientation
- Fixes virtual display dimensions for tablets and embedded devices
- Resolves issue where ROTATION_0 was incorrectly assumed to be portrait

Fixes #1852

Co-authored-by: Josh Galicic josh.galicic@hunterlab.com
This commit is contained in:
Lukáš Haring
2025-05-29 13:40:19 +02:00
committed by GitHub
parent 51ca79ca5a
commit 8f0584b1fd

View File

@ -15,6 +15,7 @@ import android.view.Surface;
import android.view.WindowManager;
import android.app.Activity;
import android.hardware.display.DisplayManager;
import android.util.DisplayMetrics;
import android.hardware.display.VirtualDisplay;
import android.media.projection.MediaProjectionManager;
import android.os.Looper;
@ -76,9 +77,11 @@ public class OrientationAwareScreenCapturer implements VideoCapturer, VideoSink
}
private boolean isDeviceOrientationPortrait() {
final int surfaceRotation = windowManager.getDefaultDisplay().getRotation();
return surfaceRotation != Surface.ROTATION_90 && surfaceRotation != Surface.ROTATION_270;
final Display display = windowManager.getDefaultDisplay();
final DisplayMetrics metrics = new DisplayMetrics();
display.getRealMetrics(metrics);
return metrics.heightPixels > metrics.widthPixels;
}