package com.genymobile.scrcpy.wrappers; import android.os.IInterface; import com.genymobile.scrcpy.DisplayInfo; import com.genymobile.scrcpy.Size; public class DisplayManager { private final IInterface manager; public DisplayManager(IInterface manager) { this.manager = manager; } public DisplayInfo getDisplayInfo() { try { Object displayInfo = manager.getClass().getMethod("getDisplayInfo", int.class).invoke(manager, 0); Class cls = displayInfo.getClass(); // width and height already take the rotation into account int width = cls.getDeclaredField("logicalWidth").getInt(displayInfo); int height = cls.getDeclaredField("logicalHeight").getInt(displayInfo); int rotation = cls.getDeclaredField("rotation").getInt(displayInfo); return new DisplayInfo(new Size(width, height), rotation); } catch (Exception e) { throw new AssertionError(e); } } }