Версия для графического процессора, Renderer, Vendor в Android

Я хочу найти GPU Vendor, его версию и рендер. Я использовал этот код:-

 renderer = GLES10.glGetString(GL10.GL_RENDERER);           
 vendor = GLES10.glGetString(GL10.GL_VENDOR);
 version = GLES10.glGetString(GL10.GL_VERSION);

работает на Android 4.3 и выше, но когда я запустил этот код на Android 2.3.6, он возвращает ноль.

Тем не менее, проверьте следующий код проверки GPUVersion, который возвращает "2.0" с 2.3.6:-

final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();               
    GPUVersion = configurationInfo.getGlEsVersion();

но все же вышеупомянутые 3 строки возвращают ноль.

Есть ли способ получить вышеуказанную информацию для всех устройств.

1 ответ

Иногда единственный способ получить значение в разных версиях Android - это разделить методы в зависимости от используемой версии. Вы можете сделать что-то вроде:

public static String getGlVersion(Context ctx) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
        ActivityManager am = (ActivityManager) ctx.getSystemService(Context.ACTIVITY_SERVICE);
        ConfigurationInfo configurationInfo = am.getDeviceConfigurationInfo();               
        return configurationInfo.getGlEsVersion();
    } else {
        return GLES10.glGetString(GLES10.GL_VERSION);
    }
}

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

Другие вопросы по тегам