kopia lustrzana https://github.com/ryukoposting/Signal-Android
Brighten camera screen if under 66%.
rodzic
3a060c7a79
commit
74b7057608
|
@ -70,17 +70,18 @@ public class Camera1Fragment extends LoggingFragment implements CameraFragment,
|
||||||
|
|
||||||
private static final String TAG = Log.tag(Camera1Fragment.class);
|
private static final String TAG = Log.tag(Camera1Fragment.class);
|
||||||
|
|
||||||
private TextureView cameraPreview;
|
private TextureView cameraPreview;
|
||||||
private ViewGroup controlsContainer;
|
private ViewGroup controlsContainer;
|
||||||
private ImageButton flipButton;
|
private ImageButton flipButton;
|
||||||
private View captureButton;
|
private View captureButton;
|
||||||
private Camera1Controller camera;
|
private Camera1Controller camera;
|
||||||
private Controller controller;
|
private Controller controller;
|
||||||
private OrderEnforcer<Stage> orderEnforcer;
|
private OrderEnforcer<Stage> orderEnforcer;
|
||||||
private Camera1Controller.Properties properties;
|
private Camera1Controller.Properties properties;
|
||||||
private RotationListener rotationListener;
|
private RotationListener rotationListener;
|
||||||
private Disposable rotationListenerDisposable;
|
private Disposable rotationListenerDisposable;
|
||||||
private Disposable mostRecentItemDisposable = Disposable.disposed();
|
private Disposable mostRecentItemDisposable = Disposable.disposed();
|
||||||
|
private CameraScreenBrightnessController cameraScreenBrightnessController;
|
||||||
|
|
||||||
private boolean isThumbAvailable;
|
private boolean isThumbAvailable;
|
||||||
private boolean isMediaSelected;
|
private boolean isMediaSelected;
|
||||||
|
@ -124,6 +125,8 @@ public class Camera1Fragment extends LoggingFragment implements CameraFragment,
|
||||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||||
super.onViewCreated(view, savedInstanceState);
|
super.onViewCreated(view, savedInstanceState);
|
||||||
requireActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
|
requireActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
|
||||||
|
cameraScreenBrightnessController = new CameraScreenBrightnessController(requireActivity().getWindow());
|
||||||
|
getViewLifecycleOwner().getLifecycle().addObserver(cameraScreenBrightnessController);
|
||||||
|
|
||||||
rotationListener = new RotationListener(requireContext());
|
rotationListener = new RotationListener(requireContext());
|
||||||
cameraPreview = view.findViewById(R.id.camera_preview);
|
cameraPreview = view.findViewById(R.id.camera_preview);
|
||||||
|
|
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -25,7 +25,10 @@ import android.widget.ImageView;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.annotation.RequiresApi;
|
import androidx.annotation.RequiresApi;
|
||||||
|
import androidx.camera.core.CameraInfo;
|
||||||
import androidx.camera.core.CameraSelector;
|
import androidx.camera.core.CameraSelector;
|
||||||
|
import androidx.camera.core.ExposureState;
|
||||||
|
import androidx.camera.core.FocusMeteringAction;
|
||||||
import androidx.camera.core.ImageCapture;
|
import androidx.camera.core.ImageCapture;
|
||||||
import androidx.camera.core.ImageCaptureException;
|
import androidx.camera.core.ImageCaptureException;
|
||||||
import androidx.camera.core.ImageProxy;
|
import androidx.camera.core.ImageProxy;
|
||||||
|
@ -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 Rational ASPECT_RATIO_16_9 = new Rational(16, 9);
|
||||||
private static final PreviewView.ScaleType PREVIEW_SCALE_TYPE = PreviewView.ScaleType.FILL_CENTER;
|
private static final PreviewView.ScaleType PREVIEW_SCALE_TYPE = PreviewView.ScaleType.FILL_CENTER;
|
||||||
|
|
||||||
private PreviewView previewView;
|
private PreviewView previewView;
|
||||||
private ViewGroup controlsContainer;
|
private ViewGroup controlsContainer;
|
||||||
private Controller controller;
|
private Controller controller;
|
||||||
private View selfieFlash;
|
private View selfieFlash;
|
||||||
private MemoryFileDescriptor videoFileDescriptor;
|
private MemoryFileDescriptor videoFileDescriptor;
|
||||||
private LifecycleCameraController cameraController;
|
private LifecycleCameraController cameraController;
|
||||||
private Disposable mostRecentItemDisposable = Disposable.disposed();
|
private Disposable mostRecentItemDisposable = Disposable.disposed();
|
||||||
private CameraXModePolicy cameraXModePolicy;
|
private CameraXModePolicy cameraXModePolicy;
|
||||||
|
private CameraScreenBrightnessController cameraScreenBrightnessController;
|
||||||
|
|
||||||
private boolean isThumbAvailable;
|
private boolean isThumbAvailable;
|
||||||
private boolean isMediaSelected;
|
private boolean isMediaSelected;
|
||||||
|
@ -134,6 +138,9 @@ public class CameraXFragment extends LoggingFragment implements CameraFragment {
|
||||||
@SuppressLint("MissingPermission")
|
@SuppressLint("MissingPermission")
|
||||||
@Override
|
@Override
|
||||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
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);
|
ViewGroup cameraParent = view.findViewById(R.id.camerax_camera_parent);
|
||||||
|
|
||||||
this.previewView = view.findViewById(R.id.camerax_camera);
|
this.previewView = view.findViewById(R.id.camerax_camera);
|
||||||
|
|
Ładowanie…
Reference in New Issue