fix a glitch preventing capturing multiple images in a row

This commit is contained in:
tibbi
2018-07-09 23:51:58 +02:00
parent 15ba3462c1
commit 8fae1b167a
4 changed files with 20 additions and 8 deletions

View File

@ -555,6 +555,7 @@ class MainActivity : SimpleActivity(), PhotoProcessor.MediaSavedListener {
fun drawFocusCircle(x: Float, y: Float) = mFocusCircleView.drawFocusCircle(x, y) fun drawFocusCircle(x: Float, y: Float) = mFocusCircleView.drawFocusCircle(x, y)
override fun mediaSaved(path: String) { override fun mediaSaved(path: String) {
mPreview?.imageSaved()
rescanPaths(arrayListOf(path)) { rescanPaths(arrayListOf(path)) {
setupPreviewImage(true) setupPreviewImage(true)
Intent(BROADCAST_REFRESH_MEDIA).apply { Intent(BROADCAST_REFRESH_MEDIA).apply {

View File

@ -36,4 +36,6 @@ interface MyPreview {
fun deviceOrientationChanged() fun deviceOrientationChanged()
fun resumeCamera(): Boolean fun resumeCamera(): Boolean
fun imageSaved()
} }

View File

@ -155,6 +155,8 @@ class PreviewCameraOne : ViewGroup, SurfaceHolder.Callback, MyPreview {
return true return true
} }
override fun imageSaved() {}
private fun initCamera(): Boolean { private fun initCamera(): Boolean {
if (mCamera == null) if (mCamera == null)
return false return false

View File

@ -591,14 +591,7 @@ class PreviewCameraTwo : ViewGroup, TextureView.SurfaceTextureListener, MyPrevie
} }
val captureCallback = object : CameraCaptureSession.CaptureCallback() { val captureCallback = object : CameraCaptureSession.CaptureCallback() {
override fun onCaptureCompleted(session: CameraCaptureSession, request: CaptureRequest, result: TotalCaptureResult) { override fun onCaptureCompleted(session: CameraCaptureSession, request: CaptureRequest, result: TotalCaptureResult) {}
mActivity.toggleBottomButtons(false)
if (shouldLockFocus()) {
unlockFocus()
} else {
resetPreviewSession()
}
}
override fun onCaptureFailed(session: CameraCaptureSession?, request: CaptureRequest?, failure: CaptureFailure?) { override fun onCaptureFailed(session: CameraCaptureSession?, request: CaptureRequest?, failure: CaptureFailure?) {
super.onCaptureFailed(session, request, failure) super.onCaptureFailed(session, request, failure)
@ -753,6 +746,10 @@ class PreviewCameraTwo : ViewGroup, TextureView.SurfaceTextureListener, MyPrevie
val texture = mTextureView.surfaceTexture!! val texture = mTextureView.surfaceTexture!!
texture.setDefaultBufferSize(mPreviewSize!!.width, mPreviewSize!!.height) texture.setDefaultBufferSize(mPreviewSize!!.width, mPreviewSize!!.height)
val currentResolution = getCurrentResolution()
mImageReader = ImageReader.newInstance(currentResolution.width, currentResolution.height, ImageFormat.JPEG, 2)
mImageReader!!.setOnImageAvailableListener(imageAvailableListener, mBackgroundHandler)
val surface = Surface(texture) val surface = Surface(texture)
mCameraDevice!!.createCaptureSession(Arrays.asList(surface, mImageReader!!.surface), stateCallback, null) mCameraDevice!!.createCaptureSession(Arrays.asList(surface, mImageReader!!.surface), stateCallback, null)
} catch (e: Exception) { } catch (e: Exception) {
@ -1019,5 +1016,15 @@ class PreviewCameraTwo : ViewGroup, TextureView.SurfaceTextureListener, MyPrevie
override fun resumeCamera() = true override fun resumeCamera() = true
override fun imageSaved() {
mImageReader?.close()
mActivity.toggleBottomButtons(false)
if (shouldLockFocus()) {
unlockFocus()
} else {
resetPreviewSession()
}
}
override fun onLayout(changed: Boolean, l: Int, t: Int, r: Int, b: Int) {} override fun onLayout(changed: Boolean, l: Int, t: Int, r: Int, b: Int) {}
} }