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

Que es y como se crea una Imagen Forense

Que es y como se crea una Imagen Forense

¿Que es y para que sirve una imagen forense? Una imagen forense es un “clon” (copia bit a bit) de algún disp...

Manipular colecciones de una forma sencilla

Manipular colecciones de una forma sencilla

Java proporciona Collection Framework, que define varias clases e interfaces para representar un grupo de objetos como u...

Store Procedure: Result Set

Store Procedure: Result Set

Los procedimientos almacenados no solo pueden retornar valores como números, cadenas, etc, sino también datos como los R...

Hola Mundo con Firebase

Hola Mundo con Firebase

Firebase es la plataforma para el desarrollo de aplicaciones web y aplicaciones móviles de Google el cual se centra en e...

JToggleButton y base de datos

JToggleButton y base de datos

En este tutorial veremos una forma de trabajar con el swing  JToggleButton y una base de datos para dar respuesta a una...

Reporte Padrón electoral con imágenes y Data Matrix

Reporte Padrón electoral con imágenes y Data Matrix

En este post diseñaremos un reporte de un padrón electoral con dos columnas que contendrá los certificados de sufragio e...

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

Los números narcisistas o números de Armstrong son aquellos números enteros positivos  cuya suma de las n-ésimas potenci...

En la convención de Chain React  en Portland (Oregon), Marc Horowitz ingeniero de software en Facebook presentó el motor...

En un post anterior [Introducción a VueJS framework para el desarrollo FrontEnd] realizamos una breve introducción a Vue...

La programación y la electrónica están a la orden del día. Cada vez son más importantes y prácticamente forman parte de...

Android Bolivia

MAUS