从 ndk 写入 Android 显示器

Posted

技术标签:

【中文标题】从 ndk 写入 Android 显示器【英文标题】:Writing to an Android display from ndk 【发布时间】:2015-01-03 22:23:55 【问题描述】:

直接写入帧缓冲区不再有效。无论如何要写入NDK中的显示吗?我可能会使用 ANativeWindow 但这需要一个现有的表面。有没有更好的办法?或者是在本机创建表面然后使用 ANativeWindow 的唯一方法?

【问题讨论】:

【参考方案1】:

显示器归 SurfaceFlinger 和 Hardware Composer 所有,因此除非您打算停止 android 框架,否则您需要处理它们。 (有关详细信息,请参阅graphics architecture doc。)

如果您正在开发一个以“shell”或“root”身份运行的独立命令,并且您不介意使用非公共接口,则可以向 SurfaceFlinger 请求一个窗口并在其上绘制。从 5.0 "Lollipop" 开始,旧的 GLES 测试已更新为以这种方式工作。有关指针,请参阅this answer;旧金山的演示是说明性的。

如果您正在开发一个常规应用程序,您必须创建一个 Surface 并通过 ANativeWindow 渲染到它。不允许常规应用独占访问显示器。

【讨论】:

很好的答案。这回答了我的问题以及我的任何后续问题!

以上是关于从 ndk 写入 Android 显示器的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Android SDK 或 NDK 方法裁剪视频

NDK编译可执行文件在Android 中运行显示error: only position independent executables (PIE) are supported.失败问题解决办法。(示

使用Android NDK将文件写入SDcard以外的位置?

转NDK编译可执行文件在Android L中运行显示error: only position independent executables (PIE) are supported.失败问题解决办(代

使用 Android NDK 通过 openGLES2 渲染视频帧

Android Studio NDK初探