Compare commits
2 Commits
master
...
honoroff.5
Author | SHA1 | Date | |
---|---|---|---|
|
c19c688e0c | ||
|
b20e22d018 |
@ -323,23 +323,18 @@ 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) {
|
||||||
boolean applyToMultiPhysicalDisplays = Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q;
|
if (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();
|
||||||
|
|
||||||
|
if (useDisplayControl && Build.BRAND.equalsIgnoreCase("honor")) {
|
||||||
|
// Workaround for Honor devices with Android 14:
|
||||||
|
// - <https://github.com/Genymobile/scrcpy/issues/4823>
|
||||||
|
// - <https://github.com/Genymobile/scrcpy/issues/4943>
|
||||||
|
useDisplayControl = false;
|
||||||
|
}
|
||||||
|
|
||||||
// Change the power mode for all physical displays
|
// Change the power mode for all physical displays
|
||||||
long[] physicalDisplayIds = useDisplayControl ? DisplayControl.getPhysicalDisplayIds() : SurfaceControl.getPhysicalDisplayIds();
|
long[] physicalDisplayIds = useDisplayControl ? DisplayControl.getPhysicalDisplayIds() : SurfaceControl.getPhysicalDisplayIds();
|
||||||
if (physicalDisplayIds == null) {
|
if (physicalDisplayIds == null) {
|
||||||
|
@ -94,15 +94,6 @@ 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…
x
Reference in New Issue
Block a user