Skip to content

Commit

Permalink
Brighten camera screen if under 66%.
Browse files Browse the repository at this point in the history
  • Loading branch information
alex-signal committed Nov 15, 2022
1 parent 3a060c7 commit 74b7057
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 19 deletions.
Expand Up @@ -70,17 +70,18 @@ public class Camera1Fragment extends LoggingFragment implements CameraFragment,

private static final String TAG = Log.tag(Camera1Fragment.class);

private TextureView cameraPreview;
private ViewGroup controlsContainer;
private ImageButton flipButton;
private View captureButton;
private Camera1Controller camera;
private Controller controller;
private OrderEnforcer<Stage> orderEnforcer;
private Camera1Controller.Properties properties;
private RotationListener rotationListener;
private Disposable rotationListenerDisposable;
private Disposable mostRecentItemDisposable = Disposable.disposed();
private TextureView cameraPreview;
private ViewGroup controlsContainer;
private ImageButton flipButton;
private View captureButton;
private Camera1Controller camera;
private Controller controller;
private OrderEnforcer<Stage> orderEnforcer;
private Camera1Controller.Properties properties;
private RotationListener rotationListener;
private Disposable rotationListenerDisposable;
private Disposable mostRecentItemDisposable = Disposable.disposed();
private CameraScreenBrightnessController cameraScreenBrightnessController;

private boolean isThumbAvailable;
private boolean isMediaSelected;
Expand Down Expand Up @@ -124,6 +125,8 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
requireActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
cameraScreenBrightnessController = new CameraScreenBrightnessController(requireActivity().getWindow());
getViewLifecycleOwner().getLifecycle().addObserver(cameraScreenBrightnessController);

rotationListener = new RotationListener(requireContext());
cameraPreview = view.findViewById(R.id.camera_preview);
Expand Down
@@ -0,0 +1,35 @@
package org.thoughtcrime.securesms.mediasend

import android.view.Window
import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner

/**
* Modifies screen brightness to increase to a max of 66% if lower than that for optimal picture
* taking conditions.
*/
class CameraScreenBrightnessController(private val window: Window) : DefaultLifecycleObserver {

companion object {
private const val MIN_CAMERA_BRIGHTNESS = 0.66f
}

private var originalBrightness: Float = 0f

override fun onResume(owner: LifecycleOwner) {
val originalBrightness = window.attributes.screenBrightness
if (originalBrightness < MIN_CAMERA_BRIGHTNESS) {
window.attributes = window.attributes.apply {
screenBrightness = MIN_CAMERA_BRIGHTNESS
}
}
}

override fun onPause(owner: LifecycleOwner) {
if (originalBrightness > 0f && window.attributes.screenBrightness == MIN_CAMERA_BRIGHTNESS) {
window.attributes = window.attributes.apply {
screenBrightness = originalBrightness
}
}
}
}
Expand Up @@ -25,7 +25,10 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.camera.core.CameraInfo;
import androidx.camera.core.CameraSelector;
import androidx.camera.core.ExposureState;
import androidx.camera.core.FocusMeteringAction;
import androidx.camera.core.ImageCapture;
import androidx.camera.core.ImageCaptureException;
import androidx.camera.core.ImageProxy;
Expand Down Expand Up @@ -81,14 +84,15 @@ public class CameraXFragment extends LoggingFragment implements CameraFragment {
private static final Rational ASPECT_RATIO_16_9 = new Rational(16, 9);
private static final PreviewView.ScaleType PREVIEW_SCALE_TYPE = PreviewView.ScaleType.FILL_CENTER;

private PreviewView previewView;
private ViewGroup controlsContainer;
private Controller controller;
private View selfieFlash;
private MemoryFileDescriptor videoFileDescriptor;
private LifecycleCameraController cameraController;
private Disposable mostRecentItemDisposable = Disposable.disposed();
private CameraXModePolicy cameraXModePolicy;
private PreviewView previewView;
private ViewGroup controlsContainer;
private Controller controller;
private View selfieFlash;
private MemoryFileDescriptor videoFileDescriptor;
private LifecycleCameraController cameraController;
private Disposable mostRecentItemDisposable = Disposable.disposed();
private CameraXModePolicy cameraXModePolicy;
private CameraScreenBrightnessController cameraScreenBrightnessController;

private boolean isThumbAvailable;
private boolean isMediaSelected;
Expand Down Expand Up @@ -134,6 +138,9 @@ public void onAttach(@NonNull Context context) {
@SuppressLint("MissingPermission")
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
cameraScreenBrightnessController = new CameraScreenBrightnessController(requireActivity().getWindow());
getViewLifecycleOwner().getLifecycle().addObserver(cameraScreenBrightnessController);

ViewGroup cameraParent = view.findViewById(R.id.camerax_camera_parent);

this.previewView = view.findViewById(R.id.camerax_camera);
Expand Down

0 comments on commit 74b7057

Please sign in to comment.