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»>