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.

  • Fragmentos de Android que conservan datos
  • Después de girar una línea lineal, los eventos onclick no cambian de posición después de la rotación
  • Rotar diseño de trama que contiene botones dinámicos
  • La aplicación que utiliza libgdx se reinicia siempre que el dispositivo gira
  • Perder datos al girar la pantalla
  • Cómo girar un icono de Android en su punto central?
  • Desactivar la rotación automática en fragmento
  • Cómo evitar que toda la pantalla de actividad de rotación en android
  • -webkit-transform no funciona en la vista web de Android
  • OCR (tesseract), rotación inteligente para la imagen
  • La forma más simple de rotar correctamente MapView en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.