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:

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; } }); } 

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 
  • Foco continuo de la cámara Android
  • Android Camera - ¿Cómo puedo tomar un "rectángulo" específico de la matriz de bytes?
  • En actividad resultado cámara intención devolución null en samsung s4
  • Compatibilidad con la versión de la API de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.