mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-23 12:38:33 +00:00
@@ -377,10 +377,14 @@ public class CameraXFragment extends LoggingFragment implements CameraFragment {
|
||||
selfieFlash = requireView().findViewById(R.id.camera_selfie_flash);
|
||||
|
||||
captureButton.setOnClickListener(v -> {
|
||||
if (cameraController.isInitialized()) {
|
||||
captureButton.setEnabled(false);
|
||||
flipButton.setEnabled(false);
|
||||
flashButton.setEnabled(false);
|
||||
onCaptureClicked();
|
||||
} else {
|
||||
Log.i(TAG, "Camera capture button clicked but the camera controller is not yet initialized.");
|
||||
}
|
||||
});
|
||||
|
||||
previewView.setScaleType(PREVIEW_SCALE_TYPE);
|
||||
|
||||
@@ -27,6 +27,8 @@ import java.util.concurrent.Executor
|
||||
|
||||
interface CameraXController {
|
||||
|
||||
fun isInitialized(): Boolean
|
||||
|
||||
fun initializeAndBind(context: Context, lifecycleOwner: LifecycleOwner)
|
||||
|
||||
@RequiresPermission(Manifest.permission.CAMERA)
|
||||
|
||||
@@ -31,6 +31,10 @@ import java.util.concurrent.Executor
|
||||
class PlatformCameraController(context: Context) : CameraXController {
|
||||
val delegate = LifecycleCameraController(context)
|
||||
|
||||
override fun isInitialized(): Boolean {
|
||||
return delegate.initializationFuture.isDone
|
||||
}
|
||||
|
||||
override fun initializeAndBind(context: Context, lifecycleOwner: LifecycleOwner) {
|
||||
delegate.bindToLifecycle(lifecycleOwner)
|
||||
delegate.setCameraSelector(CameraXUtil.toCameraSelector(TextSecurePreferences.getDirectCaptureCameraId(context)))
|
||||
|
||||
@@ -110,6 +110,10 @@ class SignalCameraController(
|
||||
private lateinit var extensionsManager: ExtensionsManager
|
||||
private lateinit var cameraProperty: Camera
|
||||
|
||||
override fun isInitialized(): Boolean {
|
||||
return this::cameraProvider.isInitialized && this::extensionsManager.isInitialized
|
||||
}
|
||||
|
||||
override fun initializeAndBind(context: Context, lifecycleOwner: LifecycleOwner) {
|
||||
bindToLifecycle(lifecycleOwner) { Log.d(TAG, "Camera initialization and binding complete.") }
|
||||
}
|
||||
@@ -117,7 +121,7 @@ class SignalCameraController(
|
||||
@RequiresPermission(Manifest.permission.CAMERA)
|
||||
override fun bindToLifecycle(lifecycleOwner: LifecycleOwner, onCameraBoundListener: Runnable) {
|
||||
ThreadUtil.assertMainThread()
|
||||
if (this::cameraProvider.isInitialized && this::extensionsManager.isInitialized) {
|
||||
if (isInitialized()) {
|
||||
bindToLifecycleInternal()
|
||||
onCameraBoundListener.run()
|
||||
} else if (!listenerAdded) {
|
||||
|
||||
Reference in New Issue
Block a user