如何在 Android 中冻结 CameraX 预览?

Amr*_*rit 0 android android-camerax

我希望相机在按下图像捕获按钮时冻结预览。我看过其他堆栈溢出问题,但它们已经过时了。

我使用的cameraX版本:1.0.0-beta03

任何帮助将不胜感激。谢谢

Hus*_*eem 6

目前还没有“正确”的方法来做到这一点,但有几种实现它的方法包括:

  • 通过解除用例绑定来停止预览流Preview,拍照,然后绑定 Preview用例以继续预览流。为了使这种方法发挥作用,您还需要绑定一个ImageAnalysis用例,因为ImageCapture如果它是唯一绑定的用例,则无法拍照(另一个PreviewImageAnalysis用例也必须绑定,请查看有关可能用途的官方文档案例组合)。虽然这种方法有效,但它会导致调用回调和继续预览之间存在轻微延迟ImageCapture,在此期间屏幕将为空白。

  • 当您拍照时,使用最新的帧将ImageAnalysis其显示在预览顶部,您可以将帧 - 这是一个ImageProxy- 转换为 aBitmap并将其显示在ImageView. 调用回调后ImageCapture,删除框架并继续预览。

编辑:

从camera-view版本1.0.0-alpha12开始,您可以Bitmap使用 获取预览的表示PreviewView.getBitmap()。使用此方法,您可以获取Bitmap用户拍照时预览的表示,将其显示在预览的顶部ImageView,然后在图像捕获结果可用时隐藏图像。