Android、OpenGLES、CmdLine 工具,获取 MainDisplay 分辨率

2023-11-29

环境

  • 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;
}

EGL 无法访问显示器本身。它从窗口管理器获取一个窗口,然后由 SurfaceFlinger 与其他东西合成。架构描述如下here.

如果您不介意使用非公共 API,并且您以“shell”或“root”身份运行(作为 ADB 命令,您将这样做),您可以执行某些测试代码的操作并查询直接显示 SurfaceFlinger 的属性。看一眼窗面。 (如果您想查看实际代码,可以在附近找到经典的“San Angeles”演示。)WindowSurface 被添加到 Android 5.0“Lollipop”中,取代了试图绕过 SurfaceFlinger 的旧实现(这需要关闭 Android 框架) )。新的实现只是借鉴了正在运行的内容。

The screenrecord工具使用相同的 SurfaceComposerClient API 来确定如何调整视频大小(参见第 540 行)。如果您想要的只是分辨率并且实际上并不关心 EGL,那么这是一个更简单的示例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android、OpenGLES、CmdLine 工具,获取 MainDisplay 分辨率 的相关文章

  • 如何获取之前的碎片?

    为了在我的应用程序中重用某些片段 我需要知道哪个片段是返回堆栈上的第二个片段 为了做到这一点 我正在使用getFragmentManager getFragments 显示以下错误 但有效 FragmentManager getFragme
  • Android 上的 SVG 支持

    Android 支持 SVG 吗 有什么例子吗 最完整的答案是这样的 Android 2 x 默认浏览器本身不支持 SVG Android 3 默认浏览器支持 SVG 要将 SVG 支持添加到 2 x 版本的平台 您有两个基本选择 安装功能
  • 带有一、二和三个按钮的 Android 警报对话框

    我不经常发出警报 但每次发出警报时 我都会花一些时间来阅读文档 https developer android com guide topics ui dialogs html并弄清楚如何去做 由于我现在不得不这样做几次 所以我将在下面写一
  • ffmpeg视频已压缩但无法在浏览器中播放

    我已经集成了ffmpeg4android lib 视频压缩工作正常 但视频无法在除 safari 浏览器之外的浏览器中播放 上传到服务器后 我使用了以下命令 ffmpeg y i
  • 如何在android线性布局上获得阴影? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在android中为View设置阴影 https stackoverflow com questions 4406524 how to set shadow to a view in androi
  • 如何在手机缓存中保存用户名和密码

    我有一个用户登录应用程序 它需要用户的电子邮件和密码 我想将电子邮件和密码保存在手机缓存中 以便用户不必再次输入 有什么办法可以将数据保存在Android缓存中吗 我认为你需要使用SharedPreference用于在设备中使用应用程序时保
  • Camera.open()返回NULL Android开发

    我正在按照构建相机应用程序的教程进行操作http developer android com tools device html http developer android com tools device html我对 Camera o
  • Android 服务是否有办法检测设备何时锁定?

    我有一个 Android 服务 我希望在设备锁定时执行操作 我想澄清一下 我对屏幕开 关状态不感兴趣 我知道如何使用带有 Intent ACTION USER PRESENT 和 KeyguardManager inKeyguardRest
  • Android onChange 事件未在 android 5 (Lollipop) 上的 chrome 历史记录的 contentObserver 中触发

    我注意到我的 chrome 历史记录和书签的 contentObservers 在 android lolipop 上不再触发 该代码在旧版本的 android 上完美运行 无论 chrome 版本如何 但在 Lollipop 上它不再运行
  • Android 应用程序中的 Eszett (ß)

    我的 res layout activity 文件中的德语 字符在我的应用程序中自动转换为 ss 即使我将语言和键盘设置为德语 它仍然不会显示 Android 中可以显示 吗 edit
  • 如何检查 Android 中连接的 wifi 网络是否处于活动状态

    如何自动检查android中连接的WiFi网络上的互联网是否处于活动状态 我可以检查 wifi 是否已启用或 wifi 网络是否已连接 但我不确定如何检查互联网是否已连接 这可能吗 private boolean connectionAva
  • Android Studio:未找到 Gradle DSL 方法:“classpath()”

    首先 我已阅读所有其他解决方案帖子以及有关迁移到 1 0 的官方文档 到目前为止 还没有任何效果 Error Error 23 0 Gradle DSL method not found classpath Possible causes
  • 如何在 Android 模块中使用 FirebaseAuth

    我正在开发一个聊天库 我想在其中显示登录用户的对话 制作该库的原因是我想将其集成到多个项目中 我现在面临的问题是FirebaseAuth表示用户尚未登录 FirebaseAuth getInstance mFirebaseApp getCu
  • 画透明圆,外面填充

    我有一个地图视图 我想在其上画一个圆圈以聚焦于给定区域 但我希望圆圈倒转 也就是说 圆的内部不是被填充 而是透明的 其他所有部分都被填充 请参阅这张图片了解我的意思 http i imgur com zxIMZ png 上半部分显示了我可以
  • Android 相机未保存在特定文件夹 [MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA]

    当我在 Intent 中使用 MediaStore INTENT ACTION STILL IMAGE CAMERA 时遇到问题 相机正常启动 但它不会将文件保存在我的特定文件夹 photo 中 但是当我使用 MediaStore ACTI
  • PhoneStateListener 不调用

    这是我的完整代码 广播示例 java package com example broadcast gt import android app Activity import gt android content Context import
  • 有关 ListView 自定义行布局项目上的 onClick() 事件的帮助

    我有一个 ListView 其行由我格式化 每行都有 ImageView 和 TextView 的混合 我还实现了自己的适配器 并且能够通过它绘制每一行 现在 我想要这样的东西 用户单击 ImageView 不是行上的其他任何位置 但只有此
  • 按钮 - 单击时更改背景颜色

    我的活动中有 8 个按钮 我正在寻找的是 按钮具有默认背景 单击按钮时 背景颜色应更改为其他颜色 这部分非常简单 但是 当我单击任何其他按钮时 第一个按钮的背景颜色应该变回默认颜色 我知道这将使用 选择器状态 来完成 但我不太确定如何实现它
  • Android:RecyclerView 不显示片段中的列表项

    有人可以帮我尝试让我的 RecyclerView 出现吗 如果我不在片段中实现它 就会出现这种情况 然而 当我尝试将其实现到片段中时 CarFront 中的其他 XML 代码与 RecyclerView 分开显示 我的日志中收到此错误 E
  • Android 中循环事件的星期几和时间选择器

    我想创建一个控件 允许用户在我的 Android 活动中选择一周中的某一天 星期一 和一天中的某个时间 下午 1 00 找不到任何关于此的好帖子 好吧 我想我已经明白了 我只是不喜欢这个解决方案 因为我在一周中的某一天使用的微调器与时间选择

随机推荐

  • Qt - 如何在多个平台上保存配置文件

    我正在编写一个 Qt 应用程序 需要将一些设置保存到用户的配置目录中 我想出了以下代码来获取此文件夹 ifdef Q WS WIN path QDir homePath Application Data Timely else path Q
  • excel vba选择表格范围

    我想选择一个表 它将有固定的列 其中 4 个 但可以有任意数量的行 也可以有空行 我将如何选择表格范围 例如 当前选择是B2 to E5 我怎样才能在VBA中以编程方式获得这个 以下是如何设置对表的引用 你应该观看 Excel VBA 简介
  • 基于通配符替换字符串的 SQL 查询

    我想在我的 WP 数据库上运行此类查询以删除 id more 的所有跨度实例 UPDATE wp posts SET post content REPLACE post content p span span p 但在我的示例中 more
  • 如何使用适配器在按钮单击时添加 ListView 项目

    如何获取在 EditText 中输入的数据并通过单击该窗口中的 提交 将其添加到以前的活动列表视图项目中 我需要做的是 创建 EditText 和提交按钮 在同一个 Activity 中创建列表视图 通过单击提交按钮 它应该在列表视图中显示
  • Cobertura 显示正确的覆盖范围,但在声纳中许多文件显示 0% 覆盖范围

    I have write multiple JUnit test classes for my project The code covergae is 80 when I see it in Eclipse using cobertura
  • 执行 sqlalchemy 存在查询

    我无法理解如何执行查询来检查 sqlalchemy 中是否已存在匹配的记录 我可以在网上找到的大多数示例似乎都引用了我没有的 会话 和 查询 对象 这是一个简短的完整程序 说明了我的问题 1 使用 person 表设置内存中的sqlite数
  • 将“Dialog”小部件的宽度设置为 Vaadin 14 中页面的百分比

    在瓦丁 14 中 Dialog当指定宽度和高度时 小部件可以正确打开px CSS 虚拟 像素 Dialog dialog new Dialog dialog setCloseOnEsc true dialog setCloseOnOutsi
  • 在 Yii2 中禁用单个操作的 CSRF 验证

    有没有办法对控制器的某些操作禁用 CSRF 验证 同时对其他操作保持启用状态 就我而言 我有几个可配置的 Action 类 它们旨在注入到控制器中 我无法将 csrf 验证令牌传递到 AJAX 请求中 因为我正在使用的东西是前端的外部 不是
  • NetBeans 7.0 的 Java UML 自动生成 [已关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我需要为我的项目制作 UM
  • Git:仅在将外部分支合并到主分支时防止快进合并

    为了方便查看功能分支何时合并到 master 可以使用 Git 的 no ff将其功能分支合并到主分支时的选项 无需键入即可完成此操作的一种方法 no ff是完全禁用快进合并到 master 中 git config branch mast
  • HTML5画布颜料混合颜色工具

    你好 我需要创建混合颜色工具 我尝试从画布中获取颜色像素getImageData并与我选择的颜色混合并获得平均颜色 我可以轻松获得它 r1 red channel from getImageData g1 green channel fro
  • 从 WP_Query 中排除 WooCommerce 产品类别

    我将以下参数定义为查询的一部分 args apply filters woocommerce related products args array post type gt product author gt artist post st
  • 使用 AutoMapper 的集成测试无法初始化配置

    框架和包 NETCoreApp 1 1 Xunit 2 2 0 AutoMapper 6 0 2 Microsoft AspNetCore TestHost 1 1 1 Microsoft NET Test Sdk 15 0 0 集成测试
  • Android:无法播放mp4视频

    我正在尝试玩mp4 视频流使用本机从服务器视频查看 遗憾的是我不断收到 无法播放视频 error 奇怪的是 同一个视频在 Froyo 上播放得很好 但在 HoneyComb 上却无法播放 我用 MX Video Player 在 HC 上
  • Java邮件性能

    我一直在使用 javamail 从 IMAP 服务器 当前是 GMail 检索邮件 Javamail 非常快地从服务器检索特定文件夹中的消息列表 仅 ID 但当我实际获取消息 仅信封 甚至不包含内容 时 每条消息大约需要 1 到 2 秒 快
  • Oracle 的 Sonarqube Web UI 配置文件管理速度很慢

    在虚拟化环境 生产 上安装带有 Oracle 的 SonarQube 与具有相同发行版的其他安装相比 配置文件管理非常慢 当许多配置文件在此架构 虚拟化 Linux Oracle 上使用时 我将不胜感激有关此功能的响应时间的一些反馈 下面的
  • nextjs POSt API 无法在实时环境中工作,但在本地工作完美

    我最近开始学习使用 Nextjs 构建 Web 应用程序 因此我决定构建一个简单的应用程序来玩弄和学习 我在本地开发 一切都很完美 但是 当我部署到 vercel 时 POST 功能不起作用 该应用程序非常简单 它在主页上显示一些数据 并且
  • 计算大数的方差

    我还没有真正使用过方差计算那么多 而且我不太知道会发生什么 事实上我的数学一点也不好 我有一个包含 1000000 个 0 10000 范围内的随机数值的数组 该数组可能会变得更大 因此我使用 64 位 int 进行求和 我试图找到有关如何
  • ReactJS:[Home] 不是 组件。 的所有子组件都必须是

    单击 开始测验 按钮时 我试图导航到 quiz 但是 当我编译代码时 我在网站应用程序上收到以下错误 Home is not a
  • Android、OpenGLES、CmdLine 工具,获取 MainDisplay 分辨率

    环境 Windows x64 主机 Android 5 0 USB 连接到 Windows 机器 三星盖乐世 5 可视化GDB OpenGL v1 4 ADB CmdLine 工具 gt 本机 C 无 Java Use case 实现一个提