En este post desarrollaremos una aplicación que nos permitirá leer un código QR y capturar la información que contiene y que es la que nos interesa.
Necesitamos
– IDE Eclipse con android SDK instalado
– Librería android-integration-1.7.jar
– Aplicación Barcode Scanner instalado en tu celular
Tiempo: 10 minutos
Nivel: Intermedio
Tutorial
Paso 1. El proyecto
Crea un proyecto Android en Eclipse, se llamara «QRScanCode«, deja como esta el MainActivity que se crea por defecto.
Añade la librería «android-integration-1.7.jar» al proyecto android, puedes descargar la librería en este enlace.
Paso 2. La interfaz
El archivo activity_main.xml estará compuesto por un button y un textview, el código es el siguiente:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <Button android:id="@+id/btnScan" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/txt_scan" /> <TextView android:id="@+id/tvResult" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
Hacemos uso de un String «txt_scan» para el contenido del botón, su valor es «Comenzar a escanear»
Paso 3. El código
La clase «MainActivity» tendrá el siguiente código:
import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.TextView; // import zxing import com.google.zxing.integration.android.IntentIntegrator; import com.google.zxing.integration.android.IntentResult; public class MainActivity extends Activity { private Button btnScan; private TextView tvResult; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //------------------------ btnScan = (Button) findViewById(R.id.btnScan); tvResult = (TextView) findViewById(R.id.tvResult); //evento cuando se presiona el boton btnScan.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //se inicia el barcode Scanner IntentIntegrator.initiateScan(MainActivity.this); } }); //------------------------ }//end: onCreate /** * Cuando termina de leer el código QR muestra el resultado en el textview * @param requestCode The integer request code originally supplied to startActivityForResult(), allowing you to identify who this result came from. * @param resultCode The integer result code returned by the child activity through its setResult(). * @param data An Intent, which can return result data to the caller (various data can be attached to Intent "extras"). * */ public void onActivityResult(int requestCode, int resultCode, Intent data) { IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); if ( scanResult != null ) { String contentData = "SCAN_RESULT: " + data.getStringExtra("SCAN_RESULT") + "\n"; contentData += "SCAN_RESULT_FORMAT: " + data.getStringExtra("SCAN_RESULT_FORMAT") + "\n"; byte[] rawBytes = data.getByteArrayExtra("SCAN_RESULT_BYTES"); contentData += "SCAN_RESULT_BYTES: " + ( rawBytes == null ? 0 : rawBytes.length ) + "\n"; contentData += "SCAN_RESULT_ERROR_CORRECTION_LEVEL: " + data.getStringExtra("SCAN_RESULT_ERROR_CORRECTION_LEVEL"); tvResult.setText(contentData); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
Explicación
Nuestro lector de código QR esta formado por un botón y un textview, cuando se presiona el botón, se llama a la aplicación «Barcode Scanner«, si esta no esta instalada, se te pedirá su instalación para continuar. Si esta instalada, se iniciara y ya podrás escanear un código QR, la aplicación entonces queda a la espera de una respuesta en el método «onActivityResult«. Cuando se procede a escanear un código QR el valor pasa a nuestra aplicación en la variable «data«, la procesamos y la mostramos en pantalla.
Archivos disponibles para descarga
Proyecto en Eclipse QRScanCode
🙂
Modelo Vista Controlador (MVC) es un patrón de arquitectura de software que separa los datos de una aplicación, la inter[...]
En este post crearemos un componente que solo hay en android y que no esta disponible en la paleta de controles de Netbe[...]
En este tutorial «Android Bolivia» construiremos nuestra propia aplicación para molestar a los amigos con sonidos divert[...]
¿Que es y para que sirve una imagen forense? Una imagen forense es un «clon» (copia bit a bit) de algún dispositivo como[...]
Los archivos digitales (txt, docx, xlsx, odt, odp, pdf, etc) nos permiten almacenar información el cual en ocasiones, de[...]
Una vez que terminamos el obligatorio 🙂 «Hola mundo«, podemos crear aplicaciones un tanto más elaboradas, pero para nada[...]