Cámara Android2 Tamaños de salida

He probado la nueva API de Camera2 en Android Lollipop. Quiero obtener el tamaño de vista previa compatible:

StreamConfigurationMap streamConfigurationMap = cameraCharacteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP); Size[] sizes = streamConfigurationMap.getOutputSizes(SurfaceTexture.class); 

Y el tamaño máximo de vista previa es 1440x1080px en Samsung Galaxy Tab S que tiene una resolución de 2560x1600px. Así que mi previewSize es 1440x1080px y el tamaño de la superficie TextureView es de 2560x1600px por lo que la imagen está distorsionada.

He probado la antigua cámara API que está obsoleto.

 Camera.Parameters parameters = camera.getParameters(); List<Camera.Size> sizes = parameters.getSupportedPictureSizes(); 

Y el código anterior devuelve 32 combinaciones varius de tamaño de vista previa tales como: 2560x1920 , 1920x1080 , 1080x1920 , 2560x2560 etc En ese caso, puedo elegir el tamaño óptimo y mostrar la imagen correcta.

No sé cómo forzar a la nueva API para obtener un tamaño óptimo. Sé que la solución es cambiar el tamaño de la vista que muestra la vista previa, pero la cámara incorporada funciona en modo de pantalla completa correctamente. Gracias de antemano por todas las sugerencias!

reemplazar

 Size[] sizes = streamConfigurationMap.getOutputSizes(SurfaceTexture.class); 

a

 Size[] sizes = streamConfigurationMap.getOutputSizes(ImageFormat.JPEG) 
 private static Size chooseOptimalSize(Size[] choices, int width, int height, Size aspectRatio) { // Collect the supported resolutions that are at least as big as the preview Surface List<Size> bigEnough = new ArrayList<>(); int w = aspectRatio.getWidth(); int h = aspectRatio.getHeight(); for (Size option : choices) { if (option.getHeight() == option.getWidth() * h / w && option.getWidth() >= width && option.getHeight() >= height) { bigEnough.add(option); } } // Pick the smallest of those, assuming we found any if (bigEnough.size() > 0) { Size size = Collections.min(bigEnough, new CompareSizesByArea()); cameraHeight = size.getHeight(); cameraWidth = size.getWidth(); return Collections.min(bigEnough, new CompareSizesByArea()); } else { Log.e(TAG, "Couldn't find any suitable preview size"); return choices[0]; } } 
  • Imágenes verdes al hacer una codificación JPEG desde YUV_420_888 utilizando la nueva cámara Android2 api
  • Android cómo hacer referencia a una nueva clase de la Ripple RippleDrawable
  • ArrayIndexOutOfBoundsException al mostrar Toast en android lollipop
  • La ondulación se dibuja a continuación ImageView
  • Android Support Design TabLayout: Centro de Gravedad y Modo Scrollable
  • RippleDrawable máscara de color, ¿para qué sirve?
  • Enfocar lento en Nexus 6 con cámara2 API
  • ¿Cómo bloquear / desbloquear la pantalla con el modo Patrón / Contraseña en Android?
  • Android Development Tool 23.0.0 y Android L Error de actualización en eclipse
  • Forma de diseño de material para Android
  • Crear una ondulación dibujable sin transparencia
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.