Aprende Java Aprende Php Aprende C++ Aprende HTML 5 Aprende JavaScript Aprende JSON Aprende MySQL Aprende SQLServer Aprende Visual Basic 6 Aprende PostgreSQL Aprende SQLite Aprende Redis Aprende Kotlin Aprende XML Aprende Linux VSC Aprende Wordpress Aprende Laravel Aprende VueJS Aprende JQuery Aprende Bootstrap Aprende Netbeans Aprende Android
Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube Sigueme en TikTok Sigueme en Whatsapp
Home / Android / Crea tu lector de códigos QR

Crea tu lector de códigos QR

Por jc mouse lunes, febrero 16, 2015

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.

barcode scan

android qr

Archivos disponibles para descarga

android-integration-1.7.jar

Barcode Scanner (APK)

Proyecto en Eclipse  QRScanCode

🙂

Tags

Artículos similares

Java Webservices – Servicios Web

Un servicio web (Web Services) es un sistema de software en la web que nos ofrece la posibilidad de realizar una o múlti[...]

Utiliza 2 bases de datos diferentes en una aplicación parte I

Cuando se desarrolla una aplicación, puede ser un requisito que este tenga soporte para varias tipos de base de datos, s[...]

Más de 400 impresionantes plantillas Readme para perfiles de GitHub

Un archivo README.md es un archivo de texto escrito en el lenguaje de marcado Markdown, este se encuentra en la raíz de[...]

Multiplicación de matrices en Kotlin

En este post implementaremos el código necesario para multiplicar matrices con el lenguaje Kotlin, pero para realizar es[...]

Envío de correo con JavaMail/Netbeans

JavaMail es una expansión de Java que facilita el envío y recepción de e-mail desde código java. JavaMail implementa el[...]

Formateo de registros en Excel con JExcel

Tenia un problema, me pasaron unos archivos excel con unos cientos de registros (ver imagen más abajo) que exportaron de[...]