2011-12-14 5 views
5

Google Zxing espera una imagen. ¿Puede alguien indicarme cómo hacer que funcione de forma limpia para el escaneado en vivo (es decir, el usuario señala el dispositivo con un código QR y el escaneo ocurre, el usuario no tiene que tomar una imagen)? Me he encontrado con los dos aspectos siguientes:Cómo escanear un código QR en modo directo en Blackberry OS 5

  1. Algunos hilos sugiere utilizar una inyección de temporizador y eventos para tomar continuamente imágenes - pero este enfoque pueden incurrir en demasiada sobrecarga en el dispositivo
  2. Algunos han sugerido otros hilos ese escaneo en vivo solo es posible desde OS 6 y superior ya que RIM no expone esas API en las versiones del sistema operativo por debajo de 6, pero no puedo encontrar ninguna declaración oficial a este efecto.

¿Aparte de Zxing hay otras bibliotecas para lograr lo mismo para BB OS 5?

Gracias de antemano

+0

zxing no espera una imagen per se, es una biblioteca central para escanear. Depende de la aplicación/plataforma proporcionar una transmisión de video, o no. La versión anterior de BBOS no tenía forma de obtener una fuente de vista previa. –

+0

@SeanOwen - técnicamente, afaik, zxing espera un mapa de bits (¡puedes ver la clase LuminanceSource)! Entonces, ¡uno podría tomar cuadros de un video y procesarlos! Desafortunadamente, eso no es posible OS 5 y abajo! –

+0

De acuerdo. (Soy el autor.) Su publicación pareció sugerir que la biblioteca requiere que la fuente sea un archivo de imagen; no importa. Si tiene marcos de una alimentación de video, se puede hacer que funcione a través de LuminanceSource. –

Respuesta

4

This library allows you to do live scanning on OS5. Funciona como una interfaz para la biblioteca ZXing.

Tenga en cuenta, sin embargo, que en los dispositivos OS5 FocusControl no está implementado por completo, por lo que escanear los códigos de barras de cerca será problemático. La solución consiste en utilizar VideoControl.getSnapshot(), que es la única forma de forzar la cámara para enfocar.

+1

La biblioteca funciona perfecto @donturner! ¡Gracias! Sin embargo, debo señalar que esta biblioteca utiliza una versión modificada del primer enfoque que he enumerado: captura captura de pantalla periódicamente (cada 2 segundos) y la procesa para código QR. No suena como un gran enfoque, pero supongo que para OS 5 y las siguientes, no hay otras opciones :( –

1

Para utilizar la función de "análisis en vivo" necesita utilizar la API de código de barras, que es una capa encima de ZX solo disponible en OS 6.0.

Here tiene la versión oficial de Barcode API. En 5.0, deberá implementar un mecanismo personalizado basado en VideoControl. Para implementar una solución alternativa, puede tomar instantáneas periódicamente e intentar decodificarlas, o capturar marcos de alguna manera a partir de la transmisión de video.
Como dice la otra respuesta, en dispositivos sin autofocus, el FocusControl no funcionará. En este caso, le sugiero que aplique un poco de zoom (usando la clase ZoomControl). Esto obliga al usuario a alejar la mora del QRCode para poder verla en la pantalla, lo que aumenta la definición de la imagen capturada, lo que a su vez aumenta las posibilidades de detectar un código de barras.

+0

Eso no es estrictamente cierto, puede hacer "escaneo en vivo" al intentar decodificar periódicamente el video de entrada. con esto en OS5 es que no tienes control sobre el foco así que si el código está cerca de la cámara estarás decodificando una imagen borrosa. – donturner

+0

Y solo para aclarar, muchos dispositivos OS5 ** no ** tienen la función de enfoque automático en el hardware de su cámara, pero la API OS5 no permite el acceso. – donturner

+0

@donturner Tienes razón sobre las instantáneas. Y sobre el enfoque, he usado FocusControl en 5.0 configurado en 'FocusControl.AUTO', funciona si su dispositivo tiene capacidad de enfoque automático.Nunca lo intenté con un nivel de enfoque arbitrario. Para solucionar la borrosidad en distancias cortas, puede establecer el zoom al nivel máximo con 'ZoomControl'. En realidad, eso es lo que hace la pantalla de exploración en vivo en Barcode API. –

Cuestiones relacionadas