Android Camera2 API JPEG_QUALITY no disponible

Estoy tratando de trabajar en mi Nexus 5x con androide Camera2 APIs y estoy usando googlesamples android-Camera2Basic

Mi problema es que las imágenes JPEG tienen una calidad demasiado baja y su tamaño es mucho más pequeño que las imágenes normales que estoy tomando con mi aplicación de cámara de teléfono.

De acuerdo con los documentos de google debe haber una clave JPEG_QUALITY tanto en CaptureRequest como en CaptureResult:

CALIDAD JPEG

Añadido en API nivel 21

Clave JPEG_QUALITY

Calidad de compresión de la imagen JPEG final.

85-95 es el rango de uso típico.

Rango de valores válidos:

1-100; mayor es mayor calidad

Esta tecla está disponible en todos los dispositivos.

Sin embargo, cuando solicito las claves disponibles, la clave JPEG_QUALITY no está disponible, así que no sé cómo saber cuál es mi calidad de compresión JPEG actual y cómo puedo cambiarla.

El código que hice dentro:

 CameraCaptureSession.CaptureCallback CaptureCallback = new CameraCaptureSession.CaptureCallback() { @Override public void onCaptureCompleted(@NonNull CameraCaptureSession session, @NonNull CaptureRequest request, @NonNull TotalCaptureResult result) { //_TEST_DEBUG List<CaptureRequest.Key<?>> requestKeys = request.getKeys(); List<CaptureResult.Key<?>> resultKeys = result.getKeys(); 

requestKeys y resultKeys tienen muchas claves incluyendo JPEG_ORIENTATION pero no la clave JPEG_QUALITY .

¿Alguna idea de lo que estoy haciendo mal? ¿Por qué no puedo encontrar la forma de cambiar la calidad de la compresión JPEG ?

Gracias amigo

Logré aumentar la calidad de JPEG, agregándolo como una clave para el CaptureRequest.Builder en el googlesamples android-Camera2Basic con un Tesco Hudl 2 Tablet en Android 5.1 Lollipop.

La calidad JPEG se establece en el método captureStillPicture () en el Camer2BasicFragment así:

  // This is the CaptureRequest.Builder that we use to take a picture. final CaptureRequest.Builder captureBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE); captureBuilder.addTarget(mImageReader.getSurface()); //Set the JPEG quality here like so captureBuilder.set(CaptureRequest.JPEG_QUALITY, (byte)90); 

Espero que esto ayude.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.