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
🙂
En este tutorial veremos un poco lo que es el diseño de interfaces en android, en lugar de colocar el ejemplo de uso de[...]
Agregar una imagen a un jpanel o a un jframe no es complicado pero para un programador novato puede convertirse en todo[...]
En este post implementamos el «Código Único de Factura» según la documentación otorgada por Impuestos Bolivia en su siti[...]
En este post implementamos en lenguaje Kotlin (lenguaje de programación de tipado estático que corre sobre la máquina vi[...]
Segunda parte del tutorial [Crea tu blog con el patrón MVC y php]. En esta 2da parte toca ver lo que es la creación del[...]
DOM4J es una de las librerías para java más populares para el trabajo con XML ya que nos permite crea, editar y leer doc[...]