环境
- Windows (x64) 主机
- Android 5.0 USB 连接到 Windows 机器
- 三星盖乐世 5
- 可视化GDB
- OpenGL (v1.4)
- ADB CmdLine 工具 => 本机 C++(无 Java)
Use-case
实现一个提取主显示分辨率的 ADB 命令行工具(这是工具功能的一部分)
下面的代码打印乱码数据, 如何使用作为 ADB 命令行工具运行的 Native C++ 代码获取主显示分辨率?
代码片段
HRESULT GetMainDisplayResolution(OUT SIZE& sz) {
EGLConfig pConfigs[MAX_CONFIGS] = { 0 };
EGLint iErr = 0;
EGLDisplay display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
if (0 == display)
return E_FAIL;
int maj, min;
if (FALSE == eglInitialize(display, &maj, &min)) {
iErr = eglGetError();
return E_FAIL;
}
EGLint iCfgCount = 0;
if (FALSE == eglGetConfigs(display, pConfigs, MAX_CONFIGS, &iCfgCount)) {
iErr = eglGetError();// EGL_NOT_INITIALIZED
return E_FAIL;
}
for (int i = 0; i < iCfgCount; i++) {
eglGetConfigAttrib(display, pConfigs[i], EGL_HORIZONTAL_RESOLUTION, (EGLint*)&sz.cx);
eglGetConfigAttrib(display, pConfigs[i], EGL_VERTICAL_RESOLUTION, (EGLint*)&sz.cy);
printf("Cfg %i, x:%i, y:%i", i, sz.cx, sz.cy);
}
return S_OK;
}