Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Android / Crea tu lector de códigos QR

Crea tu lector de códigos QR

Autor 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 Stringtxt_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

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Crear XML desde una base de datos con jDom

Crear XML desde una base de datos con jDom

Un post cortito de fin de semana 🙂 , este trata de la forma de extraer la información de una base de datos formar una es...

Dibujar primitivas 2d en html5

Dibujar primitivas 2d en html5

HTML5 junto a javascript permite dibujar figuras llamadas shapes sobre un lienzo que recibe el nombre de “canvas...

Cifrado francmasón PigPen

Cifrado francmasón PigPen

El cifrado francmasón es un cifrado por sustitución simple que cambia las letras por símbolos. Sin embargo, el uso de sí...

Construye tu swing Versus para el mundial 2014

Construye tu swing Versus para el mundial 2014

Para ponerse a tono con el ambiente mundialista de Brasil 2014, en este post construiremos un swing java al que llamarem...

Animación de bicho feo en java2D

Animación de bicho feo en java2D

Java2d nos permite manipular imagenes y asi poder crear animaciones sencillas como muestra el siguiente video. Puedes de...

Exportar registros MySQL a Excel

Exportar registros MySQL a Excel

Java Excel API es un API para java que permite a los desarrolladores leer y escribir en hojas de cálculo Excel. jexcelap...

6 comentarios en “Crea tu lector de códigos QR”

  1. Mecatronica dice:

    sigue adelante cochinote

  2. Mauro Alejandro Avila dice:

    Hola gracias por el aporte, pero he estado probando el codigo y al ejecutar la app en mi celular aparce un mensaje que dice que la Aplicacion se ha detenido y se cierra. En que podré estar fallando?…. GRACIAS

    1. Mouse dice:

      comprueba que el API de tu telefono concuerde con el del proyecto

      1. Miguel dice:

        Hola, me sucede lo mismo, mi proyecto esta con API 16
        y mi smartphone tiene version 4.1.2 (API16).

        ¿Sabes como resolverlo?

        1. Miguel dice:

          Hola. Resolvi el problema, lo que sucede es que la librería .jar en la clase IntentIntegrator.java tiene definido un valor para el ResultCode mayor a 16 bits. y cuando ejecutas la app las librerias de Android para el método onActivityResult no soporta valores de retorno mayores.

          Así que descargue las clases IntentIntegrator.java IntentResult.java y las agregue directamente a mi proyecto android, olvidándome del .jar que mencionas en tu post.
          De esta manera pude editar directamente el valor del RESULT_CODE. Listo, ya funciona.

          Aquí puedes descargar las clases:
          IntentIntegrator.java: https://drive.google.com/open?id=0B4Eymb-1CUjDTk1vZUJVRTRoRGs&authuser=0

          IntentResult.java: https://drive.google.com/open?id=0B4Eymb-1CUjDRlZBUU9UTmhPMWc&authuser=0

          1. Francisco dice:

            Disculpa y luego los agregas al proyecto solamente pero como le haces para que los detecte no entiendo osea como son .java no me los toa como una clase

Los comentarios estan cerrados

Los comentarios están cerrados para este post
Comparte lo que sabes

Categorias

Últimas entradas

Sans Forgetica es una fuente diseñada utilizando los principios de la psicología cognitiva para ayudar a recordar mejor...

Facebook la compañía de Mark Zuckerberg confirmó hace unas semanas que la Red Social había sido hackeado debido a una br...

Google+ o Google plus como también se le conoce a la red social del gigante de la informática Google cerrará para siempr...

Como dice un viejo dicho, “La practica hace al maestro” y en el mundo de la programación no es diferente, po...

Android Bolivia

MAUS