搜索

430

主题

515

帖子

2106

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2106
QQ
发表于 2020-9-28 12:28:30 3046 浏览 0 回复

Android系统获取GPU、屏幕信息--源码app

本帖最后由 tangh 于 2020-9-28 20:02 编辑

github源码下载路径:
https://github.com/sufadi/AndroidCpuTools

1.GPU 电压和频率

  1. <div>C:\Users\fadi.su>adb shell cat /proc/gpufreq/gpufreq_opp_dump
  2. [0] freq = 450000, volt = 115000, idx = 0
  3. [1] freq = 400000, volt = 111875, idx = 1
  4. [2] freq = 350000, volt = 108750, idx = 2
  5. [3] freq = 290000, volt = 105000, idx = 3

  6.     public static List<String> getGpuFreqVolt() {
  7.         List<String> result = new ArrayList<>();

  8.         try {
  9.             String line;
  10.             BufferedReader br = new BufferedReader(new FileReader("/proc/gpufreq/gpufreq_opp_dump"));
  11.             while ((line = br.readLine()) != null) {
  12.                 result.add(line);
  13.             }
  14.             br.close();
  15.         } catch (IOException e) {
  16.             e.printStackTrace();
  17.         }

  18.         return result;
  19.     }
  20. </div>
复制代码
2.GPU 供应商和版本信息
  1.         final RendererUtil mRendererUtil = new RendererUtil();
  2.         GLSurfaceView mGLSurfaceView = (GLSurfaceView) mView.findViewById(R.id.surfaceView);
  3.         mGLSurfaceView.setEGLContextClientVersion(1);
  4.         mGLSurfaceView.setEGLConfigChooser(8, 8, 8, 8, 0, 0);
  5.         mGLSurfaceView.setRenderer(mRendererUtil);
  6.         mGLSurfaceView.post(new Runnable() {
  7.             @Override
  8.             public void run() {
  9.                 result.add(getString(R.string.gl_vendor) + mRendererUtil.gl_vendor);
  10.                 result.add(getString(R.string.gl_renderer) + mRendererUtil.gl_renderer);
  11.                 result.add(getString(R.string.gl_version) + mRendererUtil.gl_version);
  12.                 result.add(getString(R.string.gl_extensions) + mRendererUtil.gl_extensions);
  13.                 mHandler.sendEmptyMessage(UPDATE_UI);
  14.             }
  15.         });

  16. package com.fadisu.cpurun.util;

  17. import android.opengl.GLSurfaceView;
  18. import android.util.Log;

  19. import javax.microedition.khronos.egl.EGLConfig;
  20. import javax.microedition.khronos.opengles.GL10;

  21. public class RendererUtil implements GLSurfaceView.Renderer {

  22.     //GPU 渲染器
  23.     public String gl_renderer;

  24.     //GPU 供应商
  25.     public String gl_vendor;

  26.     //GPU 版本
  27.     public String gl_version;

  28.     //GPU  扩展名
  29.     public String gl_extensions;

  30.     @Override
  31.     public void onSurfaceCreated(GL10 gl, EGLConfig eglConfig) {
  32.         gl_renderer = gl.glGetString(GL10.GL_RENDERER);
  33.         gl_vendor = gl.glGetString(GL10.GL_VENDOR);
  34.         gl_version = gl.glGetString(GL10.GL_VERSION);
  35.         gl_extensions = gl.glGetString(GL10.GL_EXTENSIONS);
  36.         Log.d("suhuazhi", "onSurfaceCreated = " + gl_renderer);
  37.     }

  38.     @Override
  39.     public void onSurfaceChanged(GL10 gl10, int i, int i1) {

  40.     }

  41.     @Override
  42.     public void onDrawFrame(GL10 gl10) {

  43.     }
  44. }
复制代码
3.GPU 获取屏幕
  1. public class ScreenInfo {

  2.     // 英寸
  3.     public double size;

  4.     public String sizeStr;

  5.     // 高
  6.     public int heightPixels;

  7.     // 宽
  8.     public int widthPixels;

  9.     public String screenRealMetrics;

  10.     // 显示器的逻辑密度
  11.     public float density;

  12.     // 屏幕密度为点每英寸
  13.     public int densityDpi;

  14.     public String densityDpiStr;

  15.     // 显示在显示器的字体的定标因子
  16.     public float scaledDensity;

  17.     // 每在 X 维屏幕英寸的确切物理像素
  18.     public float xdpi;

  19.     // 每在 Y 维屏幕英寸的确切物理像素
  20.     public float ydpi;

  21.     //在屏幕中显示的参考密度
  22.     public int density_default;

  23.     @Override
  24.     public String toString() {
  25.         return "ScreenInfo{" +
  26.                 "size=" + size +
  27.                 ", sizeStr='" + sizeStr + '\'' +
  28.                 ", heightPixels=" + heightPixels +
  29.                 ", screenRealMetrics='" + screenRealMetrics + '\'' +
  30.                 ", widthPixels=" + widthPixels +
  31.                 ", density=" + density +
  32.                 ", densityDpi=" + densityDpi +
  33.                 ", densityDpiStr='" + densityDpiStr + '\'' +
  34.                 ", scaledDensity=" + scaledDensity +
  35.                 ", xdpi=" + xdpi +
  36.                 ", ydpi=" + ydpi +
  37.                 ", density_default=" + density_default +
  38.                 '}';
  39.     }
  40. }

  41.    /**
  42.      * 屏幕分辨率
  43.      *
  44.      * @param mContext
  45.      * @return
  46.      */
  47.     public static ScreenInfo getScreenInfo(Context mContext) {
  48.         ScreenInfo result = new ScreenInfo();
  49.         int widthPixels;
  50.         int heightPixels;

  51.         WindowManager w = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);

  52.         Display d = w.getDefaultDisplay();
  53.         DisplayMetrics metrics = new DisplayMetrics();
  54.         d.getMetrics(metrics);
  55.         // since SDK_INT = 1;
  56.         widthPixels = metrics.widthPixels;
  57.         heightPixels = metrics.heightPixels;
  58.         // includes window decorations (statusbar bar/menu bar)
  59.         if (Build.VERSION.SDK_INT >= 14 && Build.VERSION.SDK_INT < 17) {
  60.             try {
  61.                 widthPixels = (Integer) Display.class.getMethod("getRawWidth").invoke(d);
  62.                 heightPixels = (Integer) Display.class.getMethod("getRawHeight").invoke(d);
  63.             } catch (Exception ignored) {
  64.                 ignored.printStackTrace();
  65.             }
  66.         }
  67.         // includes window decorations (statusbar bar/menu bar)
  68.         if (Build.VERSION.SDK_INT >= 17) {
  69.             try {
  70.                 Point realSize = new Point();
  71.                 Display.class.getMethod("getRealSize", Point.class).invoke(d, realSize);
  72.                 widthPixels = realSize.x;
  73.                 heightPixels = realSize.y;
  74.             } catch (Exception ignored) {
  75.                 ignored.printStackTrace();
  76.             }
  77.         }

  78.         result.widthPixels = widthPixels;
  79.         result.heightPixels = heightPixels;
  80.         result.screenRealMetrics = widthPixels + " X " + heightPixels;
  81.         result.density = metrics.density;
  82.         result.density_default = metrics.DENSITY_DEFAULT;
  83.         result.densityDpi = metrics.densityDpi;
  84.         result.densityDpiStr = metrics.densityDpi + " dpi";
  85.         result.scaledDensity = metrics.scaledDensity;
  86.         result.xdpi = metrics.xdpi;
  87.         result.ydpi = metrics.ydpi;
  88.         result.size = (Math.sqrt(Math.pow(widthPixels, 2) + Math.pow(heightPixels, 2)) / metrics.densityDpi);
  89.         result.sizeStr = String.format("%.2f", result.size) + mContext.getResources().getString(R.string.sys_inches_unit);

  90.         return result;
  91.     }
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
手机微信同号:13682654092
回复

使用道具 举报

返回列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


登录或注册
快速回复 返回顶部 返回列表