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.
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
No hay comentarios:
Publicar un comentario