Hacer un Lector de codigos QR usando Zxing

Estoy de vuelta volviendo a publicar sobre android y en esta ocacion les quiero mostrar como hacer un lector de codigos QR usando la libreria mas famosa para esto Zxing http://code.google.com/p/zxing/

Bueno antes de empezar con el tutorial les quiero comentar que hay de 2 formas de usar Zxing en android

1) via Intent

Se necesita tener instalada el lector de codigos QR de Zxing
https://market.android.com/details?id=com.google.zxing.client.android lo que haria que nuestra app dependiera de esta otra .

sin embargo si quieren hacerlo asi lo que deben hacer es lo siguiente .

// Esto puede ir en el boton Escanear de su app

Intent intent = new Intent(«com.google.zxing.client.android.SCAN»);
intent.putExtra(«SCAN_MODE», «QR_CODE_MODE»);
startActivityForResult(intent, 0);

para obtener el resultado del escaneo debemos sobre escribir el metodo onActivityResult y dejarlo asi

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
String contents = intent.getStringExtra(«SCAN_RESULT»);
String format = intent.getStringExtra(«SCAN_RESULT_FORMAT»);

} else if (resultCode == RESULT_CANCELED) {
// Handle cancel
}
}
}

listo podremos escanear codigos desde nuestra app pero como les dije arriba dependeriamos de la aplicacion de Zxing .

2) la otra es hacer uso de del codigo fuente de la libreria dentro de nuestra aplicacion , claro hay que darle el credito a Zxing por publicar sus fuentes con Apache 2.

los primero que debemos hacer es compilar el nucleo (core)  de la libreria para lo cual nos basaremos en la guia de @condesa_sama que esta bien explicado ademas explica como leer qrcodes via intent como hice yo en la parte 1.
http://androideity.com/2011/11/23/trabajar-con-codigos-qr-en-tus-aplicaciones-android/

luego de eso lo que tenemos que hacer es modificar el manifiest de nuestra aplicacion agregando lo siguiente

<activity android:name=»com.google.zxing.client.android.CaptureActivity»
android:screenOrientation=»landscape»
android:configChanges=»orientation|keyboardHidden»
android:theme=»@android:style/Theme.NoTitleBar.Fullscreen»
android:windowSoftInputMode=»stateAlwaysHidden»>
<intent-filter>
<action android:name=»android.intent.action.MAIN»/>
<category android:name=»android.intent.category.DEFAULT»/>
</intent-filter>
<intent-filter>
<action android:name=»com.google.zxing.client.android.SCAN»/>
<category android:name=»android.intent.category.DEFAULT»/>
</intent-filter>
</activity>

ademas de agregar el permiso de la camara

<uses-permission android:name=»android.permission.CAMERA»>

Deja una respuesta