Android + biblioteca de escaneo de códigos de barras ZXing – tamaño personalizado y orientación

He logrado utilizar la biblioteca de escaneo de códigos de barras de ZXing, pero sólo en modo horizontal.

También he logrado establecer la vista previa de la cámara para estar en modo retrato y mostrarlo correctamente (sin estirar), pero ahora el código de barras no funciona en absoluto. Aquí están los cambios que he hecho en "setDesiredCameraParameters" en "CameraConfigurationManager.java" para mostrar la cámara correctamente:

void setDesiredCameraParameters(Camera camera) { Camera.Parameters parameters = camera.getParameters(); Log.d(TAG, "Setting preview size: " + cameraResolution); setFlash(parameters); setZoom(parameters); camera.setDisplayOrientation(90); parameters.set("rotation", 90); parameters.setPreviewSize(cameraResolution.y, cameraResolution.x); camera.setParameters(parameters); } 

He probado algunas soluciones mencionadas en otros lugares, pero o no funcionan, o funcionan, pero no se puede mostrar la vista previa de la cámara correctamente. Ejemplos: ¿Cómo usar Zxing en modo retrato? Http://code.google.com/p/zxing/issues/detail?id=178#c46 https://github.com/pplante/zxing-android/issues

Cuando estoy terminado con eso, también necesito personalizar la ubicación y el tamaño del rectángulo a la exploración. Sé que tengo que cambiar "setManualFramingRect" en "CameraManager.java", pero no estoy seguro si lo hago correctamente. Aquí está el código para eso:

 public void setManualFramingRect(Rect rect) { if (initialized) { Point screenResolution = configManager.getScreenResolution(); if (rect.right >= screenResolution.x) rect.right = screenResolution.x - 1; if (rect.left < 0) rect.left = 0; if (rect.bottom >= screenResolution.y) rect.bottom = screenResolution.y - 1; if (rect.top < 0) rect.top = 0; framingRect = rect; Log.d(TAG, "Calculated manual framing rect: " + framingRect); framingRectInPreview = null; } else _requestedFramingRect = new Rect(rect); } 

Por supuesto, he cambiado "openDriver" para llamar:

 if (_requestedFramingRect != null) setManualFramingRect(_requestedFramingRect); 

por favor, ayúdame.


EDIT: ahora he descubierto que no funciona en algunos dispositivos. Se bloquea al principio, y si depura, puede ver que incluso la vista previa no funciona bien.

Hay más que esto. Por ejemplo, necesita realmente "rotar" los datos de la cámara (o, escanear como si fuera vertical) cuando la orientación de la cámara no es la misma que la orientación del dispositivo. Y cuando se utiliza una cámara frontal, es necesario tener en cuenta el hecho de que su rotación se invierte.

  • Android con ZXing genera código QR
  • Actualizar sdk tiene NoClassDefFoundError para zxing
  • Android: El código QR generado que usa Zxing tiene márgenes (no es apropiado para el área)
  • Cómo agregar un logotipo al código QR en android
  • Uso de zxing Barcode Scanner dentro de una página web
  • Incorporación de ZXing en la aplicación de Android
  • PhoneGap BarcodeScanner - ClassNotFound
  • Utilizar la biblioteca de Zxing en PreviewFrame para aumentar la realidad
  • Cámara Android centrada sólo una vez
  • Escáner QR con ZXing y ZBar no lee códigos de baja calidad en las tarjetas
  • Orientación de Android zxing: ResultMetaData es null, Get Rotation / Orientation
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.