Android Camera2 基础知识 API
Android Camera2 Basics API
我正在阅读有关 Android Camera2 API 的代码:
https://github.com/googlesamples/android-Camera2Basic
previewRequest 构建器仅添加表面,即要显示的 TextureView,作为目标。但下面一行实际上将两者都添加为目标。据我了解,这不应该在预览期间触发 "OnImageAvailable" 监听器,不是吗?那么为什么要在此处添加图像阅读器的表面?
我试图在这里删除这个图像阅读器的表面,但是当我真的想捕捉图像时出现错误......
太混乱了!!!
您需要声明在您创建 CameraCaptureSession
时可能将图像数据发送到的所有输出 Surface
。这就是框架的设计方式。
每当您创建 CaptureRequest
时,您都会添加一个(列表)目标输出 Surface
(s)。这是来自捕获帧的图像数据的位置 - 它可能是 Surface
与 TextureView
相关联用于显示,或与 ImageReader
用于保存,或与 [=17] =] 用于处理等(Surface
实际上只是一个缓冲区,可以获取相机输出的数据。缓冲区关联的对象类型决定了你如何 access/work 处理数据.)
您不必将每一帧的数据发送到所有已注册的 Surface
,但必须将其发送到其中的一个子集。如果 Surface
在创建时未在 CameraCaptureSession
中注册,则无法将 Surface
作为目标添加到 CaptureRequest
。好吧,你可以,但是将它传递给会话会导致崩溃,所以不要。
我正在阅读有关 Android Camera2 API 的代码: https://github.com/googlesamples/android-Camera2Basic
previewRequest 构建器仅添加表面,即要显示的 TextureView,作为目标。但下面一行实际上将两者都添加为目标。据我了解,这不应该在预览期间触发 "OnImageAvailable" 监听器,不是吗?那么为什么要在此处添加图像阅读器的表面?
我试图在这里删除这个图像阅读器的表面,但是当我真的想捕捉图像时出现错误......
太混乱了!!!
您需要声明在您创建 CameraCaptureSession
时可能将图像数据发送到的所有输出 Surface
。这就是框架的设计方式。
每当您创建 CaptureRequest
时,您都会添加一个(列表)目标输出 Surface
(s)。这是来自捕获帧的图像数据的位置 - 它可能是 Surface
与 TextureView
相关联用于显示,或与 ImageReader
用于保存,或与 [=17] =] 用于处理等(Surface
实际上只是一个缓冲区,可以获取相机输出的数据。缓冲区关联的对象类型决定了你如何 access/work 处理数据.)
您不必将每一帧的数据发送到所有已注册的 Surface
,但必须将其发送到其中的一个子集。如果 Surface
在创建时未在 CameraCaptureSession
中注册,则无法将 Surface
作为目标添加到 CaptureRequest
。好吧,你可以,但是将它传递给会话会导致崩溃,所以不要。