Invertir imagen en Nexus 5x en modo vertical

He estado trabajando en un proyecto antiguo con una versión desactualizada de la biblioteca Zxing que necesitaba actualizarse para corregir el error de imagen inversa en el Nexus 5x . Me las arreglé para actualizar la biblioteca, pero sólo el modo retrato debe ser compatible.

if (orientation == Configuration.ORIENTATION_LANDSCAPE) { source = activity.getCameraManager().buildLuminanceSource(data, width, height); } else { byte[] rotatedData = new byte[data.length]; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) rotatedData[x * height + height - y - 1] = data[x + y * width]; } int tmp = width; width = height; height = tmp; data = rotatedData; source = activity.getCameraManager().buildLuminanceSource(data, width, height); } 

Ahora me enfrento a un problema de descodificación del código de barras en nuestro dispositivo Nexus 5X, donde nuestro código de barras EAN-13 parece girar como se puede ver en las imágenes de abajo.

Nexus 5X

Nexus 5X

Dispositivo Android 6.0

Dispositivo Android 6.0

Eso es un problema conocido, que se informa en el rastreador .

Estado: No arreglará (comportamiento previsto)

La cámara principal del Nexus 5X tiene una orientación inusual – según los requisitos de compatibilidad con Android, el borde largo del sensor tiene que alinearse con el borde largo del dispositivo, lo que significa que el sensor está orientado hacia el paisaje o hacia atrás. La mayoría de los dispositivos Android tienen un sensor orientado al paisaje, pero el 5X es reverso-paisaje.

Dado que la mayoría de los dispositivos son idénticos, muchas aplicaciones no comprueban correctamente la orientación del sensor y aplican los ajustes correctos. Si más o menos copia y pega el código de ejemplo aquí:

http://developer.android.com/reference/android/hardware/Camera.html#setDisplayOrientation(int)

Para la API de cámara antigua, debe establecer la orientación correcta para todos los tipos de dispositivos (teléfonos y tabletas), orientaciones del sensor y revestimientos de la cámara (frontal o posterior).

Como se ha mencionado, la orientación JPEG también debe establecerse, pero esto siempre ha sido un requisito, por lo que hay menos aplicaciones que se equivocan (ya que los teléfonos suelen mantenerse orientados al azar incluso si la interfaz de usuario es forzada).

La cámara2 API es intencionalmente más fácil de usar aquí – si utiliza un SurfaceView, la API asegura que la vista previa esté orientada correctamente. Por desgracia no podemos arreglar el API antiguo para hacer esto por usted.

Básicamente, si utiliza Camera2 API no debería ver ese comportamiento.

  • Agregar menú a ZXings barcodescanner, y apretar la vista de superficie
  • Integre ZXing en Android Studio
  • Lectura de códigos de barras Delphi xe7, evento después de la intención que no desencadena
  • ¿Cómo abrir la pantalla de escaneo "zxing Barcode" en una pequeña ventana?
  • ¿Cómo iniciar una actividad con un Intent y pasar una variable en la nueva actividad?
  • Cómo leer varios códigos qr de una imagen usando la biblioteca zxing
  • EXCEPCIÓN INESPERADA DE SUPERIOR NIVEL: com.android.dex.DexException
  • Bloquee la orientación de la pantalla a la vertical al escanear con la librería Zxing, la aplicación Xamarin.android.
  • Alternativa a la biblioteca de lectores QR de zxing para Java / Android?
  • Android: El código QR generado que usa Zxing tiene márgenes (no es apropiado para el área)
  • Cómo importar la biblioteca ZXING en la aplicación Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.