Redmi k60pro(8gen2)UE获取设备分辨率不对

Redmi k60pro(8gen2)UE获取设备分辨率不对。引擎UE5.5.4随便打个包,安卓配置上开启dpi设置,比如Android.WindowDPI=350,然后打包,用对应的设备进入游戏后,可以看到如下日志

[2025.12.15-03.58.12:995][ 0]LogAndroid: Mobile HDR: YES

[2025.12.15-03.58.12:996][ 0]LogAndroid: Display: AndroidDisplayInfoFromDPITargets : DPI info: DensityDPI 420, dpi 526, xdpi 526, ydpi 526

[2025.12.15-03.58.12:996][ 0]LogAndroid: Display: AndroidDisplayInfoFromDPITargets : Native screen dpi 526, res 2400 x 1080

[2025.12.15-03.58.12:996][ 0]LogAndroid: Display: AndroidDisplayInfoFromDPITargets : New DPI target 350, window dims 1592, 712

[2025.12.15-03.58.12:996][ 0]LogAndroid: ***** Cached WindowRect 1592, 712 (0)

但是这个设备的实际分辨率是3200x1440​,目前暂时发现这台手机会出现这种问题。

备注:这台手机设备的信息如下:

------------RE GLES------------

GLES: Qualcomm, Adreno ™ 740, OpenGL ES 3.2 V[Content removed] 1693222181) (Date:08/28/23)

[Attachment Removed]

重现步骤
Redmi k60pro(8gen2)UE获取设备分辨率不对。引擎UE5.5.4随便打个包,安卓配置上开启dpi设置,比如Android.WindowDPI=350,然后打包,用对应的设备进入游戏后,可以看到如下日志

[2025.12.15-03.58.12:995][ 0]LogAndroid: Mobile HDR: YES

[2025.12.15-03.58.12:996][ 0]LogAndroid: Display: AndroidDisplayInfoFromDPITargets : DPI info: DensityDPI 420, dpi 526, xdpi 526, ydpi 526

[2025.12.15-03.58.12:996][ 0]LogAndroid: Display: AndroidDisplayInfoFromDPITargets : Native screen dpi 526, res 2400 x 1080

[2025.12.15-03.58.12:996][ 0]LogAndroid: Display: AndroidDisplayInfoFromDPITargets : New DPI target 350, window dims 1592, 712

[2025.12.15-03.58.12:996][ 0]LogAndroid: ***** Cached WindowRect 1592, 712 (0)

但是这个设备的实际分辨率是3200x1440​,目前暂时发现这台手机会出现这种问题。

备注:这台手机设备的信息如下:

------------RE GLES------------

GLES: Qualcomm, Adreno ™ 740, OpenGL ES 3.2 V[Content removed] 1693222181) (Date:08/28/23)

[Attachment Removed]

Hi,

我暂时没有相同的设备做测试,数值应该是从Android系统里读出来的,不确定是不是android系统接口有什么问题,可以试试换一种方式获取

你可以在引擎的GameActivityTemplate.java里做类似下面的操作

  1. 在文件开始 import android.hardware.display.DisplayManager;
  2. 申明一个DisplayManager的类型displayManager,类似已有的 private InputManager inputManager;
  3. 初始化displayManager = (DisplayManager) getSystemService(Context.DISPLAY_SERVICE);
  4. 在 private Display GetDefaultDisplay() 函数里,用displayManager.getDisplay(Display.DEFAULT_DISPLAY) 替换原来的getDisplay()

然后再测试一下。

[Attachment Removed]