Android: orientación de la vista previa de la cámara en modo vertical

Estoy usando la cámara sólo para mostrar la vista previa (no para tomar fotos o grabar videos).

La aplicación está siempre en modo vertical (el modo horizontal está desactivado). La vista previa de la cámara siempre gira 90 grados ccw y no puedo cambiarla (ni con setDisplayOrientation ni con p.set("orientation", "portrait" ) y p.set("rotation", 90) ) .

¿Es la vista previa SIEMPRE girada de esta manera o es dependiente del dispositivo? Si siempre fue así en modo retrato, podría simplemente girar la imagen después.

¿O hay una manera de configurar la cámara correctamente? He leído un montón de temas sobre esto, pero ninguna respuesta funcionó para mí (Galaxy s2, Android v2.3)

2 Solutions collect form web for “Android: orientación de la vista previa de la cámara en modo vertical”

Para forzar la orientación vertical:

android:screenOrientation="portrait" en su AndroidManifest.xml y llame a camera.setDisplayOrientation(90); Antes de llamar a camera.startPreview();

No he probado en el GS2, pero funciona en todos los teléfonos en los que he probado.

Nota: setDisplayOrientation se agregó en el nivel 8 de la API

He codificado la aplicación sólo para el modo retrato.

 camera.setDisplayOrientation(90); 

Hará que la cámara gire a 90 grados y esto puede resultar en una orientación inadecuada para algunos dispositivos en android Para obtener la vista previa correcta de todos los dispositivos Android, utilice el siguiente código que se consulta en el sitio de desarrolladores.

Debajo tienes que enviar tu actividad, cameraId = back es 0 y para Front camera is 1

 public static void setCameraDisplayOrientation(Activity activity, int cameraId, android.hardware.Camera camera) { android.hardware.Camera.CameraInfo info = new android.hardware.Camera.CameraInfo(); android.hardware.Camera.getCameraInfo(cameraId, info); int rotation = activity.getWindowManager().getDefaultDisplay().getRotation(); int degrees = 0; switch (rotation) { case Surface.ROTATION_0: degrees = 0; break; case Surface.ROTATION_90: degrees = 90; break; case Surface.ROTATION_180: degrees = 180; break; case Surface.ROTATION_270: degrees = 270; break; } int result; //int currentapiVersion = android.os.Build.VERSION.SDK_INT; // do something for phones running an SDK before lollipop if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) { result = (info.orientation + degrees) % 360; result = (360 - result) % 360; // compensate the mirror } else { // back-facing result = (info.orientation - degrees + 360) % 360; } camera.setDisplayOrientation(result); } 

Esta es la forma de establecer el setDisplayOrientation para la cámara que perfectamente para todos los dispositivos Android.

  • Android: gira el lienzo alrededor del centro de la pantalla
  • Android Instrumentación Botón HOME
  • ¿La imagen resultante de la cámara Android debe girarse después de la captura?
  • Imagen fuera de límites después de la transformación en la vista
  • Android: screenOrientation = "sensorPortrait" no funciona en API +17
  • Android lo que debe ser punto de pivote para girar la imagen alrededor de su centro de la base
  • OnCreate no se llama cuando la pantalla gira - Android
  • Android: Obtener rotación EXIF ​​desde URI
  • Cómo aumentar la velocidad de rotación en android?
  • Aplicar una animación a varias vistas al mismo tiempo
  • Rajawali cámara giratoria con Sensor.TYPE_ROTATION_VECTOR comportamiento extraño
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.