Android get GPU模型

Android get GPU模型,android,opengl-es,android-runtime,android-shell,Android,Opengl Es,Android Runtime,Android Shell,从termial运行以下命令时: adb外壳转储系统| grep GLES 输出为: GLES:Qualcomm、Adreno(TM)330、OpenGL ES 3.0V@53.0金(氯) 但是,当以编程方式运行时,我无法获得输出 String GPUModel = ""; String command = "adb shell dumpsys | grep GLES"; try { InputStream inputStream = Runtime.getRuntime()

从termial运行以下命令时:

adb外壳转储系统| grep GLES

输出为:

GLES:Qualcomm、Adreno(TM)330、OpenGL ES 3.0V@53.0金(氯)

但是,当以编程方式运行时,我无法获得输出

String GPUModel = "";
String command = "adb shell dumpsys | grep GLES";

try {

    InputStream inputStream = Runtime.getRuntime()
                                         .exec(command)
                                         .getInputStream();

    InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
    BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

    GPUModel = bufferedReader.readLine();

} catch (IOException e) {
        e.printStackTrace();
}

GPUModel为空。

您无法从应用程序运行
dumpsys
命令。它需要转储权限,只有系统应用程序和使用与系统相同的密钥签名的应用程序才会被授予此权限。

您应该使用
glGetString
获取GPU类型:

String renderer = GLES20.glGetString(GLES20.GL_RENDERER);
但是,如果您需要检查GPU的某些功能,最好不要检查GPU名称,而是检查是否有必要的GL扩展可用。通过请求
GL\u扩展名
,您可以检索所有这些文件:

String extensions = GLES20.glGetString(GLES20.GL_EXTENSIONS);

命令
GLES20.glGetString(GLES20.glu渲染器)中删除
adb shell
-->它还返回空字符串返回空字符串