Я делаю приложение для камеры Android.Я сомневаюсь, как передать поддерживаемые разрешения в качестве параметров на камеру.
Итак, сначала я получаю все поддерживаемые размеры разрешения:
Size[] sizes = configurationMap.getOutputSizes(ImageFormat.YUV_420_888);
Log.d("test","size:"+sizes.length);
for(Size size : sizes){
Log.d("test", "width: " + size.getWidth() + " height" + size.getHeight());
}
Затем я настраиваювход с одним из этих размеров.
InputConfiguration inputConfiguration = new InputConfiguration(1920, 1080, ImageFormat.YUV_420_888);
Я передаю этот вход в сеанс захвата
cameraDevice.createReprocessableCaptureSession(inputConfiguration, Arrays.asList(previewSurface), new CameraCaptureSession.StateCallback() {
@Override
public void onConfigured(@NonNull CameraCaptureSession cameraCaptureSession) {
try {
cameraCaptureSession.setRepeatingRequest(mCaptureRequestBuilder.build(), null, handler);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
@Override
public void onConfigureFailed(@NonNull CameraCaptureSession cameraCaptureSession) {
Toast.makeText(getApplicationContext(),"Camera Preview Failed!!",Toast.LENGTH_SHORT).show();
}
}, null);
И я также получаю
java.lang.IllegalArgumentException: input size 1920x1080 is not valid
ошибка, хотя этот размер поддерживается на моей камере телефона (из результата отладки getOutputSizes()
).
Итак, мой вопрос о моем подходе и где я ошибаюсь.