Прежде всего, вам не нужно использовать TextureView.Причина, по которой ваш предварительный просмотр действительно темный, возможно, из-за вашего CaptureRequest.builder.Вы хотите управлять своей автоматической экспозицией, например, я объясню позже это ниже.
Во-первых, когда вы устанавливаете свою поверхность, вы должны установить ее так:
builder.addTarget(mImageReader.getSurface());
Теперь навопрос яркости, вы можете управлять своим AE следующим образом:
builder.set(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE,getRange());
где getRange ():
private Range<Integer> getRange() {
CameraCharacteristics chars = null;
try {
CameraManager manager = (CameraManager) ((Activity)getContext()).getSystemService(Context.CAMERA_SERVICE);
chars = manager.getCameraCharacteristics(mCameraId);
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;
}
}
}
if (result == null) {
result = ranges[0];
}
return result;
} catch (CameraAccessException e) {
e.printStackTrace();
return null;
}
}
mImageReader = ImageReader.newInstance(hardcoded_width, hardcoded_height, ImageFormat.YUV_420_888, 2);
mImageReader.setOnImageAvailableListener(mVideoCapture, mBackgroundHandler);
Если вы хотите узнать больше о настраиваемой яркости и т. д. Проверьте это