如何在 PreviewView 准备就绪时获取 CameraX 事件
How to get CameraX event when PreviewView is ready
我正在尝试使用动画实现效果,但只能在预览视图处于活动状态后才能实现。原因之一也是为了避免绑定相机后闪烁。
我已经设法使用反射 (androidx.camera.core.UseCase) 做到了,但在某些设备上,onUseCaseActive 以奇怪的顺序被多次调用。首先处于ACTIVE状态,然后切换到INACTIVE状态,多次调用,最后是ACTIVE状态。
所以我的实际问题是:有什么方法可以获得 CameraX 回调,以便我可以根据相机状态以不同方式管理我的状态?
如果您需要知道相机预览何时首次显示在 PreviewView
上,您可以分别使用 PreviewView.getPreviewStreamState()
, it's a LiveData
instance that emits either STREAMING
or IDLE
预览显示与否。
如文档所述,根据 PreviewView
的实施模式,预览开始时信号的准确性会有所不同。因为 COMPATIBLE
mode, receiving the stream state STREAMING
accurately implies that the preview has started, PERFORMANCE
模式不太准确。
在问题的最后,您将其概括为包括其他 CameraX 用例。因此,对于 ImageAnalysis
,一旦通过其附加的 Analyzer
. As for ImageCapture
, you receive a success/failure callback after taking a picture through one of its capture callbacks OnImageCapturedCallback
and OnImageSavedCallback
.
收到第一个相机帧,您就知道它处于活动状态
我正在尝试使用动画实现效果,但只能在预览视图处于活动状态后才能实现。原因之一也是为了避免绑定相机后闪烁。
我已经设法使用反射 (androidx.camera.core.UseCase) 做到了,但在某些设备上,onUseCaseActive 以奇怪的顺序被多次调用。首先处于ACTIVE状态,然后切换到INACTIVE状态,多次调用,最后是ACTIVE状态。
所以我的实际问题是:有什么方法可以获得 CameraX 回调,以便我可以根据相机状态以不同方式管理我的状态?
如果您需要知道相机预览何时首次显示在 PreviewView
上,您可以分别使用 PreviewView.getPreviewStreamState()
, it's a LiveData
instance that emits either STREAMING
or IDLE
预览显示与否。
如文档所述,根据 PreviewView
的实施模式,预览开始时信号的准确性会有所不同。因为 COMPATIBLE
mode, receiving the stream state STREAMING
accurately implies that the preview has started, PERFORMANCE
模式不太准确。
在问题的最后,您将其概括为包括其他 CameraX 用例。因此,对于 ImageAnalysis
,一旦通过其附加的 Analyzer
. As for ImageCapture
, you receive a success/failure callback after taking a picture through one of its capture callbacks OnImageCapturedCallback
and OnImageSavedCallback
.