2011-04-04 16 views
6

Estoy construyendo una aplicación para leer códigos de barras de vin utilizando la cámara del teléfono Android. No sé cómo leer los códigos de barras de la imagen capturada de la cámara. (Ie) ¿Hay alguna clase para leer el código de barras del formato de número de vin? . He intentado usar zxing y otras librerías para mí. Gracias¿Hay alguna biblioteca de Java para leer los códigos de barras del número vin de la imagen?

Nota: He intentado buscar en DDG.gg y Stackoverflow pero no hay una solución adecuada.

Respuesta

2

According to this thread on google code, zxing debería serlo. Dicen que el problema podría estar relacionado con la resolución de la cámara. Y mencionan el "escáner VIN auqoniq", que parece ser una aplicación para Android basada en zxing.

1

Acabo de integrar zxing en mi aplicación como una biblioteca, y obtuve mi aplicación para escanear y decodificar correctamente un VIN. Incluso cambié la máscara para ampliar el área de escaneo disponible.

El problema es definitivamente la resolución de la cámara. Escaneo grande y claro de VINS sin problemas. Dingy VINS no.

Estoy haciendo que mi campo VIN esté disponible para la entrada manual si no escanea. Recuerde ejecutar un método de dígito de verificación para asegurarse de que sea un VIN válido.

encontré uno me permite usar aquí: http://introcs.cs.princeton.edu/java/31datatype/VIN.java.html

1

he utilizado con éxito el código fuente de ZXing para decodificar cadenas de VIN válidos y cadenas de codificación de VIN de nuevo en los códigos de barras a través de la intención (con un poco de ayuda).

Aquí está la clave -

  1. integrar su código fuente ZXing como una biblioteca. Aquí está el enlace paso a paso:

    http://damianflannery.wordpress.com/2011/06/13/integrate-zxing-barcode-scanner-into-your-android-app-natively-using-eclipse/

    Nota, también hay una buena discusión aquí por qué esto no debe hacerse desde el punto de vista de un desarrollador, pero el código es libre de abrir-uso y tenemos que modificarlo de una manera que actualmente no se puede hacer por intención. Entonces continuamos.

  2. En su proyecto, llame a zxing a través de la intención (tal como lo recomiendan); Especificar intent.putExtra("SCAN_MODE","ONE_D_MODE");

    De hecho, he tenido que trabajar en ambos sentidos (con y sin esta línea) pero depende de usted si ve mejores resultados, incluidos. Normalmente obtengo un VIN para escanear en menos de 1/4 de segundo de enfoque una vez que está en el fotograma.

  3. La resolución de vista previa es importante, ya que la vista previa de la cámara envía fotogramas al decodificador para buscar un código de barras válido.

    así que ... en CameraConfigurationManager.java, especifique un MAX_PREVIEW_PIXELS más grande (que no exceda la resolución de su pantalla). Usé "1024 * 600" - la resolución de mi dispositivo. Esto puede requerir algunos ajustes.

  4. en CameraManager.java, editar su rectángulo de encuadre para ampliar el tamaño del código de barras más grandes, a través de private static final int MAX_FRAME_WIDTH = screenpixelsinteger;, la mía es 1000.

  5. en public Rect getFramingRect() {, editar int width ser = screenResolution.x * 1 (o * nothing), en vez de * 3/4.Esto ampliará el rectángulo de encuadre para que sea tan ancho como la resolución de pantalla, pero no más ancho que MAX_FRAME_WIDTH especificado anteriormente (se sujetará si el MFW es más bajo).

Finalmente, SCAN!

No creo que haya editado ninguna otra variable, pero si encuentro que lo hice para que funcione, actualizaré esta respuesta.

Cuestiones relacionadas