В чем разница между Display.HdrCapabilities и configuration.isScreenHdr - PullRequest
1 голос
/ 05 марта 2020

Я хочу узнать о возможностях HDR на Android, поэтому я пишу следующий код, чтобы проверить это:

        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);

На моем телефоне Pixel2 результат будет

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

1 Ответ

0 голосов
/ 02 апреля 2020

Вы создали неверную конфигурацию: Configuration(); и передали ее в объект конфигурации. Чтобы решить эту проблему, замените:

Configuration configuration = new Configuration();

на:

Configuration configuration = getResources().getConfiguration();

При проверке HDR и поддержки широкой цветовой гаммы вы хотите, чтобы конфигурация устройства не была пустым конструктором. Таким образом, имеет смысл использовать последний код.
Ссылка: https://developer.android.com/reference/android/content/res/Configuration

Этот класс описывает всю информацию о конфигурации устройства, которая может повлиять на ресурсы, которые получает приложение. Это включает в себя как заданные пользователем параметры конфигурации (список языковых стандартов и масштабирование), так и конфигурации устройства (например, режимы ввода, размер экрана и ориентацию экрана).

Этот объект можно получить из ресурсов, используя Resources # getConfiguration. , Таким образом, из действия вы можете получить его, связав запрос с ContextThemeWrapper.getResources ():

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...