当前位置: 首页 > news >正文

Unreal发布Android在刘海屏手机上不能全屏显示问题

Unreal 4.27发布Android在刘海屏手机上不能全屏显示问题

  • Android设置全屏
  • 刘海屏全屏设置
  • 4.27设置刘海屏在部分手机不能显示问题

Android设置全屏

AndroidManifest.xml文件配置

    ...<activity android:name="com.epicgames.ue4.GameActivity" android:label="@string/app_name" android:theme="@style/UE4SplashTheme" android:configChanges="mcc|mnc|uiMode|density|screenSize|smallestScreenSize|screenLayout|orientation|keyboardHidden|keyboard" android:resizeableActivity="false" android:launchMode="singleTask" android:screenOrientation="sensorLandscape" android:debuggable="true"><meta-data android:name="android.app.lib_name" android:value="UE4" /></activity><activity android:name=".DownloaderActivity" android:screenOrientation="sensorLandscape" android:configChanges="mcc|mnc|uiMode|density|screenSize|orientation|keyboardHidden|keyboard" android:theme="@style/UE4SplashTheme" /><meta-data android:name="android.max_aspect" android:value="2.4" />...

其中设置android:resizeableActivity="false",增加<meta-data android:name="android.max_aspect" android:value="2.4" />,默认最大的宽高比是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 cutoutboolean 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手机上正常显示刘海屏全屏了。

http://www.lryc.cn/news/318004.html

相关文章:

  • hive库表占用空间大小的命令
  • 关于go中的select
  • 【Node.js从基础到高级运用】十一、构建RESTful API
  • Python和MATLAB数字信号波形和模型模拟
  • 华为OD技术C卷“测试用例执行计划”Java解答
  • solana 入门 1
  • JavaEE之多线程(创建线程的五种写法)详解
  • ChatGPT国内能用吗?中国用户怎么才能使用ChatGPT?
  • 集群保持集群负载均衡和hash一致性
  • 吴恩达深度学习笔记:神经网络的编程基础2.9-2.14
  • 在C++项目中使用python脚本(四种)常见报错解决
  • 微前端框架 qiankun 配置使用【基于 vue/react脚手架创建项目 】
  • nodejs切换淘宝源
  • 怎么避免电脑数据被拷贝?电脑如何禁用USB功能?
  • 给电脑加硬件的办法 先找电脑支持的接口,再买相同接口的
  • uniapp微信小程序_自定义交费逻辑编写
  • 论文阅读——RingMo
  • Hadoop,Hive 数据预处理CR
  • 小程序开发——获取设备信息 API(三)
  • Vue2 + node.js项目
  • 如何使用IDE端通义灵码
  • 微服务分布式springcloud的体育场地预约系统演kdm1z
  • IDEA开启Run Dashboard
  • 小程序学习3 goods-card
  • 【投稿优惠-EI稳定检索】2024年图像处理与机械系统工程国际学术会议 (ICIPMSE 2024)
  • Linux系列
  • SQL笔记 -- 黑马程序员
  • C# MES通信从入门到精通(1)——串口传输文件
  • 论文阅读-federated unlearning via class-discriminative pruning
  • 研发效能DevOps: OpenEuler 部署 drone 持续集成平台