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:
parent
1e2c73c2cf
commit
bacd5e138b
@ -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 ->
|
||||||
|
Loading…
x
Reference in New Issue
Block a user