¡NUEVO! XPressEntry HealthChek Workplace y detección de COVID-19. CLIC AQUÍ para obtener más información.

Blogs

Cruce de código de barras

Código de barras en Android

zxing_zebra_logo
La mayoría de las veces cuando los empleados de Telaeris publican aquí, es para ejemplos de la vida real relacionados con nuestros productos. Esto nos permite discutir una amplia área de temas, incluidos los códigos de barras y el uso de RFID, la implementación de sistemas de seguridad o protección o consejos sobre cómo administrar un negocio. Pero en el corazón de lo que hacemos es pensar soluciones ordenadas para problemas difíciles. Las siguientes entradas de blog son ejemplos de cómo dos pasantes de Telaeris comenzaron a crear un nuevo producto móvil gratuito para rastrear códigos de barras y etiquetas RFID desde su dispositivo móvil Android o iPhone. El sistema se llama DataLockr y acaba de ser lanzado. Le recomiendo que revise la aplicación y el sistema. Lo que describen en este artículo son sus primeros pasos sobre cómo crear una aplicación de lectura de códigos de barras simple utilizando la biblioteca Zxing de código abierto para Android.

Este blog es para los piratas informáticos a los que les gusta codificar. ¡Disfrutar!

Implementando una Biblioteca Zxing simplificada
Mientras estábamos pasando por el proceso de aprender a usar el Zxing Biblioteca, pronto descubrimos que era un poco molesto tratar de entender lo que estaba sucediendo en esta enorme biblioteca. Había muchos tutoriales, pero muchos de los pasos nos confundían o estaban desactualizados. Faltaban cosas en el código, o cosas que eran diferentes según la versión de la biblioteca o algo que no estaba completamente aclarado. Queríamos hacer un tutorial que ayude a cualquiera que intente implementar una biblioteca de escaneo Zxing simple a comenzar a usarla dentro de su propia aplicación.

Este tutorial usa una versión demolida de la biblioteca Zxing para enseñar los conceptos básicos de cómo implementar la biblioteca en una aplicación independiente y desplegar su propia aplicación nativa de Android. Estamos utilizando el Kit de desarrollo de Android que ejecuta SDK 19, la biblioteca de Android 4.4. La biblioteca se ha modificado para que sea un escáner de código de barras en modo retrato en lugar de la orientación horizontal predeterminada.

Puede descargar nuestra versión simplificada de la biblioteca Zxing para usar y probar aquí: CaptureActivity. Esto es diferente a la biblioteca ZXing lanzada, pero es bueno para comenzar.

Si no tiene Eclipse con el SDK de Android, descargue e instale el Kit de desarrollo de Android. Abra el SDK de Android e instale los componentes necesarios. A continuación, abra Eclipse.

Paso 1. Primero vamos a crear el proyecto.

Ir al menú superior Archivo -> nuevo -> Proyecto de aplicación de Android. Nombra tu proyecto (al nuestro lo llamamos “Aplicación de escáner”). Copie la configuración a continuación y haga clic en siguiente 3 veces hasta la página de creación de actividad. Elija Actividad vacía y haga clic en Siguiente y luego en Finalizar. La carpeta aparecerá en el lado izquierdo de la pantalla de forma predeterminada. De lo contrario, haga clic en el botón maximizar para abrir la pantalla del proyecto en Eclipse.

Cruce de código de barras

 

Paso 2. Corrija los errores de tema (si no tiene ninguno, vaya al paso 3)

Si tiene errores en sus carpetas de valores, esto puede ser un problema de Eclipse. Abra todas las páginas style.xml y elimine todas las etiquetas de estilo y su contenido. También vaya a su AndroidManifest.xml y elimine android: theme = ”@ style / AppTheme” en la aplicación.

Paso 3. Lo siguiente es importar la biblioteca del escáner.

Si aún no lo ha hecho, descargue el archivo comprimido de CaptureActivty que se encuentra arriba. Ir Archivo -> Importar -> Importar código de Android existente al espacio de trabajo -> y abrir la exploración y encuentra el código fuente de Zxing que has descargado. Marque solo el primer proyecto llamado CaptureActivity. La ruta no debe contener build / in. Haga clic en finalizar. Haga clic con el / CaptureActivity / Carpeta en la pestaña Explorador de paquetes y haga clic en propiedades -> Android y asegúrese de que la casilla de verificación "Es biblioteca" esté marcada. Haga clic en Aceptar.

Paso 4. Ahora debemos conectar nuestra aplicación con la biblioteca del escáner.

Haga clic derecho en la carpeta de su aplicación Android y luego haga clic en propiedades -> Android. Haga clic en el botón Agregar y haga clic en CaptureActivity. Asegúrese de que aparezca una marca de verificación verde después de hacer clic en Aceptar en la pantalla de Android con el proyecto Scanner. Haga clic en Aceptar.

Paso 5. Ahora podemos comenzar a implementar el escáner en nuestra aplicación. Comience con el archivo mainActivity.java.

En la carpeta de su aplicación, vaya a / src / carpeta y abre tu mainActivity.java expediente. A continuación se muestra el código necesario. Copia y pega lo que no tienes. El código que deberá agregar estará en texto rojo. Si está obteniendo errores, necesitará importar ciertas clases. simplemente puede presionar ctrl + shift + O, y se importarán todas las importaciones necesarias.



package com.example.scannerapp;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
   }

   @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;
   }
   public void openScanner(View view){
      Intent intent = new Intent("com.example.scannerapp.SCAN");
      startActivityForResult(intent, 0);
   }

   public void onActivityResult(int requestCode, int resultCode, Intent intent) {
      if (requestCode == 0) {
         if (resultCode == RESULT_OK) {
            String contents = intent.getStringExtra("SCAN_RESULT");
            Toast.makeText(this,contents,3000).show();
         } else if (resultCode == RESULT_CANCELED) {
            // Handle cancel
         }
      }
   }
} 

Hay dos funciones clave aquí:

  1. El método openScanner se ejecuta cuando se presiona un botón, y posteriormente abrirá el escáner.
  2. El método onActivityResult devuelve la cadena del código de barras leído. Desde aquí, puede abrir una nueva intención y pasar variables si desea mostrar otra pantalla después de su escaneo.

Paso 6. Ahora cambiaremos el diseño en el archivo activity_main.xml.

Ahora en tu / app / carpeta, ve al carpeta res -> diseño -> archivo activity_main.xml. Debería verse como la siguiente. Agregue el siguiente código rojo:


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     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/button1"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_below="@+id/textView1"
         android:layout_centerHorizontal="true"
         android:layout_marginTop="159dp"
         android:text="Scan" 
         android:onClick="openScanner"/>

</RelativeLayout>

Esto agrega un botón, y cuando se presiona, ejecutará el método openScanner desde el mainActivity.java expediente. También es posible que deba elegir un tema. Elegí Theme.holo.

Paso 7. La última modificación es editar el archivo androidManifest.xml.

Vaya a la androidManifest.xml Archivo bajo el directorio del proyecto. El código debe tener el aspecto siguiente y, de nuevo, copiar el código rojo.



<?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="com.example.scannerapp"
 android:versionCode="1"
 android:versionName="1.0" >

<uses-sdk
 android:minSdkVersion="8"
 android:targetSdkVersion="21" />

 <!-- PERMISSIONS REQUIRED BY ZXING -->
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <!-- FEATURES REQUIRED BY ZXING -->
    <uses-feature android:name="android.hardware.camera" android:required="true" />
    <uses-feature android:name="android.hardware.touchscreen"  android:required="false" />
    <uses-feature android:name="android.hardware.telephony"  android:required="false" />

<application
     android:allowBackup="true"
     android:icon="@drawable/ic_launcher"
     android:label="@string/app_name"
     android:theme="@style/AppTheme" >
     <activity
        android:name="com.example.scannerapp.MainActivity"
        android:label="@string/app_name" >
         <intent-filter>
             <action android:name="android.intent.action.MAIN" />
             <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
    </activity>
    <activity android:name="com.telaeris.datalockrScanner.android.CaptureActivity"
        android:screenOrientation="portrait"
        android:configChanges="orientation|keyboardHidden"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
        android:windowSoftInputMode="stateAlwaysHidden">
        <intent-filter>
         <action android:name="android.intent.category.MAIN"/>
         <category android:name="android.intent.category.LAUNCHER"/>
       </intent-filter>

       <intent-filter>
         <action android:name="com.example.scannerapp.SCAN"/>
         <category android:name="android.intent.category.DEFAULT"/>
       </intent-filter>
    </activity>

</application>

</manifest>

Estamos agregando los permisos que requiere Android para usar la cámara e incluyendo actividades a la aplicación para saber qué archivos abrir cuando queremos abrir el escáner en el dispositivo.

Paso 8. ¡Todo listo!

Ahora debería poder compilar y ejecutar su aplicación en un dispositivo. Si hay algún error en el compilador, puede limpiar el proyecto o reiniciar el eclipse.

 
Agradecimientos
Este blog le debe un gran agradecimiento a muchas personas:

  • Alberto Landaverde, quien realizó una pasantía con Telaeris el verano de 2012, que modificó la biblioteca Zxing y construyó la biblioteca simplificada inicial.
  • Kelly Lim, actual pasante de Telaeris, que tomó esta biblioteca y se movió más allá para construir el DataLockr Aplicación Android. Kelly también escribió el contenido de este blog.
  • Jake Pham, actual pasante de Telaeris, que realizó el tutorial aquí para asegurarse de que todo funcionaba como se anunciaba.

Estén atentos para la próxima entrega donde discutiremos cómo hacer que la biblioteca de ZXing escanee tanto en modo vertical como horizontal. Y si tiene tiempo, eche un vistazo al producto de todo su esfuerzo: DataLockr.

DataLockrLogo
Ser visto. Ser escaneado Ser compartido.

Deja un comentario

*

Suscripción de e-mail

Reciba las últimas actualizaciones enviadas directamente a su bandeja de entrada