android camera2 Api自动闪光不能正常工作,第一张照片是在闪光前拍摄的



我使用camera 2 API,我的项目很大程度上基于谷歌的存档项目:https://github.com/googlearchive/android-Camera2Basic/

我以同样的方式开始预览:

private fun createCameraPreviewSession() {
try {
val texture = textureView.surfaceTexture
// We configure the size of default buffer to be the size of camera preview we want.
texture.setDefaultBufferSize(previewSize.width, previewSize.height)
// This is the output Surface we need to start preview.
val surface = Surface(texture)
// We set up a CaptureRequest.Builder with the output Surface.
previewRequestBuilder = cameraDevice!!.createCaptureRequest(
CameraDevice.TEMPLATE_PREVIEW
)
previewRequestBuilder.addTarget(surface)
// Here, we create a CameraCaptureSession for camera preview.
cameraDevice?.createCaptureSession(Arrays.asList(surface, imageReader?.surface),
object : CameraCaptureSession.StateCallback() {
override fun onConfigured(cameraCaptureSession: CameraCaptureSession) {
// The camera is already closed
if (cameraDevice == null) return
// When the session is ready, we start displaying the preview.
captureSession = cameraCaptureSession
try {
// Auto focus should be continuous for camera preview.
previewRequestBuilder.set(CaptureRequest.CONTROL_AF_MODE,
CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE)
// Flash is automatically enabled when necessary.
setAutoFlash(previewRequestBuilder)
// Finally, we start displaying the camera preview.
previewRequest = previewRequestBuilder.build()
captureSession?.setRepeatingRequest(previewRequest,
captureCallback, backgroundHandler)
} catch (e: CameraAccessException) {
Log.e(TAG, e.toString())
}
}
override fun onConfigureFailed(session: CameraCaptureSession) {
activity.showToast("Failed")
}
}, null)
} catch (e: CameraAccessException) {
Log.e(TAG, e.toString())
}
} 

我正在捕捉图像,运行预捕捉,捕捉静止图像,以与上面项目相同的方式改变状态。然而,在打开应用程序后,第一张带有自动闪光的照片总是在闪光之前拍摄的(它会很暗)。在那一次失败之后拍摄的所有照片都会很好。我试着用所有的状态来改变过程函数,但是不能弄清楚。

camera2basic示例本身是否按预期工作?如果是这样,那么你的代码中就有一些不同的东西需要追踪。如果没有,则可能存在设备特定的错误,这将令人沮丧。

对于预览请求,我会在一开始就仔细检查你是否将闪光模式设置为AUTO,作为一件事。

最新更新