我想了解 Android 上的 HDR 功能,因此我编写了以下代码来检查这一点。
Display display = getWindowManager().getDefaultDisplay();
Display.HdrCapabilities hdrCapabilities = display.getHdrCapabilities();
int[] types = hdrCapabilities.getSupportedHdrTypes();
for (int i=0; i<types.length; i++) {
Log.d(TAG, "Support HDR TYPE " + types[i]);
}
float maxAverage = hdrCapabilities.getDesiredMaxAverageLuminance();
float maxLum = hdrCapabilities.getDesiredMaxLuminance();
float minLum = hdrCapabilities.getDesiredMinLuminance();
Log.d(TAG, "Max Average " + maxAverage + " maxLum " + maxLum + " minLum " + minLum);
Configuration configuration = new Configuration();
boolean isWideColor = configuration.isScreenWideColorGamut();
boolean isHDR = configuration.isScreenHdr();
Log.d(TAG,"Configuration wide color " + isWideColor + " hdr " + isHDR);
在我的 Pixel 2 手机上,结果是
Support HDR TYPE 2 //HDR_TYPE_HDR10
Support HDR TYPE 3 //HDR_TYPE_HLG
Max Average 500.0 maxLum 500.0 minLum 0.0
Configuration wide color false hdr false
我对此感到困惑,我知道Pixel2实际上可以播放HDR10内容,但为什么配置说它不支持HDR和广色域。
参考:https://source.android.com/devices/tech/display/hdr
https://source.android.com/compatibility/android-cdd
您构建了无效的配置:Configuration();
并将其传递给 Configuration 对象。要解决这个问题,请替换:
Configuration configuration = new Configuration();
with :
Configuration configuration = getResources().getConfiguration();
检查 HDR 和广色域支持时,您希望设备的配置不是空的构造函数。因此,使用后一个代码是有意义的。
参考:https://developer.android.com/reference/android/content/res/Configuration
此类描述了可能影响应用程序检索的资源的所有设备配置信息。这包括用户指定的配置选项(区域设置列表和缩放)以及设备配置(例如输入模式、屏幕尺寸和屏幕方向)。
您可以使用 Resources#getConfiguration 从资源中获取此对象。因此,从活动中,您可以通过将请求与 ContextThemeWrapper.getResources() 链接来获取它:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)