2010-04-09 38 views
20

Quiero crear una aplicación para Android que pueda escanear códigos de barras, obtener la información contenida en el código de barras y luego poder usar esa información de alguna manera.Android - ¿Escaneo de código de barras, opciones? Zxing?

que no tienen idea de cómo crear un escáner de código de barras, así que fui buscando en Google y parece ZXing es la forma más comúnmente utilizada para implementar un escáner de código de barras en una aplicación.

Algunos enlaces:


http://code.google.com/p/zxing/

http://awalkingcity.com/blog/2008/08/25/qr-codes-made-easy-in-android/

Using ZXing to create an android barcode scanning app


Sin embargo, las muestras que he encontrado en ZXing involucrada tener que pedir al usuario que ir al mercado e instalar el escáner de código de barras zxing para que mi aplicación pueda llamar al escáner de código de barras cuando sea necesario y el escáner de código de barras devolverá la información a mi aplicación.

Si bien este sería un buen punto de partida para mí, me preguntaba ¿hay alguna otra opción que me permita tener un escáner de código de barras incrustado en mi propia aplicación sin tener que pedirle al usuario que descargue una aplicación secundaria?

+0

posible duplicado de http://stackoverflow.com/questions/2050263/using-zxing-to-create-an-android-barcode-scanning-app –

+0

Prueba mi blog sobre esto, puede ayudar. http://mcondev.wordpress.com/2011/06/24/zxing-1-7-for-android-on-eclipse/ – Siddharth

+0

Solo un FYI - http://code.google.com/p/zxing tiene movido a https://github.com/zxing/zxing – Les

Respuesta

21

Desarrollador aquí. Creo que vas a querer simplemente integrar a través de Intent al final. Obtiene las mejoras, las correcciones de errores y las soluciones específicas de la plataforma de forma gratuita. También es mucho menos código. Pero entiendo que estás pidiendo una alternativa.

es probable que desee tira hacia abajo del escáner de código de barras (que nace en el androide/en el proyecto) y tira a todo lo que no es necesario. Eso significa que solo debe salir de los paquetes com.google.zxing.client.android y com.google.zxing.client.android.camera. La decodificación del núcleo está en DecodeThread, pero el otro código en estos paquetes implementa el pequeño baile de devolución de llamada que realiza el escaneo continuo y obtiene la interfaz de usuario de escaneo habitual.

Si incrusta el código que debe seguir los términos del Apache License.

+0

@ james-baca su edición de mi respuesta fue básicamente vandalismo y se ha revertido . Escriba su propia respuesta anunciando su servicio. –

+0

er, y con eso me refería al Servicio Google Play, que es una gran cosa. Point fue sobre sobrescribir la respuesta de otra persona en una edición. –

7

Descargar y extender la ZXing "Barcode Scanner" de la aplicación añadiendo su propio código. Está bajo una licencia Apache 2.0.

+0

¿Entonces, básicamente tomo el código fuente de Zxing y lo reescribo para hacer lo que quiero? –

+0

Esa sería mi recomendación. Probablemente podría simplemente incluir la fuente existente, invocarla y capturar el código de barras devuelto con bastante facilidad. Supongo que no tendrías que cambiar mucho el código en absoluto. –

2

Sugiero que uses Zxing a través de intentos y redirigir a la página de Android Market ("market://details?id=com.google.zxing.client.android") si no está allí (capturando ActivityNotFoundException). Los intentos son geniales para comunicaciones entre aplicaciones como esta.

+4

Sí, soy consciente de que puedo hacer eso, pero lo que quiero es alternativas a tener que pedirle a un usuario que instale una aplicación separada solo para escanear –

4

ver el nuevo Google Play Servicios 7.8 API que incluye el seguimiento de código de barras:

0

tengo que trabajar con esto:

repositories { mavenCentral() 
    maven { url "https://raw.github.com/embarkmobile/zxing-android-minimal/mvn-repo/maven-repository/" } 
} 

compile 'com.google.zxing:core:3.2.1' 
compile 'com.embarkmobile:zxing-android-minimal:[email protected]' 
compile 'com.embarkmobile:zxing-android-integration:[email protected]' 

recomiendo el uso de la IntentIntegrator

IntentIntegrator integrator = new IntentIntegrator(getActivity()); 
integrator.forSupportFragment(this).initiateScan(); 

El requestCode regresa con

IntentIntegrator.REQUEST_CODE 

No es necesario instalar un escáner separado

Cuestiones relacionadas