set AutoFocus to Idle instead of Cancel after taking a picture

This commit is contained in:
tibbi 2018-06-04 10:28:07 +02:00
parent cc63675e3a
commit df33bf0ddf
1 changed files with 9 additions and 9 deletions

View File

@ -323,7 +323,7 @@ class PreviewCameraTwo : ViewGroup, TextureView.SurfaceTextureListener, MyPrevie
mCaptureSession = cameraCaptureSession mCaptureSession = cameraCaptureSession
mPreviewRequestBuilder!!.apply { mPreviewRequestBuilder!!.apply {
set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE) set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE)
set(CaptureRequest.FLASH_MODE, getFlashlightMode(mFlashlightState)) set(CaptureRequest.FLASH_MODE, getFlashlightMode())
mPreviewRequest = build() mPreviewRequest = build()
} }
mCaptureSession!!.setRepeatingRequest(mPreviewRequest, mCaptureCallback, mBackgroundHandler) mCaptureSession!!.setRepeatingRequest(mPreviewRequest, mCaptureCallback, mBackgroundHandler)
@ -399,6 +399,7 @@ class PreviewCameraTwo : ViewGroup, TextureView.SurfaceTextureListener, MyPrevie
mRotationAtCapture = mActivity.mLastHandledOrientation mRotationAtCapture = mActivity.mLastHandledOrientation
val captureBuilder = mCameraDevice!!.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE).apply { val captureBuilder = mCameraDevice!!.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE).apply {
addTarget(mImageReader!!.surface) addTarget(mImageReader!!.surface)
set(CaptureRequest.FLASH_MODE, getFlashlightMode())
set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE) set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE)
set(CaptureRequest.JPEG_ORIENTATION, mSensorOrientation) set(CaptureRequest.JPEG_ORIENTATION, mSensorOrientation)
set(CaptureRequest.SCALER_CROP_REGION, mZoomRect) set(CaptureRequest.SCALER_CROP_REGION, mZoomRect)
@ -535,9 +536,9 @@ class PreviewCameraTwo : ViewGroup, TextureView.SurfaceTextureListener, MyPrevie
private fun lockFocus() { private fun lockFocus() {
try { try {
mCameraState = STATE_WAITING_LOCK
mPreviewRequestBuilder!!.apply { mPreviewRequestBuilder!!.apply {
set(CaptureRequest.CONTROL_AF_TRIGGER, CameraMetadata.CONTROL_AF_TRIGGER_START) set(CaptureRequest.CONTROL_AF_TRIGGER, CameraMetadata.CONTROL_AF_TRIGGER_START)
mCameraState = STATE_WAITING_LOCK
mCaptureSession!!.capture(build(), mCaptureCallback, mBackgroundHandler) mCaptureSession!!.capture(build(), mCaptureCallback, mBackgroundHandler)
} }
} catch (e: CameraAccessException) { } catch (e: CameraAccessException) {
@ -547,8 +548,7 @@ class PreviewCameraTwo : ViewGroup, TextureView.SurfaceTextureListener, MyPrevie
private fun unlockFocus() { private fun unlockFocus() {
try { try {
mPreviewRequestBuilder!!.apply { mPreviewRequestBuilder!!.apply {
set(CaptureRequest.CONTROL_AF_TRIGGER, CameraMetadata.CONTROL_AF_TRIGGER_CANCEL) set(CaptureRequest.CONTROL_AF_TRIGGER, CameraMetadata.CONTROL_AF_TRIGGER_IDLE)
set(CaptureRequest.FLASH_MODE, getFlashlightMode(mFlashlightState))
mCaptureSession!!.capture(build(), mCaptureCallback, mBackgroundHandler) mCaptureSession!!.capture(build(), mCaptureCallback, mBackgroundHandler)
} }
mCameraState = STATE_PREVIEW mCameraState = STATE_PREVIEW
@ -565,10 +565,9 @@ class PreviewCameraTwo : ViewGroup, TextureView.SurfaceTextureListener, MyPrevie
lockFocus() lockFocus()
} }
private fun getFlashlightMode(state: Int) = when (state) { private fun getFlashlightMode() = when (mFlashlightState) {
FLASH_OFF -> CameraMetadata.FLASH_MODE_OFF
FLASH_ON -> CameraMetadata.FLASH_MODE_TORCH FLASH_ON -> CameraMetadata.FLASH_MODE_TORCH
else -> CameraMetadata.FLASH_MODE_SINGLE else -> CameraMetadata.FLASH_MODE_OFF
} }
override fun setTargetUri(uri: Uri) { override fun setTargetUri(uri: Uri) {
@ -620,8 +619,9 @@ class PreviewCameraTwo : ViewGroup, TextureView.SurfaceTextureListener, MyPrevie
override fun checkFlashlight() { override fun checkFlashlight() {
if (mCameraState == STATE_PREVIEW && mIsFlashSupported) { if (mCameraState == STATE_PREVIEW && mIsFlashSupported) {
mPreviewRequestBuilder!!.set(CaptureRequest.FLASH_MODE, getFlashlightMode(mFlashlightState)) mPreviewRequestBuilder!!.set(CaptureRequest.FLASH_MODE, getFlashlightMode())
mCaptureSession!!.setRepeatingRequest(mPreviewRequestBuilder!!.build(), mCaptureCallback, mBackgroundHandler) mPreviewRequest = mPreviewRequestBuilder!!.build()
mCaptureSession!!.setRepeatingRequest(mPreviewRequest, mCaptureCallback, mBackgroundHandler)
mActivity.updateFlashlightState(mFlashlightState) mActivity.updateFlashlightState(mFlashlightState)
} }
} }