From b769083a5bcebebefa5ec50cbacba584421add21 Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Wed, 12 Jun 2019 18:36:25 +0200 Subject: [PATCH] Use getPhysicalDisplayToken on Anroid Q+ instead of getBuiltInDisplay This makes the -S (screen off) parameter work on Android Q beta 4 Closes #586 --- .../com/genymobile/scrcpy/wrappers/SurfaceControl.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/server/src/main/java/com/genymobile/scrcpy/wrappers/SurfaceControl.java b/server/src/main/java/com/genymobile/scrcpy/wrappers/SurfaceControl.java index bed21b3c..e028dcd8 100644 --- a/server/src/main/java/com/genymobile/scrcpy/wrappers/SurfaceControl.java +++ b/server/src/main/java/com/genymobile/scrcpy/wrappers/SurfaceControl.java @@ -2,6 +2,7 @@ package com.genymobile.scrcpy.wrappers; import android.annotation.SuppressLint; import android.graphics.Rect; +import android.os.Build; import android.os.IBinder; import android.view.Surface; @@ -77,7 +78,13 @@ public final class SurfaceControl { public static IBinder getBuiltInDisplay(int builtInDisplayId) { try { - return (IBinder) CLASS.getMethod("getBuiltInDisplay", int.class).invoke(null, builtInDisplayId); + // Android Q does not have this method anymore but has a + // replacement. + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) { + return (IBinder) CLASS.getMethod("getBuiltInDisplay", int.class).invoke(null, builtInDisplayId); + } else { + return (IBinder) CLASS.getMethod("getPhysicalDisplayToken", long.class).invoke(null, builtInDisplayId); + } } catch (Exception e) { throw new AssertionError(e); }