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) {
|
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(), () -> camera.isCameraFacingFront());
|
cameraScreenBrightnessController = new CameraScreenBrightnessController(requireActivity().getWindow(), new CameraStateProvider(camera));
|
||||||
getViewLifecycleOwner().getLifecycle().addObserver(cameraScreenBrightnessController);
|
getViewLifecycleOwner().getLifecycle().addObserver(cameraScreenBrightnessController);
|
||||||
|
|
||||||
rotationListener = new RotationListener(requireContext());
|
rotationListener = new RotationListener(requireContext());
|
||||||
|
@ -477,4 +477,23 @@ public class Camera1Fragment extends LoggingFragment implements CameraFragment,
|
||||||
private enum Stage {
|
private enum Stage {
|
||||||
SURFACE_AVAILABLE, CAMERA_PROPERTIES_AVAILABLE
|
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
|
* 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.
|
* 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 {
|
companion object {
|
||||||
private const val FRONT_CAMERA_BRIGHTNESS = 0.66f
|
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 }
|
private val originalBrightness: Float by lazy { window.attributes.screenBrightness }
|
||||||
|
|
||||||
override fun onResume(owner: LifecycleOwner) {
|
override fun onResume(owner: LifecycleOwner) {
|
||||||
onCameraDirectionChanged(cameraDirectionProvider.isFrontFacingCameraSelected())
|
onCameraDirectionChanged(cameraStateProvider.isFrontFacingCameraSelected())
|
||||||
|
onCameraFlashChanged(cameraStateProvider.isFlashEnabled())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPause(owner: LifecycleOwner) {
|
override fun onPause(owner: LifecycleOwner) {
|
||||||
|
@ -29,7 +33,15 @@ class CameraScreenBrightnessController(private val window: Window, private val c
|
||||||
* the `CameraDirectionProvider` at this point.
|
* the `CameraDirectionProvider` at this point.
|
||||||
*/
|
*/
|
||||||
fun onCameraDirectionChanged(isFrontFacing: Boolean) {
|
fun onCameraDirectionChanged(isFrontFacing: Boolean) {
|
||||||
if (isFrontFacing) {
|
if (isFrontFacing && cameraStateProvider.isFlashEnabled()) {
|
||||||
|
enableBrightness()
|
||||||
|
} else {
|
||||||
|
disableBrightness()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun onCameraFlashChanged(isFlashEnabled: Boolean) {
|
||||||
|
if (isFlashEnabled && cameraStateProvider.isFrontFacingCameraSelected()) {
|
||||||
enableBrightness()
|
enableBrightness()
|
||||||
} else {
|
} else {
|
||||||
disableBrightness()
|
disableBrightness()
|
||||||
|
@ -52,7 +64,8 @@ class CameraScreenBrightnessController(private val window: Window, private val c
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
interface CameraDirectionProvider {
|
interface CameraStateProvider {
|
||||||
fun isFrontFacingCameraSelected(): Boolean
|
fun isFrontFacingCameraSelected(): Boolean
|
||||||
|
fun isFlashEnabled(): Boolean
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -134,11 +134,6 @@ 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(),
|
|
||||||
() -> cameraController.getCameraSelector() == CameraSelector.DEFAULT_FRONT_CAMERA
|
|
||||||
);
|
|
||||||
|
|
||||||
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);
|
||||||
|
@ -156,6 +151,11 @@ public class CameraXFragment extends LoggingFragment implements CameraFragment {
|
||||||
cameraController.setImageCaptureMode(CameraXUtil.getOptimalCaptureMode());
|
cameraController.setImageCaptureMode(CameraXUtil.getOptimalCaptureMode());
|
||||||
cameraXModePolicy.initialize(cameraController);
|
cameraXModePolicy.initialize(cameraController);
|
||||||
|
|
||||||
|
cameraScreenBrightnessController = new CameraScreenBrightnessController(
|
||||||
|
requireActivity().getWindow(),
|
||||||
|
new CameraStateProvider(cameraController)
|
||||||
|
);
|
||||||
|
|
||||||
previewView.setScaleType(PREVIEW_SCALE_TYPE);
|
previewView.setScaleType(PREVIEW_SCALE_TYPE);
|
||||||
previewView.setController(cameraController);
|
previewView.setController(cameraController);
|
||||||
|
|
||||||
|
@ -344,7 +344,10 @@ public class CameraXFragment extends LoggingFragment implements CameraFragment {
|
||||||
|
|
||||||
flashButton.setAutoFlashEnabled(cameraController.getImageCaptureFlashMode() >= ImageCapture.FLASH_MODE_AUTO);
|
flashButton.setAutoFlashEnabled(cameraController.getImageCaptureFlashMode() >= ImageCapture.FLASH_MODE_AUTO);
|
||||||
flashButton.setFlash(cameraController.getImageCaptureFlashMode());
|
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());
|
galleryButton.setOnClickListener(v -> controller.onGalleryClicked());
|
||||||
countButton.setOnClickListener(v -> controller.onCameraCountButtonClicked());
|
countButton.setOnClickListener(v -> controller.onCameraCountButtonClicked());
|
||||||
|
@ -556,4 +559,23 @@ public class CameraXFragment extends LoggingFragment implements CameraFragment {
|
||||||
flipButton.setVisibility(View.GONE);
|
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