nuestro blog

Cruce de código de barras

Código de barras en Android

zxing_zebra_logo
Most of the time when employees at Telaeris publish here, it is for real life examples related to our products. This allows us to discuss a wide area of topics, including barcodes and RFID usage, security or safety system implementation or tips on running a business. But at the heart of what we do is to come up with soluciones ordenadas para problemas difíciles. The next few blog entries are examples of how two interns at Telaeris started to create a free new mobile product for tracking barcodes and RFID tags from your Android or iPhone mobile device. The system is called DataLockr and has just been launched – I highly recommend you check out the app and system. What they describe in this article are their first steps of how to build a simple barcode reading app using the open source Zxing library for Android.

This blog is for the hackers out there that like to code. Enjoy!

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 Android. Nombra tu proyecto (nosotros llamamos nuestra "Aplicación de escáner"). Copie los ajustes a continuación y haga clic en los siguientes tiempos de 3 hasta la página de Crear 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)

If you are having errors in your values folders, this may be an Eclipse issue. Open all style.xml pages and delete all style tags and its contents. Also go to your AndroidManifest.xml and delete the android:theme=”@style/AppTheme” under application.

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 área de trabajo -> y abrir examinar 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. Click finish. Haga clic con el / CaptureActivity / Carpeta en la pestaña Explorador de paquetes y haga clic en propiedades -> Android and make sure the “Is Library” check box checked. Click ok.

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 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, current Telaeris intern, who took this library and moved beyond it to build the 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.

Stay tuned for the next installment where we discuss how to make the ZXing library scan in both portrait and landscape modes. And if you have time, take a look at the product of all of their effort – DataLockr.

DataLockrLogo
Ser visto. Ser escaneado Ser compartido.

Deja un comentario

*

Actualizaciones del blog

Newsletters


hable con un representante

Contáctenos

Teléfono: 858-627-9700
Fax: 858-627-9702
-------------------------------
9123 Chesapeake Dr.
San Diego, CA 92123
-------------------------------
sales@telaeris.com