Народ, хелп
Создаю свою камеру, все работает, кроме одного, при создании снимка - сохраняется он в обратной ориентации, т.е. при вертикальной - горизонтальный снимок получается, а при горизонтальной - вертикальный. Кто знает, как это лечится, хэлп, все способы из сети уже перепробовал, не помогает :с
вот часть кода, которая должна была решить проблему с ориентацией:
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private void setupCamera(String cameraId) {
CameraManager cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
try {
CameraCharacteristics cameraCharacteristics = cameraManager.getCameraCharacteristics(cameraId);
StreamConfigurationMap map = cameraCharacteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
//TODO ORIENTATION OF PICTURES
iCaptureRequestBuilder.addTarget(iImageReader.getSurface());
iCaptureRequestBuilder.set(CaptureRequest.JPEG_ORIENTATION, getJpegOrientation(cameraCharacteristics));
Size largestImageSize = Collections.max(Arrays.asList(map.getOutputSizes(ImageFormat.JPEG)), new Comparator<Size>() {
@Override
public int compare(Size lhs, Size rhs) {
return Long.signum(lhs.getWidth() * lhs.getHeight() - rhs.getWidth() * rhs.getHeight());
}
});
iImageReader = ImageReader.newInstance(largestImageSize.getWidth(), largestImageSize.getHeight(), ImageFormat.JPEG, 1);
iImageReader.setOnImageAvailableListener(iOnImageAvailableListener, iBackgroundHandler);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private int getJpegOrientation(CameraCharacteristics c) {
int deviceOrientation = this.getWindowManager().getDefaultDisplay().getRotation();
int sensorOrientation = c.get(CameraCharacteristics.SENSOR_ORIENTATION);
int surfaceRotation = ORIENTATIONS.get(deviceOrientation);
int jpegOrientation = (surfaceRotation + sensorOrientation + 270) % 360;
return jpegOrientation;
}