kopia lustrzana https://github.com/ryukoposting/Signal-Android
Only brighten screen when flash is ON and camera is FRONT.
rodzic
3cc556d803
commit
a6a185004d
|
@ -121,7 +121,7 @@ public class Camera1Fragment extends LoggingFragment implements CameraFragment,
|
|||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
requireActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
|
||||
cameraScreenBrightnessController = new CameraScreenBrightnessController(requireActivity().getWindow(), () -> camera.isCameraFacingFront());
|
||||
cameraScreenBrightnessController = new CameraScreenBrightnessController(requireActivity().getWindow(), new CameraStateProvider(camera));
|
||||
getViewLifecycleOwner().getLifecycle().addObserver(cameraScreenBrightnessController);
|
||||
|
||||
rotationListener = new RotationListener(requireContext());
|
||||
|
@ -477,4 +477,23 @@ public class Camera1Fragment extends LoggingFragment implements CameraFragment,
|
|||
private enum Stage {
|
||||
SURFACE_AVAILABLE, CAMERA_PROPERTIES_AVAILABLE
|
||||
}
|
||||
|
||||
private static class CameraStateProvider implements CameraScreenBrightnessController.CameraStateProvider {
|
||||
|
||||
private final Camera1Controller camera1Controller;
|
||||
|
||||
private CameraStateProvider(Camera1Controller camera1Controller) {
|
||||
this.camera1Controller = camera1Controller;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFrontFacingCameraSelected() {
|
||||
return camera1Controller.isCameraFacingFront();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFlashEnabled() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,10 @@ import androidx.lifecycle.LifecycleOwner
|
|||
* Modifies screen brightness to increase to a max of 66% if lower than that for optimal picture
|
||||
* taking conditions. This brightness is only applied when the front-facing camera is selected.
|
||||
*/
|
||||
class CameraScreenBrightnessController(private val window: Window, private val cameraDirectionProvider: CameraDirectionProvider) : DefaultLifecycleObserver {
|
||||
class CameraScreenBrightnessController(
|
||||
private val window: Window,
|
||||
private val cameraStateProvider: CameraStateProvider
|
||||
) : DefaultLifecycleObserver {
|
||||
|
||||
companion object {
|
||||
private const val FRONT_CAMERA_BRIGHTNESS = 0.66f
|
||||
|
@ -17,7 +20,8 @@ class CameraScreenBrightnessController(private val window: Window, private val c
|
|||
private val originalBrightness: Float by lazy { window.attributes.screenBrightness }
|
||||
|
||||
override fun onResume(owner: LifecycleOwner) {
|
||||
onCameraDirectionChanged(cameraDirectionProvider.isFrontFacingCameraSelected())
|
||||
onCameraDirectionChanged(cameraStateProvider.isFrontFacingCameraSelected())
|
||||
onCameraFlashChanged(cameraStateProvider.isFlashEnabled())
|
||||
}
|
||||
|
||||
override fun onPause(owner: LifecycleOwner) {
|
||||
|
@ -29,7 +33,15 @@ class CameraScreenBrightnessController(private val window: Window, private val c
|
|||
* the `CameraDirectionProvider` at this point.
|
||||
*/
|
||||
fun onCameraDirectionChanged(isFrontFacing: Boolean) {
|
||||
if (isFrontFacing) {
|
||||
if (isFrontFacing && cameraStateProvider.isFlashEnabled()) {
|
||||
enableBrightness()
|
||||
} else {
|
||||
disableBrightness()
|
||||
}
|
||||
}
|
||||
|
||||
fun onCameraFlashChanged(isFlashEnabled: Boolean) {
|
||||
if (isFlashEnabled && cameraStateProvider.isFrontFacingCameraSelected()) {
|
||||
enableBrightness()
|
||||
} else {
|
||||
disableBrightness()
|
||||
|
@ -52,7 +64,8 @@ class CameraScreenBrightnessController(private val window: Window, private val c
|
|||
}
|
||||
}
|
||||
|
||||
interface CameraDirectionProvider {
|
||||
interface CameraStateProvider {
|
||||
fun isFrontFacingCameraSelected(): Boolean
|
||||
fun isFlashEnabled(): Boolean
|
||||
}
|
||||
}
|
||||
|
|
|
@ -134,11 +134,6 @@ public class CameraXFragment extends LoggingFragment implements CameraFragment {
|
|||
@SuppressLint("MissingPermission")
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
cameraScreenBrightnessController = new CameraScreenBrightnessController(
|
||||
requireActivity().getWindow(),
|
||||
() -> cameraController.getCameraSelector() == CameraSelector.DEFAULT_FRONT_CAMERA
|
||||
);
|
||||
|
||||
ViewGroup cameraParent = view.findViewById(R.id.camerax_camera_parent);
|
||||
|
||||
this.previewView = view.findViewById(R.id.camerax_camera);
|
||||
|
@ -156,6 +151,11 @@ public class CameraXFragment extends LoggingFragment implements CameraFragment {
|
|||
cameraController.setImageCaptureMode(CameraXUtil.getOptimalCaptureMode());
|
||||
cameraXModePolicy.initialize(cameraController);
|
||||
|
||||
cameraScreenBrightnessController = new CameraScreenBrightnessController(
|
||||
requireActivity().getWindow(),
|
||||
new CameraStateProvider(cameraController)
|
||||
);
|
||||
|
||||
previewView.setScaleType(PREVIEW_SCALE_TYPE);
|
||||
previewView.setController(cameraController);
|
||||
|
||||
|
@ -344,7 +344,10 @@ public class CameraXFragment extends LoggingFragment implements CameraFragment {
|
|||
|
||||
flashButton.setAutoFlashEnabled(cameraController.getImageCaptureFlashMode() >= ImageCapture.FLASH_MODE_AUTO);
|
||||
flashButton.setFlash(cameraController.getImageCaptureFlashMode());
|
||||
flashButton.setOnFlashModeChangedListener(cameraController::setImageCaptureFlashMode);
|
||||
flashButton.setOnFlashModeChangedListener(mode -> {
|
||||
cameraController.setImageCaptureFlashMode(mode);
|
||||
cameraScreenBrightnessController.onCameraFlashChanged(mode == ImageCapture.FLASH_MODE_ON);
|
||||
});
|
||||
|
||||
galleryButton.setOnClickListener(v -> controller.onGalleryClicked());
|
||||
countButton.setOnClickListener(v -> controller.onCameraCountButtonClicked());
|
||||
|
@ -556,4 +559,23 @@ public class CameraXFragment extends LoggingFragment implements CameraFragment {
|
|||
flipButton.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
private static class CameraStateProvider implements CameraScreenBrightnessController.CameraStateProvider {
|
||||
|
||||
private final CameraController cameraController;
|
||||
|
||||
private CameraStateProvider(CameraController cameraController) {
|
||||
this.cameraController = cameraController;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFrontFacingCameraSelected() {
|
||||
return cameraController.getCameraSelector() == CameraSelector.DEFAULT_FRONT_CAMERA;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFlashEnabled() {
|
||||
return cameraController.getImageCaptureFlashMode() == ImageCapture.FLASH_MODE_ON;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue