La cámara AF_TRIGGER_START no inicia el enfoque enTouch
Tengo una aplicación de cámara usando camera2 Api, implementé onTouchListener al TextureView que uso para previsualizar desde la cámara, lo que quiero es cuando un usuario toque la pantalla para poder centrarse en esa área exactamente como la construida en la cámara Android. No sé lo que está yendo mal, funciona cuando uso AF_MODE_AUTO pero no es preciso, se centra sólo lo que está en el centro de la pantalla.
Aquí está mi código:
- Autofocus de la cámara Android cuando el usuario mantiene la cámara inmóvil
- Android Camera.autoFocus y FOCUS_MODE_CONTINUOUS_PICTURE
- Muchas imágenes enfocadas con una centrada en android?
- MediaStore.EXTRA_OUTPUT hace que los datos sean nulos, otra forma de guardar fotos?
- Obtenga uri de la intención de la cámara en android
mTextureView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction() & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: Rect rect = cameraCharacteristics .get(CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE); Size size = cameraCharacteristics .get(CameraCharacteristics.SENSOR_INFO_PIXEL_ARRAY_SIZE); int areaSize = 200; int right = rect.right; int bottom = rect.bottom; int viewWidth = mTextureView.getWidth(); int viewHeight = mTextureView.getHeight(); int ll, rr; Rect newRect; int centerX = (int) event.getX(); int centerY = (int) event.getY(); ll = ((centerX * right) - areaSize) / viewWidth; rr = ((centerY * bottom) - areaSize) / viewHeight; int focusLeft = clamp(ll, 0, right); int focusBottom = clamp(rr, 0, bottom); newRect = new Rect(focusLeft, focusBottom, focusLeft + areaSize, focusBottom + areaSize); MeteringRectangle meteringRectangle = new MeteringRectangle( newRect, 500); MeteringRectangle[] meteringRectangleArr = { meteringRectangle }; System.out.println("metering rectARR" + meteringRectangleArr); mPreviewCaptureRequestBuilder.set( CaptureRequest.CONTROL_AF_TRIGGER, CameraMetadata.CONTROL_AF_TRIGGER_CANCEL); mPreviewCaptureRequestBuilder.set( CaptureRequest.CONTROL_AF_REGIONS, meteringRectangleArr); mPreviewCaptureRequestBuilder.set( CaptureRequest.CONTROL_AF_TRIGGER, CameraMetadata.CONTROL_AF_TRIGGER_START); try { mCameraCaptureSession.setRepeatingRequest( mPreviewCaptureRequest, mSessionCaptureCallback, mBackgroundHandler); } catch (CameraAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } break; } return true; } }); }
- Uso de la cámara en el paisaje cuando mi aplicación está en el retrato
- La intención de la cámara Android devuelve nulo ... a veces
- Android se estrella después de la cámara
- Android: ¿La Vista de Galería ha quedado obsoleta?
- Android: Tome la fotografía de la cámara sin "guardar" / "eliminar" la confirmación
- Android 4 - El equilibrio de blanco de la cámara se detiene después del autofoco
- ¿Cómo llamar a una cámara con la intención de tener la grabación, así como la captura de imágenes?
- Android: ¿Comprobar si la cámara admite el enfoque automático?
Yo forma ramificada google de Camera2Basic ejemplo y lo cambió a utilizar CaptureRequest.CONTROL_AF_MODE_AUTO
lugar de CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE
Usted puede tomar el proyecto de git y probarlo – https://github.com/pinhassi/android-Camera2Basic
Necesita llamar a CaptureSession.capture(mPreviewCaptureRequestBuilder.build(),mCallback,mHandler)
después de establecer el CONTROL_AF_TRIGGER_CANCEL en el CaptureRequest.Builder
mPreviewCaptureRequestBuilder.set( CaptureRequest.CONTROL_AF_TRIGGER, CameraMetadata.CONTROL_AF_TRIGGER_CANCEL); //TODO call capture //TODO set new focus region //TODO call capture/setRepeatingRequest
- Spring RestTemplate: publicar una imagen y un objeto al mismo tiempo
- Intención no recibida del evento Android Geofence