首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Android上使用框架缓冲区绘制?

如何在Android上使用框架缓冲区绘制?
EN

Stack Overflow用户
提问于 2014-01-25 01:13:14
回答 1查看 6.3K关注 0票数 9

我想为Android编写一个应用程序,它使用框架缓冲区在屏幕上显示内容。这将只在特定的根设备上运行,因此权限等不是问题。同样的应用程序(反正是简单的测试版本)已经在PC/Linux上正常运行了。

问题如下:

  1. 如何避免Android操作系统访问框架缓冲区?我希望,在我的应用程序运行时,操作系统永远不会触及框架缓冲区,没有写,也没有ioctls。我需要做什么才能获得框架缓冲区的独占使用,然后(当我的应用程序退出时)将它返回给操作系统?
  2. Android框架缓冲区和Linux框架缓冲区之间有什么不同值得注意吗?

我想把我的应用程序作为一个常规的Android应用程序(带有一些本机代码)启动,它只是没有可见的UI,除了框架缓冲区绘图,它占据了整个屏幕。如果仍然能够从操作系统中获得事件,那就太好了。

另见:drivers.html

EN

回答 1

Stack Overflow用户

发布于 2014-02-18 04:39:18

嗨,亚历克斯不知道为什么/如何阻止android操作系统写到框架缓冲区。只要您的android应用程序是可见的,并且在顶部,您就可以将控件作为您想要显示的内容。

您的应用程序应该有一个带有SurfaceView的活动(您可能希望应用程序隐藏通知栏,在活动的创建中调用此函数) requestWindowFeature(Window.FEATURE_NO_TITLE); )

您的活动应该有SurfaceHolder.Callback实现来处理回调,就像图面准备好填充框架缓冲区一样。获取表面持卡器对象为SurfaceView.getHolder(),以便设置视图的像素格式等。

一旦调用了"surfaceCreated“回调,您就可以安全地将表面视图对象(传递宽度和高度可能也是一个好主意)传递给本机,以便使用"ANativeWindow”类填充它。

检查NDK示例代码以了解如何使用类NDK documentation

SurfaceHolder.Callback documentation

SurfaceHolder documentation

本质上,您需要这些(在JB /Kitkat上)

  1. 获取与ANativeWindow_fromSurface的表面视图相关联的本机窗口(ANativeWindow_fromSurface)。
  2. 通过ANativeWindow通过ANativeWindow_acquire获取一个锁。
  3. ANativeWindow_setBuffersGeometry设置本地窗口的几何参数(窗口、宽度、高度、pf)
  4. 使用存储的框架缓冲区(如果这里有脏矩形)通过ANativeWindow_lock加载本地窗口
  5. 解锁和发布用于ANativeWindow_unlockAndPost呈现的更改的最后一步

如果您需要示例代码,请阅读ndk示例示例。NDK documentation

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21348715

复制
相关文章
【Android FFMPEG 开发】FFMPEG ANativeWindow 原生绘制 ( 设置 ANativeWindow 缓冲区属性 | 获取绘制缓冲区 | 填充数据到缓冲区 | 启动绘制 )
① FFMPEG 初始化 : 参考博客 【Android FFMPEG 开发】FFMPEG 初始化 ( 网络初始化 | 打开音视频 | 查找音视频流 )
韩曙亮
2023/03/27
1K0
Mediapipe框架在Android上的使用
ObjectDetection子图仅在请求时运行,例如以任意帧速率或由特定信号触发。更具体地讲,在将视频帧传递到ObjectDetection之前,本示例中的PacketResampler将它们暂时采样为0.5 fps。你可以在PacketResampler中将这一选项配置为不同的帧速率。正是因为如此,在识别的时候可以时间抖动更少,而且可以跨帧维护对象ID。
夜雨飘零
2021/11/15
3.1K0
Mediapipe框架在Android上的使用
Mediapipe框架在Android上的使用
MediaPipe是用于构建跨平台多模态应用ML管道的框架,其包括快速ML推理,经典计算机视觉和媒体内容处理(如视频解码)。下面是用于对象检测与追踪的MediaPipe示例图,它由4个计算节点组成:PacketResampler计算器;先前发布的ObjectDetection子图;围绕上述BoxTrakcing子图的ObjectTracking子图;以及绘制可视化效果的Renderer子图。
夜雨飘零
2020/07/08
9.8K3
Mediapipe框架在Android上的使用
如何在Ubuntu上使用Nginx web框架OpenResty
OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。OpenResty® 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。 OpenResty® 的目标是让你的Web服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。
林岑影
2018/08/07
1.6K1
如何在Ubuntu上构建Android ROM
Android是当今世界上最流行的操作系统。数以百计的不同设备制造商选择将其安装在他们的设备上,因为它是免费的开源的,并且围绕它构建了大量的应用程序和服务生态系统。但是,许多厂商为了利益,很少会持续升级您的系统版本,迫使您购买新的设备以提升体验。同时,厂商也会使用制定系统,包含很多您用不到的软件,为了体验最新原生安卓系统,您可以尝试自行编译Android ROM。在Androidmodding社区中,此类固件通常称为ROM,即只读内存的缩写。
八十岁的背影
2018/08/08
2.5K0
如何在CDSW中使用R绘制直方图
Cloudera的新产品CDSW(Cloudera Data Science Workbench)集成了R、Scala、Python2、Python3等语言进行统计和数据分析。本文档主要讲述如何在CDSW中使用R语言绘制直方图和饼图,并使用Hive数仓作为数据源。
Fayson
2018/03/29
3.4K0
如何在CDSW中使用R绘制直方图
如何在Debian上使用Cachet
如果有多个业务系统对外提供服务,那么一个状态展示系统可以为客户提供直观的服务状态展示。当出现系统故障或安排更新计划时可以为客户提供一个信息公开的平台,以便作出相应的准备。 经过寻找后,我决定使用一款名为Cachet的开源软件,它支持部署在Linux、Windows与Docker环境中。
朝朝
2018/08/09
2.3K0
如何在ios成功上架android tv?​
如果你是新手,将在这里清晰发布到App Store整个上架流程,还有相应的流程解决方案。​
iOS程序应用
2022/12/06
3010
如何在mac本上安装android sdk
众所周知的原因,google的很多网站在国内无法访问,苦逼了一堆天朝程序员,下是在mac本上折腾android 开发环境的过程: 一、先下载android sdk for mac 给二个靠谱的网址: a). http://down.tech.sina.com.cn/page/45703.html b). http://mac.softpedia.com/get/Developer-Tools/Google-Android-SDK.shtml 到这个面下载后,解压到某个目录 二、设置下载的代理服务器 命令行进
菩提树下的杨过
2018/01/19
2K0
如何在mac本上安装android sdk
如何在Debian 8上安装Django Web框架
Django是一个功能齐全的Python Web框架,用于开发动态网站和应用程序。使用Django,您可以快速创建Python Web应用程序,并依靠该框架来完成繁重的工作。
圣人惠好可爱
2018/08/03
2.4K0
DBUtils框架的使用(上)
昨天做了这么多的铺垫,当然就是为了引出今天的DBUtils框架了,它的实现原理跟我们编写的简易框架是类似的。 话不多说,进入正题。 commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能。因此dbutils成为很多不喜欢hibernate的公司的首选。
wangweijun
2020/02/14
5870
如何在 Linux 上使用 Apt 命令
apt是一个命令行工具,它用来安装,升级,移除和类似的管理操作 deb 软件包,它存在于 Ubuntu, Debian, 和相关 Linux 发行版中。它将经常使用的apt-get和apt-cache工具聚合在一起,并给一些选项设置默认值。
雪梦科技
2020/05/11
2.7K0
如何在 Linux 上使用 Apt 命令
如何在Ubuntu上安装使用Docker
在本教程中,您将安装Docker,并学会使用容器和镜像,将镜像推送到Docker存储库。
GeekZ
2018/07/27
42.6K0
如何在Ubuntu上安装使用Docker
如何在HUE上使用Spark Notebook
打开hue.ini文件,找到【yarn_clusters】【default】,修改spark_history_server_url值。
create17
2019/03/12
3.9K0
如何在windows 7 上使用docker
但是我们可以通过安装docker toolbox来实现在windows7上使用docker.
Vincent-yuan
2019/10/15
2K0
如何在Mac上轻松使用SVN
大家都知道,在Mac或Linux环境下使用git比较方便,但有时候根剧项目要求又不得不使用SVN,在windows系统上面有我们最为熟悉的小乌龟(TortoiseSVN,下载链接:https://tortoisesvn.net/downloads.zh.html)在mac系统上面则很少svn的工具,本文就带大家对比Git,介绍如何在Mac上轻松使用命令行进行操作SVN,同时提升开发人员的格调。
码农编程进阶笔记
2022/08/18
4.6K0
如何在Mac上轻松使用SVN
点击加载更多

相似问题

图像背景,如使用android可绘制xml的框架

11

如何在Android中使用opengl es绘制yuv缓冲区

11

如何在android中位图图像上绘制字母表(如ABC..)

10

访问Android上默认框架缓冲区的内存

24

如何在matplotlib图形上绘制框架

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文