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
🙂
Este post te enseña una manera que tengo de configurar Netbeans para crear y ejecutar un proyecto php utilizando el CMS[...]
En un ejemplo anterior [Seleccionar y mover shapes en html5] se utilizo un método sencillo para detectar si un punto se[...]
Java Excel API es un API para java que permite a los desarrolladores leer y escribir en hojas de cálculo Excel. jexcelap[...]
Segunda y ultima parte del post dedicado a la creación de un microservicio en lenguaje java utilizando el framework Spar[...]
El reconocimiento óptico de caracteres o OCR (Optical Character Recognition), es un proceso dirigido a la digitalización[...]
¿Qué es una transición? Una transición es un efecto de movimiento que se da entre una imagen y la siguiente en una prese[...]