CameraX 闪光灯问题
CameraX Flash Issue
这是一个奇怪的问题。不知道是BUG还是库的问题,所以是camerax闪光灯的问题。
我分配一个全局变量flashMode
private var flashMode: Int = ImageCapture.FLASH_MODE_OFF
然后将其设置为 ImageCaptureBuilder
imageCapture = ImageCapture.Builder()
.setCaptureMode(ImageCapture.CAPTURE_MODE_MINIMIZE_LATENCY)
.setTargetAspectRatio(screenAspectRatio)
.setFlashMode(flashMode)
.setTargetRotation(rotation)
.build()
拍照前我打开了闪光灯
if (camera?.cameraInfo?.hasFlashUnit() == true) {
flashMode = ImageCapture.FLASH_MODE_ON
}
但这并没有打开相机闪光灯,而是将 flashMode 值设置为 1,即 ImageCapture.FLASH_MODE_ON(我通过日志记录检查)。在捕获图像之前,我再次记录并检查了该值flashMode 是 1 ,但是如果我将全局变量设置为
,闪光灯也不会转动 on.But
private var flashMode: Int = ImageCapture.FLASH_MODE_ON
然后就可以使用了,闪光灯也打开了。
在我之前的项目中,我已经尝试过将 Flash On post 设置为 FlashModeOff 的上述方法,并且效果很好。但是这次我无法理解哪里出了问题。
提前致谢
我正在使用 JAVA
private void ativarFlash() {
ic_flash.startAnimation(animationDown);
if (flashMode == FlashMode.ON) {
flashMode = FlashMode.OFF;
} else {
flashMode = FlashMode.ON;
}
startCamera();
}
然后 startCamera();
private void startCamera() {
CameraX.unbindAll();
preview = setPreview();
imageCapture = setImageCapture();
//bind to lifecycle:
CameraX.bindToLifecycle(this, preview, imageCapture);
ivBitmap.setImageDrawable(null);
}
尝试使用
更改闪光灯模式
imageCapture.flashMode = ImageCapture.FLASH_MODE_ON
而不是
flashMode = ImageCapture.FLASH_MODE_ON
这是一个奇怪的问题。不知道是BUG还是库的问题,所以是camerax闪光灯的问题。
我分配一个全局变量flashMode
private var flashMode: Int = ImageCapture.FLASH_MODE_OFF
然后将其设置为 ImageCaptureBuilder
imageCapture = ImageCapture.Builder()
.setCaptureMode(ImageCapture.CAPTURE_MODE_MINIMIZE_LATENCY)
.setTargetAspectRatio(screenAspectRatio)
.setFlashMode(flashMode)
.setTargetRotation(rotation)
.build()
拍照前我打开了闪光灯
if (camera?.cameraInfo?.hasFlashUnit() == true) {
flashMode = ImageCapture.FLASH_MODE_ON
}
但这并没有打开相机闪光灯,而是将 flashMode 值设置为 1,即 ImageCapture.FLASH_MODE_ON(我通过日志记录检查)。在捕获图像之前,我再次记录并检查了该值flashMode 是 1 ,但是如果我将全局变量设置为
,闪光灯也不会转动 on.Butprivate var flashMode: Int = ImageCapture.FLASH_MODE_ON
然后就可以使用了,闪光灯也打开了。 在我之前的项目中,我已经尝试过将 Flash On post 设置为 FlashModeOff 的上述方法,并且效果很好。但是这次我无法理解哪里出了问题。 提前致谢
我正在使用 JAVA
private void ativarFlash() {
ic_flash.startAnimation(animationDown);
if (flashMode == FlashMode.ON) {
flashMode = FlashMode.OFF;
} else {
flashMode = FlashMode.ON;
}
startCamera();
}
然后 startCamera();
private void startCamera() {
CameraX.unbindAll();
preview = setPreview();
imageCapture = setImageCapture();
//bind to lifecycle:
CameraX.bindToLifecycle(this, preview, imageCapture);
ivBitmap.setImageDrawable(null);
}
尝试使用
更改闪光灯模式imageCapture.flashMode = ImageCapture.FLASH_MODE_ON
而不是
flashMode = ImageCapture.FLASH_MODE_ON