mirror of
https://github.com/SimpleMobileTools/Simple-Camera.git
synced 2025-02-13 01:40:44 +01:00
properly handle autoexposure and auto flash
This commit is contained in:
parent
ffd25d0cdf
commit
16a2745652
@ -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())
|
setFlashAndExposure(this)
|
||||||
mPreviewRequest = build()
|
mPreviewRequest = build()
|
||||||
}
|
}
|
||||||
mCaptureSession!!.setRepeatingRequest(mPreviewRequest, mCaptureCallback, mBackgroundHandler)
|
mCaptureSession!!.setRepeatingRequest(mPreviewRequest, mCaptureCallback, mBackgroundHandler)
|
||||||
@ -399,10 +399,11 @@ 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())
|
setFlashAndExposure(this)
|
||||||
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)
|
||||||
|
set(CaptureRequest.CONTROL_CAPTURE_INTENT, CaptureRequest.CONTROL_CAPTURE_INTENT_STILL_CAPTURE)
|
||||||
}
|
}
|
||||||
|
|
||||||
val captureCallback = object : CameraCaptureSession.CaptureCallback() {
|
val captureCallback = object : CameraCaptureSession.CaptureCallback() {
|
||||||
@ -557,6 +558,14 @@ class PreviewCameraTwo : ViewGroup, TextureView.SurfaceTextureListener, MyPrevie
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun setFlashAndExposure(builder: CaptureRequest.Builder) {
|
||||||
|
val aeMode = if (mFlashlightState == FLASH_AUTO) CameraMetadata.CONTROL_AE_MODE_ON_AUTO_FLASH else CameraMetadata.CONTROL_AE_MODE_ON
|
||||||
|
builder.apply {
|
||||||
|
set(CaptureRequest.FLASH_MODE, getFlashlightMode())
|
||||||
|
set(CaptureRequest.CONTROL_AE_MODE, aeMode)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun getCameraManager() = mActivity.getSystemService(Context.CAMERA_SERVICE) as CameraManager
|
private fun getCameraManager() = mActivity.getSystemService(Context.CAMERA_SERVICE) as CameraManager
|
||||||
|
|
||||||
private fun getCameraCharacteristics(cameraId: String = mCameraId) = getCameraManager().getCameraCharacteristics(cameraId)
|
private fun getCameraCharacteristics(cameraId: String = mCameraId) = getCameraManager().getCameraCharacteristics(cameraId)
|
||||||
@ -619,7 +628,7 @@ 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())
|
setFlashAndExposure(mPreviewRequestBuilder!!)
|
||||||
mPreviewRequest = mPreviewRequestBuilder!!.build()
|
mPreviewRequest = mPreviewRequestBuilder!!.build()
|
||||||
mCaptureSession!!.setRepeatingRequest(mPreviewRequest, mCaptureCallback, mBackgroundHandler)
|
mCaptureSession!!.setRepeatingRequest(mPreviewRequest, mCaptureCallback, mBackgroundHandler)
|
||||||
mActivity.updateFlashlightState(mFlashlightState)
|
mActivity.updateFlashlightState(mFlashlightState)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user