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
🙂
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! :)
Este es una continuación de un tutorial pasado [Funciones en PostgreSQL y pgAdmin], así que si quieres entenderlo mucho...
La página oficial de Retrofit, se describe así misma como «Un cliente REST seguro para Android y Java». Y es así, ya qu...
Este método, también conocido como método de interpolación lineal, es un método iterativo de resolución numérica de ecua...
La comunidad 3D Buzz era una de los lugares donde la gente curiosa de aprender a realizar videojuegos buscaba recursos...
Desde que se crearon los videojuegos para computadora, el espacio de almacenamiento y memoria han sido siempre un proble...
En este post aprenderemos lo que es un JSON Web Token, como crear nuestro propio token de acceso y como usarlo en un Ser...
Los comentarios estan cerrados
Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...
En este post, aprenderemos como conectar Visual Basic 6 con SQL Server, abrir una tabla, leer su contenido y mostrar est...
Lo que veremos en este post es la configuración del driver para PHP de SQL Server que ha creado Microsoft el cual permit...
Google Bard la inteligencia artificial de Google se actualiza con una mejora que entra a competir con el resto de IAs y...
sigue adelante cochinote
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
comprueba que el API de tu telefono concuerde con el del proyecto
Hola, me sucede lo mismo, mi proyecto esta con API 16
y mi smartphone tiene version 4.1.2 (API16).
¿Sabes como resolverlo?
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
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