Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从ImageReader android获取InputStream_Java_Android_Surfaceview_File Descriptor_Fileinputstream - Fatal编程技术网

Java 如何从ImageReader android获取InputStream

Java 如何从ImageReader android获取InputStream,java,android,surfaceview,file-descriptor,fileinputstream,Java,Android,Surfaceview,File Descriptor,Fileinputstream,我在看这门课: 我想要的是从ImageReader类中获取InputStream,并获取正在渲染到当前曲面中的图像数据。“当前曲面”表示当前显示的android屏幕。 我查看了AOSP代码中的一个示例,但它确实很难理解。 如果有人给我提供一个ImageReader类的好例子,那将非常有帮助。听起来你好像在试图使用ImageReader从任意曲面中提取数据。这样不行 ImageReader是一个缓冲队列“CPU消费者”,这是一种奇特的说法,表示当您将数据发送到其表面时,CPU上运行的代码可以直接检

我在看这门课:

我想要的是从ImageReader类中获取InputStream,并获取正在渲染到当前曲面中的图像数据。“当前曲面”表示当前显示的android屏幕。 我查看了AOSP代码中的一个示例,但它确实很难理解。
如果有人给我提供一个ImageReader类的好例子,那将非常有帮助。

听起来你好像在试图使用
ImageReader
从任意
曲面中提取数据。这样不行

ImageReader
是一个缓冲队列“CPU消费者”,这是一种奇特的说法,表示当您将数据发送到其
表面时,CPU上运行的代码可以直接检查数据。并非所有曲面都可以这样处理——使用标志在创建曲面时设置——因此您需要使用
ImageReader#getSurface()
创建
曲面
,然后将其传递给希望向
曲面
发送数据的对象

如文档所述,“几个Android媒体API类接受曲面对象作为渲染目标,包括MediaPlayer、MediaCodec和RenderScript分配。”

ImageReader
的主要客户是您链接到的CTS测试中演示的摄像头。由于输出格式与摄像头不同(其中一些是专有的),因此它还不能真正与
MediaCodec
解码器配合使用

虚拟显示测试更接近您想要的,因为您可以将虚拟显示的输出定向到
曲面
。对于具有正常权限的应用程序,您只能将自己的应用程序输出发送到该应用程序。Android 4.4“screenrecord”命令也做了类似的事情


(如果你想记录你在
表面视图
上绘制的内容,并且你正在使用OpenGL进行渲染,有一些替代方案可以演示和演示。)

听起来好像你在试图使用
图像阅读器
从任意
表面
中提取数据。这样不行

ImageReader
是一个缓冲队列“CPU消费者”,这是一种奇特的说法,表示当您将数据发送到其
表面时,CPU上运行的代码可以直接检查数据。并非所有曲面都可以这样处理——使用标志在创建曲面时设置——因此您需要使用
ImageReader#getSurface()
创建
曲面
,然后将其传递给希望向
曲面
发送数据的对象

如文档所述,“几个Android媒体API类接受曲面对象作为渲染目标,包括MediaPlayer、MediaCodec和RenderScript分配。”

ImageReader
的主要客户是您链接到的CTS测试中演示的摄像头。由于输出格式与摄像头不同(其中一些是专有的),因此它还不能真正与
MediaCodec
解码器配合使用

虚拟显示测试更接近您想要的,因为您可以将虚拟显示的输出定向到
曲面
。对于具有正常权限的应用程序,您只能将自己的应用程序输出发送到该应用程序。Android 4.4“screenrecord”命令也做了类似的事情


(如果您想在
SurfaceView
上记录您正在绘制的内容,并且您正在使用OpenGL进行渲染,那么有一些替代方案可以演示和演示。)

看看这个线程,文档中说使用
acquireLatestImage()
获取图像的方法。@mohammedmomn感谢您的回复,但我需要使用android.media。ImageReader@DevZer0但我不知道如何设置表面。我想要当前屏幕上显示的图像。你能显示一些你正在做的代码吗?你有要使用的ImageReader的实例吗?看看这个线程文档上说的使用
acquireLatestImage()
获取图像的方法。@mohammedmomn感谢您的回复,但我需要使用android.media。ImageReader@DevZer0但我不知道如何设置表面。我想要当前屏幕上显示的图像。你能显示一些你正在做的代码吗?你有你想要使用的ImageReader的实例吗?