Unreal发布Android在刘海屏手机上不能全屏显示问题
Unreal 4.27发布Android在刘海屏手机上不能全屏显示问题
- Android设置全屏
- 刘海屏全屏设置
- 4.27设置刘海屏在部分手机不能显示问题
Android设置全屏
AndroidManifest.xml文件配置
... ...
其中设置android:resizeableActivity="false",增加,默认最大的宽高比是2,现在很多手机超过这个宽高比,所以可以设置更大的宽高比。
Unreal不能直接修改AndroidManifest.xml文件,需要通过Project Setting->Platforms->Android->Advanced APK Packaging进行设置。
实际上,我们不需要修改AndroidManifest.xml,在Project Setting->Platforms->Android->APK Packaging有选项设置。
以上两个选项设置允许全屏和最大宽高比,但不适合刘海屏全屏。因为刘海屏的刘海并不属于常规全屏的一部分。
刘海屏全屏设置
Unreal 4.27是有选项直接设置刘海屏全屏显示的。
但测试很多手机都不能在刘海屏显示。
4.27设置刘海屏在部分手机不能显示问题
问题出在打包的Java程序里
打开上面的java文件,可以看到java代码里还有机型测试。
// allow certain models for now to use full area around cutout boolean BlockDisplayCutout = true; if (android.os.Build.MANUFACTURER.equals("HUAWEI")) { BlockDisplayCutout = false; } else if (android.os.Build.MANUFACTURER.equals("HMD Global")) { String model = android.os.Build.MODEL; if (model.equals("Nokia 8.1")) { BlockDisplayCutout = false; } } else if (android.os.Build.MANUFACTURER.equals("samsung")) { String model = android.os.Build.MODEL; if (model.startsWith("SM-G970") || model.startsWith("SM-G973") || model.startsWith("SM-G975") || model.startsWith("SC-03L") || model.startsWith("SCV41") || model.startsWith("SC-04L") || model.startsWith("SCV42") || model.startsWith("SM-N97") || model.startsWith("SM-F700") || model.startsWith("SM-G98") || model.startsWith("SCV47") || model.startsWith("SCG01") || model.startsWith("SCG02") || model.startsWith("SC-51A") || model.startsWith("SC-52A") || android.os.Build.VERSION.SDK_INT >= 28) { BlockDisplayCutout = false; } } else if (android.os.Build.MANUFACTURER.equals("Xiaomi")) { String model = android.os.Build.MODEL; if (model.startsWith("POCOPHONE F1")) { BlockDisplayCutout = false; } } else if (android.os.Build.MANUFACTURER.equals("OnePlus")) { String model = android.os.Build.MODEL; if (model.startsWith("IN2020") || model.startsWith("IN2021") || model.startsWith("IN2023") || model.startsWith("IN2025") || model.startsWith("IN2010") || model.startsWith("IN2011") || model.startsWith("IN2013") || model.startsWith("IN2015") || model.startsWith("IN2017") || model.startsWith("IN2019") || model.startsWith("AC2001") || model.startsWith("AC2003") || model.startsWith("BE2025") || model.startsWith("BE2026") || model.startsWith("BE2028") || model.startsWith("BE2029")) { BlockDisplayCutout = false; } } if (BlockDisplayCutout) { UseDisplayCutout = false; }
UseDisplayCutout从打包参数接收设置,但以上java代码又做了机型判断,如果机型不在目录中,UseDisplayCutout会被强制设置为false。
if (BlockDisplayCutout) { UseDisplayCutout = false; }
那么,我们只要修改这个代码,把强制设置UseDisplayCutout = false注释掉应该就可以显示刘海屏了。
直接修改Intermediate\Android\arm64\src\com\epicgames\ue4\SplashActivity.java文件是无用的,Intermediate目录下的文件在编译的时候会被新生成代码覆盖掉的。
我们需要把Intermediate\Android\arm64\src\com\epicgames\ue4\SplashActivity.java文件拷贝到Build\Android\src\com\epicgames\ue4\SplashActivity.java(如果已经有了,就不用拷贝了),然后修改Build\Android\src\com\epicgames\ue4\SplashActivity.java才行。
if (BlockDisplayCutout) { // UseDisplayCutout = false; }
经过以上设置,实际测试可以在OPPO手机上正常显示刘海屏全屏了。
还没有评论,来说两句吧...