Lik*_* Ts 5 android preview android-camera
我的相机应用程序预览在低光照下太暗.如果我打开我的谷歌相机,它将增加预览内的亮度,以便我们的脸部可以拍照.但我的预览完全是黑暗的.我处理了亮度和光线传感器.我的Lightsensor工作时很轻.我需要让预览可见.让我知道我该怎么办?
public void initialBrightness() {
try {
brightnessMode = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE);
} catch (Settings.SettingNotFoundException e) {
e.printStackTrace();
}
if (brightnessMode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {
Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE,
Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
brightnessModeAuto = true;
}
Settings.System.putInt(this.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, 95);
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = 100;
getWindow().setAttributes(lp);
}
Run Code Online (Sandbox Code Playgroud)
我在调用相机预览类之前在onCreate方法中调用此方法.
要解决此问题,您必须解锁autoExposureCompensation并设置为MAX值:
Camera.Parameters params = mCamera.getParameters();
params.setExposureCompensation(params.getMaxExposureCompensation());
if(params.isAutoExposureLockSupported()) {
params.setAutoExposureLock(false);
}
mCamera.setParameters(params);
Run Code Online (Sandbox Code Playgroud)
根据Android Develop> Reference> Camera.Parameters
使用setWhiteBalance(String)更改白平衡模式将释放自动白平衡锁定(如果已设置).
例如,曝光补偿,AE锁定和AWB锁定可用于捕获曝光包围的图像突发.调用相机释放()后,将不会保持自动白平衡状态(包括锁定状态).
在打开()之后但在第一次调用startPreview()之前锁定自动白平衡将不允许自动白平衡例程运行,并且可能导致捕获图像中的颜色严重错误.
所以在第一次调用startPreview()之后要小心并使用上面提到的代码
请尝试以下代码.它对我有用.
previewRequestBuilder.set(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, getRange());//This line of code is used for adjusting the fps range and fixing the dark preview
previewRequestBuilder.set(CaptureRequest.CONTROL_AE_LOCK, false);
previewRequestBuilder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER_START);
Run Code Online (Sandbox Code Playgroud)
getRange()函数如下:
private Range<Integer> getRange() {
CameraManager mCameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
CameraCharacteristics chars = null;
try {
chars = mCameraManager.getCameraCharacteristics(cameraId);
} catch (CameraAccessException e) {
e.printStackTrace();
}
Range<Integer>[] ranges = chars.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES);
Range<Integer> result = null;
for (Range<Integer> range : ranges) {
int upper = range.getUpper();
// 10 - min range upper for my needs
if (upper >= 10) {
if (result == null || upper < result.getUpper().intValue()) {
result = range;
}
}
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
经过数小时的不同设置测试后,对我有用的是减少每秒帧数。
通过这样做,我猜自动曝光校正有足够的时间来计算可用光的最佳设置。
因此,从 30 fps 降低到 10 fps 就成功了。
mCameraSource = new CameraSource.Builder(context, detector)
.setRequestedPreviewSize(640, 480)
.setFacing(CameraSource.CAMERA_FACING_FRONT)
.setRequestedFps(10.0f)
.build();
Run Code Online (Sandbox Code Playgroud)
根据我的实验,场景模式设置可以更改预览(与 ISO 或曝光补偿不同,它们都适用于拍摄的图片)。不要使用自动。尝试 scene-mode-values=night 或 scene-mode=dusk-dawn。
场景的问题在于支持的值在不同设备上没有标准化。但通常会出现某种夜晚。
| 归档时间: |
|
| 查看次数: |
9592 次 |
| 最近记录: |