mirror of
https://github.com/SimpleMobileTools/Simple-Camera.git
synced 2025-06-27 09:02:59 +02:00
fix a glitch preventing capturing multiple images in a row
This commit is contained in:
@ -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 {
|
||||||
|
@ -36,4 +36,6 @@ interface MyPreview {
|
|||||||
fun deviceOrientationChanged()
|
fun deviceOrientationChanged()
|
||||||
|
|
||||||
fun resumeCamera(): Boolean
|
fun resumeCamera(): Boolean
|
||||||
|
|
||||||
|
fun imageSaved()
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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) {}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user