CameraX ProcessCameraProvider vs CameraController - 什么时候使用哪一个?
CameraX ProcessCameraProvider vs CameraController - which one to use when?
有人可以澄清一下,什么时候应该使用 androidx.camera.view.CameraController
什么时候应该使用 androidx.camera.lifecycle.ProcessCameraProvider
?
两者似乎都能够 start/stop 相机使用生命周期事件,处理不同的用例(预览、拍照、图像分析)。两者也适用于 androidx.camera.lifecycle.PreviewView
.
ProcessCameraProvider
是 CameraX 生命周期工件的一部分。它提供对 some/all 设备摄像头的访问,允许将摄像头的生命周期(当它 opens/closes 时)附加到 lifecycleOwner
,并具有应用程序进程的范围(它是单例) .
就其使用方式而言,它是 CameraX 中的低级 API,在某种意义上,当您使用它时,您需要初始化它、创建和配置您的用例(即 Preview
、ImageAnalysis
、ImageCapture
),将它们绑定到 LifecycleOwner
,然后如果您愿意,可以通过访问绑定相机的 CameraInfo
与相机进行交互和 CameraControl
个实例。
是的,您可以在这种情况下使用 PreviewView
,但您必须手动将其附加到 Preview
用例。
CameraController
是 CameraX 视图工件的一部分,它建立在核心 APIs CameraX 提供的基础上,提供一个简单的 API,可以轻松插入应用程序并准备好使用。 CameraX 的视图工件主要提供 PreviewView
和 CameraController
,后者处理所有相机设置,否则如果您使用 API 之类的 ProcessCameraProvider
,则需要手动进行。此外,CameraController
处理设备旋转(以确保其用例以正确的方向从相机接收帧),并提供所见即所得的体验,确保其用例的输出与 PreviewView
显示的相匹配,并在其附加的 PreviewView
上处理触摸事件(点击对焦、捏合缩放)。您可以查看 this article 以了解它开箱即用的功能。
您选择使用哪个API取决于您的使用需求,CameraController
provides/handlesCameraX的许多核心功能都适合您,但在用例配置方面不太灵活。因此,如果您需要对用例进行更高级的控制(例如设置它们的分辨率),您可能必须使用 ProcessCameraProvider
.
手动设置
有人可以澄清一下,什么时候应该使用 androidx.camera.view.CameraController
什么时候应该使用 androidx.camera.lifecycle.ProcessCameraProvider
?
两者似乎都能够 start/stop 相机使用生命周期事件,处理不同的用例(预览、拍照、图像分析)。两者也适用于 androidx.camera.lifecycle.PreviewView
.
ProcessCameraProvider
是 CameraX 生命周期工件的一部分。它提供对 some/all 设备摄像头的访问,允许将摄像头的生命周期(当它 opens/closes 时)附加到 lifecycleOwner
,并具有应用程序进程的范围(它是单例) .
就其使用方式而言,它是 CameraX 中的低级 API,在某种意义上,当您使用它时,您需要初始化它、创建和配置您的用例(即 Preview
、ImageAnalysis
、ImageCapture
),将它们绑定到 LifecycleOwner
,然后如果您愿意,可以通过访问绑定相机的 CameraInfo
与相机进行交互和 CameraControl
个实例。
是的,您可以在这种情况下使用 PreviewView
,但您必须手动将其附加到 Preview
用例。
CameraController
是 CameraX 视图工件的一部分,它建立在核心 APIs CameraX 提供的基础上,提供一个简单的 API,可以轻松插入应用程序并准备好使用。 CameraX 的视图工件主要提供 PreviewView
和 CameraController
,后者处理所有相机设置,否则如果您使用 API 之类的 ProcessCameraProvider
,则需要手动进行。此外,CameraController
处理设备旋转(以确保其用例以正确的方向从相机接收帧),并提供所见即所得的体验,确保其用例的输出与 PreviewView
显示的相匹配,并在其附加的 PreviewView
上处理触摸事件(点击对焦、捏合缩放)。您可以查看 this article 以了解它开箱即用的功能。
您选择使用哪个API取决于您的使用需求,CameraController
provides/handlesCameraX的许多核心功能都适合您,但在用例配置方面不太灵活。因此,如果您需要对用例进行更高级的控制(例如设置它们的分辨率),您可能必须使用 ProcessCameraProvider
.