mirror of https://github.com/Genymobile/scrcpy
Fix "turn screen off" for Honor Android 14 devices
Fixes #4823 <https://github.com/Genymobile/scrcpy/issues/4823> PR #5109 <https://github.com/Genymobile/scrcpy/pull/5109> Signed-off-by: Romain Vimont <rom@rom1v.com>
This commit is contained in:
parent
e0cdc2ace3
commit
9d1d79b004
|
@ -323,7 +323,19 @@ public final class Device {
|
||||||
* @param mode one of the {@code POWER_MODE_*} constants
|
* @param mode one of the {@code POWER_MODE_*} constants
|
||||||
*/
|
*/
|
||||||
public static boolean setScreenPowerMode(int mode) {
|
public static boolean setScreenPowerMode(int mode) {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
boolean applyToMultiPhysicalDisplays = Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q;
|
||||||
|
|
||||||
|
if (applyToMultiPhysicalDisplays
|
||||||
|
&& Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE
|
||||||
|
&& Build.BRAND.equalsIgnoreCase("honor")
|
||||||
|
&& SurfaceControl.hasGetBuildInDisplayMethod()) {
|
||||||
|
// Workaround for Honor devices with Android 14:
|
||||||
|
// - <https://github.com/Genymobile/scrcpy/issues/4823>
|
||||||
|
// - <https://github.com/Genymobile/scrcpy/issues/4943>
|
||||||
|
applyToMultiPhysicalDisplays = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (applyToMultiPhysicalDisplays) {
|
||||||
// On Android 14, these internal methods have been moved to DisplayControl
|
// On Android 14, these internal methods have been moved to DisplayControl
|
||||||
boolean useDisplayControl =
|
boolean useDisplayControl =
|
||||||
Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE && !SurfaceControl.hasGetPhysicalDisplayIdsMethod();
|
Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE && !SurfaceControl.hasGetPhysicalDisplayIdsMethod();
|
||||||
|
|
|
@ -94,6 +94,15 @@ public final class SurfaceControl {
|
||||||
return getBuiltInDisplayMethod;
|
return getBuiltInDisplayMethod;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean hasGetBuildInDisplayMethod() {
|
||||||
|
try {
|
||||||
|
getGetBuiltInDisplayMethod();
|
||||||
|
return true;
|
||||||
|
} catch (NoSuchMethodException e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static IBinder getBuiltInDisplay() {
|
public static IBinder getBuiltInDisplay() {
|
||||||
try {
|
try {
|
||||||
Method method = getGetBuiltInDisplayMethod();
|
Method method = getGetBuiltInDisplayMethod();
|
||||||
|
|
Loading…
Reference in New Issue