1
0
mirror of https://gitlab.shinice.net/pixeldroid/PixelDroid synced 2025-02-04 01:17:36 +01:00

Don't re-bind camera if already bound

This prevents flashing black when entering the CameraFragment
This commit is contained in:
Matthieu 2020-12-19 13:23:59 +01:00
parent 1e2c73c2cf
commit bacd5e138b

View File

@ -188,6 +188,9 @@ class CameraFragment : Fragment() {
// CameraProvider // CameraProvider
val cameraProvider: ProcessCameraProvider = cameraProviderFuture.get() val cameraProvider: ProcessCameraProvider = cameraProviderFuture.get()
if (camera == null || preview == null || imageCapture == null || !cameraProvider.isBound(preview!!) || !cameraProvider.isBound(imageCapture!!)) {
// Preview // Preview
preview = Preview.Builder() preview = Preview.Builder()
// We request aspect ratio but no resolution // We request aspect ratio but no resolution
@ -217,12 +220,13 @@ class CameraFragment : Fragment() {
this, cameraSelector, preview, imageCapture this, cameraSelector, preview, imageCapture
) )
// Attach the viewfinder's surface provider to preview use case // Attach the viewfinder's surface provider to preview use case
preview?.setSurfaceProvider(viewFinder.surfaceProvider) preview?.setSurfaceProvider(viewFinder.surfaceProvider)
} catch (exc: Exception) { } catch (exc: Exception) {
Log.e(TAG, "Use case binding failed", exc) Log.e(TAG, "Use case binding failed", exc)
} }
}
}, ContextCompat.getMainExecutor(requireContext())) }, ContextCompat.getMainExecutor(requireContext()))
} }
@ -290,7 +294,7 @@ class CameraFragment : Fragment() {
private fun setupUploadImage(controls: View) { private fun setupUploadImage(controls: View) {
// Listener for button used to view the most recent photo // Listener for button used to view the most recent photo
controls.findViewById<ImageButton>(R.id.photo_view_button).setOnClickListener { controls.findViewById<ImageButton>(R.id.photo_view_button)?.setOnClickListener {
Intent().apply { Intent().apply {
type = "image/*" type = "image/*"
action = Intent.ACTION_GET_CONTENT action = Intent.ACTION_GET_CONTENT
@ -306,7 +310,7 @@ class CameraFragment : Fragment() {
private fun setupFlipCameras(controls: View) { private fun setupFlipCameras(controls: View) {
// Listener for button used to switch cameras // Listener for button used to switch cameras
controls.findViewById<ImageButton>(R.id.camera_switch_button).setOnClickListener { controls.findViewById<ImageButton>(R.id.camera_switch_button)?.setOnClickListener {
lensFacing = if (CameraSelector.LENS_FACING_FRONT == lensFacing) { lensFacing = if (CameraSelector.LENS_FACING_FRONT == lensFacing) {
CameraSelector.LENS_FACING_BACK CameraSelector.LENS_FACING_BACK
} else { } else {
@ -327,7 +331,7 @@ class CameraFragment : Fragment() {
private fun setupImageCapture(controls: View) { private fun setupImageCapture(controls: View) {
// Listener for button used to capture photo // Listener for button used to capture photo
controls.findViewById<ImageButton>(R.id.camera_capture_button).setOnClickListener { controls.findViewById<ImageButton>(R.id.camera_capture_button)?.setOnClickListener {
// Get a stable reference of the modifiable image capture use case // Get a stable reference of the modifiable image capture use case
imageCapture?.let { imageCapture -> imageCapture?.let { imageCapture ->