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:
- Escáner de código de barras ZXing en diseño personalizado en fragmento
- Java.util.zip.ZipException: entrada duplicada
- ¿Cómo iniciar una actividad con un Intent y pasar una variable en la nueva actividad?
- Zxing usando diseño personalizado
- Uso de zxing Barcode Scanner dentro de una página web
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.
- ¿Cómo integrar ZXing Library a Android Studio para escanear códigos de barras?
- Escaneo de códigos de barras / código de barras de ZXing QR
- Problema en la generación de eventos de calendario utilizando zxing
- ¿Cómo abrir la pantalla de escaneo "zxing Barcode" en una pequeña ventana?
- ¿Puedo usar Zxing para fines comerciales?
- Incorporación de ZXing en la aplicación de Android
- ZXing Android Generar código de barras 1D
- Android: ClassNotFoundException mientras incluye ZXing
One Solution collect form web for “Android + biblioteca de escaneo de códigos de barras ZXing – tamaño personalizado y orientación”
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.
- Cámara de bloqueo de aplicaciones de Android
- El tamaño de imagen de Android cambia después de la devolución de llamada de la cámara