持续捕捉Android屏幕以便在应用中处理

前端之家收集整理的这篇文章主要介绍了持续捕捉Android屏幕以便在应用中处理前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要一个实时流或某种方法来查看屏幕上当前显示内容.
我不想将屏幕截图保存到文件,或录制视频等.
我不想将屏幕流式传输到另一台设备(我不想尝试截屏/ mirracast),我需要 Android应用程序本地的屏幕内容.

我为什么需要那个?

我想编写一个Android应用程序来管理一个lightpack,通过调整灯光到Android设备上显示内容.

>要求root是好的(我希望root是必需的).
>也需要额外的低级别二进制文件.
>图像的质量不必像屏幕上那样精确,要低得多
决议仍然可以接受

如果你说不能这样做,你就错了.如果您下载适用于Android的Prismatik应用程序,您将看到我想要的确切内容,它会在抓取屏幕时屏幕抓取并管理我的lightpack而不会出现任何性能问题.我只想创建自己的类似的应用程序,除了我将它作为一个开源的GitHub项目…

编辑:我认为使用/ dev / graphics / fb0可能是答案的一部分.我不知道如何使用它的性能.

解决方法

我找到了自己问题的答案.

Android(linux也是)有一个帧缓冲文件(Android上的/ dev / graphics / fb0),你可以读取它包含整个屏幕内容的当前帧缓冲区.在大多数情况下,它实际上包含2帧用于双缓冲…当屏幕上的内容发生变化时,这个文件会不断变化(对于我想要用它的东西,它很好,我不需要对< ;毫秒内容,我只需要知道屏幕上显示的颜色是什么 此文件包含RAW格式的图形.在我的Galaxy S3上它每像素包含4bytes.
如果您需要知道应该读取多少字节来获取当前屏幕(仅1帧),您需要进行数学运算.我的屏幕是720×1280像素.

因此我需要阅读:

720 x 1280像素= 921,600像素

921,600像素*每像素4字节= 3,686,400字节

从中您可以提取每个颜色通道,并进行所需的计算.
读取数据的方法取决于您自己.您可以编写本机代码来读取缓冲区并进行操作.
或者您可以使用输入流从Android代码中读取缓冲区.

根据设备上加载的ROM,您可能需要root才能访问此文件(大多数情况下您需要root)

猜你在找的Android相关文章