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.
- Llamar escáner de código de barras en un clic de botón en la aplicación android
- Cámara Android centrada sólo una vez
- Escáner de código de barras ZXing para Webapps
- Lanzamiento de un fragmento después de ZXing 2.0 QR-Code Scan
- Android: ClassNotFoundException mientras incluye ZXing
Nexus 5X
Dispositivo Android 6.0
- Crear / Generar código de barras usando Zxing en Android
- Cómo codificar una cadena en un código QR usando zxing en Android?
- Agregue el proyecto android de ZXing como biblioteca en android studio
- Cómo obtener un error de cámara en la aplicación de código de barras de Zxing
- Java.util.zip.ZipException: entrada duplicada
- Problema en la generación de eventos de calendario utilizando zxing
- Android Genera código QR y código de barras usando Zxing
- ¿Cómo integrar ZXing Library a Android Studio para escanear códigos de barras?
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.