El pasado mes de enero, los integrantes de EASE tuvimos un “naked sprint«. Eso significa que durante un sprint los equipos de desarrollo nos encargamos de proponer soluciones que pudiesen hacer crecer al producto en alguna línea, usando nuestra imaginación y conocimiento de la plataforma. Esto se podía conseguir incorporando nueva funcionalidad al proyecto que no estuviera planificada, realizando pruebas de concepto de ideas novedosas, etc.
En esta ocasión, una de las ideas que desarrollamos requería la lectura de códigos QR. Para incorporar esta operación de un forma rápida y sencilla en un prototipo utilizamos la librería zxing (https://github.com/zxing/zxing/). Con ella, realmente lo que hacemos es abrir una aplicación (o nos redirigirá al Google Play si no está instalada) que nos devolverá el código leído.
Su integración consiste en añadir dos clases nuevas al proyecto (IntentResult (https://github.com/zxing/zxing/blob/master/android-integration/src/main/…) y IntentIntegrator (https://github.com/zxing/zxing/blob/master/android-integration/src/main/java/com/google/zxing/integration/android/IntentIntegrator.java)) y, desde el código, añadir estas líneas cuando quieras escanear el código (abrir la apliación lectora):
IntentIntegrator intent = new IntentIntegrator(activity);
intent.initiateScan();
Para obtener el código leído, haremos lo siguiente en la actividad que contiene la llamada anterior:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
...
if (resultCode == RESULT_OK) {
String code = data.getStringExtra("SCAN_RESULT");
...
And… that’s it!