在 CameraX 中使用 CameraCaptureSession.CaptureCallback()
Working with CameraCaptureSession.CaptureCallback() in CameraX
In-Camera 1,我们有FaceDetectionListener
和camera.startFaceDetection()
方法。这样找人脸更容易
在相机 2 中,我们可以使用 CameraCaptureSession.CaptureCallback() 方法和这个静态变量
做同样的事情
Integer mode = result.get(CaptureResult.STATISTICS_FACE_DETECT_MODE);
Face[] faces = result.get(CaptureResult.STATISTICS_FACES);
现在有一个名为 CameraX 的新相机库。它是 Camera2 的包装器,推荐使用。
如果是Camera 2的wrapper,我们很容易得到CameraCaptureSession.CaptureCallback()
的回调结果
但经过 3 天的尝试,我未能找到解决方案。
谁能给我像 camera2 一样调用以下方法的解决方案?
在 Camera2 中,
private val mCaptureCallback = object : CameraCaptureSession.CaptureCallback() {
override fun onCaptureProgressed(
session: CameraCaptureSession,
request: CaptureRequest,
partialResult: CaptureResult
) {
}
override fun onCaptureCompleted(
session: CameraCaptureSession,
request: CaptureRequest,
result: TotalCaptureResult
) {
}
}
mCaptureSession.setRepeatingRequest(mPreviewRequest, mCaptureCallback,
mBackgroundHandler);
如何使用CameraX获取回调结果?
您可以使用 CameraX 的 camera2 interop classes,它在 CameraX 和 Camera2 API 之间提供互操作层。
如果您需要在用例(例如Preview
用例)上设置CaptureCallback
以跟踪其捕获请求的进度,您可以按如下方式进行:
// Set up and configure the Preview's builder
val previewBuilder = Preview.Builder()
// Create the callback you want to attach to the Preview use case
val captureCallback = object : CameraCaptureSession.CaptureCallback() {
...
}
// Create an Extender to attach Camera2 options
val previewExtender = Camera2Interop.Extender(previewBuilder)
// Attach the Camera2 CaptureCallback
previewExtender.setSessionCaptureCallback(captureCallback)
// Initialize the Preview use case
val preview = previewBuilder.build()
// bind the Preview use case
cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, preview)
In-Camera 1,我们有FaceDetectionListener
和camera.startFaceDetection()
方法。这样找人脸更容易
在相机 2 中,我们可以使用 CameraCaptureSession.CaptureCallback() 方法和这个静态变量
做同样的事情Integer mode = result.get(CaptureResult.STATISTICS_FACE_DETECT_MODE);
Face[] faces = result.get(CaptureResult.STATISTICS_FACES);
现在有一个名为 CameraX 的新相机库。它是 Camera2 的包装器,推荐使用。
如果是Camera 2的wrapper,我们很容易得到CameraCaptureSession.CaptureCallback()
但经过 3 天的尝试,我未能找到解决方案。
谁能给我像 camera2 一样调用以下方法的解决方案?
在 Camera2 中,
private val mCaptureCallback = object : CameraCaptureSession.CaptureCallback() {
override fun onCaptureProgressed(
session: CameraCaptureSession,
request: CaptureRequest,
partialResult: CaptureResult
) {
}
override fun onCaptureCompleted(
session: CameraCaptureSession,
request: CaptureRequest,
result: TotalCaptureResult
) {
}
}
mCaptureSession.setRepeatingRequest(mPreviewRequest, mCaptureCallback,
mBackgroundHandler);
如何使用CameraX获取回调结果?
您可以使用 CameraX 的 camera2 interop classes,它在 CameraX 和 Camera2 API 之间提供互操作层。
如果您需要在用例(例如Preview
用例)上设置CaptureCallback
以跟踪其捕获请求的进度,您可以按如下方式进行:
// Set up and configure the Preview's builder
val previewBuilder = Preview.Builder()
// Create the callback you want to attach to the Preview use case
val captureCallback = object : CameraCaptureSession.CaptureCallback() {
...
}
// Create an Extender to attach Camera2 options
val previewExtender = Camera2Interop.Extender(previewBuilder)
// Attach the Camera2 CaptureCallback
previewExtender.setSessionCaptureCallback(captureCallback)
// Initialize the Preview use case
val preview = previewBuilder.build()
// bind the Preview use case
cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, preview)