谁能澄清一下,我什么时候应该使用androidx.camera.view.CameraController,什么时候使用androidx.camera.lifecycle.ProcessCameraProvider?两者似乎都能够使用生命周期事件启动/停止相机,处理不同的用例(预览、拍照、图像分析)。两者都可以与androidx.camera.lifecycle.PreviewView一起使用。
发布于 2021-02-18 01:05:17
ProcessCameraProvider是CameraX生命周期工件的一部分。它提供对部分/所有设备摄像头的访问,允许将摄像头的生命周期(打开/关闭时)附加到lifecycleOwner,并具有应用程序进程的范围(它是一个单例)。就如何使用它而言,它是CameraX中的一种低级应用编程接口,在某种意义上说,当你使用它时,你需要初始化它,创建和配置你的用例(即Preview,ImageAnalysis,ImageCapture),将它们绑定到LifecycleOwner,然后如果你愿意,通过访问绑定的摄像头的CameraInfo和CameraControl实例与摄像头进行交互。是的,您可以在此场景中使用PreviewView,但您必须手动将其附加到Preview用例中。
CameraController是CameraX视图工件的一部分,它建立在CameraX提供的核心API之上,提供了一个简单的API,可以轻松地插入到应用程序中并随时可用。CameraX的视图工件主要提供PreviewView和CameraController,后者处理所有相机设置,如果您使用了ProcessCameraProvider等API,则需要手动完成所有设置。此外,CameraController处理设备旋转(以确保其用例以正确的方向接收来自摄像头的帧),并提供所见即所得的体验,确保其用例的输出与PreviewView显示的内容相匹配,并在其连接的PreviewView上处理触摸事件(点击聚焦、按压缩放)。您可以查看this article,看看它开箱即用提供了什么。
您选择使用哪种应用程序接口取决于您的使用需求,CameraController为您提供/处理许多CameraX的核心功能,但在用例配置方面灵活性较差。因此,如果您需要对用例进行更高级的控制(例如设置其分辨率),则可能必须使用ProcessCameraProvider手动设置。
https://stackoverflow.com/questions/66242428
复制相似问题