unserem Blog

Barcode-Kreuzung

Barcoding auf 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 saubere Lösungen für knifflige Probleme. 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 DataLock 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!

Implementieren einer vereinfachten Zxing-Bibliothek
Während wir durch den Prozess lernten, wie man das benutzt Zxing Englisch: www.db-artmag.de/2003/12/e/1/111-4.php Wir fanden bald heraus, dass es etwas mühsam war zu verstehen, was in dieser riesigen Bibliothek vor sich ging. Es gab viele Tutorials, aber viele der Schritte verwirrten uns oder waren veraltet. Es gab Dinge, die im Code fehlten, oder Dinge, die basierend auf der Bibliotheksversion unterschiedlich waren oder etwas, das nicht vollständig geklärt wurde. Wir wollten ein Tutorial erstellen, mit dem jeder, der eine einfache Zxing-Scan-Bibliothek implementieren möchte, einen schnellen Einstieg in die eigene Anwendung erhalten kann.

In diesem Lernprogramm wird eine heruntergefahrene Version der Zxing-Bibliothek verwendet, um die Grundlagen für die Implementierung der Bibliothek in eine eigenständige App zu vermitteln und eine eigene native Android-App bereitzustellen. Wir verwenden das Android Development Kit mit SDK 19, android 4.4-Bibliothek. Die Bibliothek wurde anstelle der standardmäßigen horizontalen Ausrichtung als Barcode-Scanner im Hochformatmodus geändert.

Sie können unsere vereinfachte Version der Zxing-Bibliothek herunterladen, um sie hier zu verwenden und zu testen: CaptureActivity. Dies ist anders als die freigegebene ZXing-Bibliothek, aber es ist gut, um loszulegen.

Wenn Sie Eclipse mit dem Android SDK nicht haben, laden Sie das Programm herunter und installieren Sie es Android Entwicklungskit. Öffnen Sie das Android SDK und installieren Sie die benötigten Komponenten. Als nächstes öffne Eclipse.

Schritt 1. Zuerst werden wir das Projekt erstellen.

Gehe zum Hauptmenü Datei -> Neu -> Android-Anwendungsprojekt. Benennen Sie Ihr Projekt (wir haben unsere "Scanner App" genannt). Kopieren Sie die Einstellungen unten und klicken Sie auf die nächste 3-Zeit bis zur Erstellung der Aktivitätsseite. Wählen Sie Leere Aktivität und klicken Sie auf Weiter und dann auf Fertig stellen. Der Ordner wird standardmäßig auf der linken Seite des Bildschirms angezeigt. Wenn nicht, klicken Sie auf die Schaltfläche zum Maximieren, um den Projektbildschirm in Eclipse zu öffnen.

Barcode-Kreuzung

Schritt 2. Behebe Themenfehler (wenn du keine hast, gehe zu Schritt 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.

Schritt 3. Als nächstes wird die Scanner-Bibliothek importiert.

Wenn Sie noch nicht haben, laden Sie bitte den CaptureActivity-Zip oben herunter. Gehe zu Datei -> Importieren -> Vorhandenen Android-Code in Arbeitsbereich importieren -> und Durchsuchen öffnen und finde den Zxing-Quellcode, den du heruntergeladen hast. Überprüfen Sie nur das erste aufgerufene Projekt CaptureActivity. Der Pfad sollte nicht Build / in enthalten. Click finish. Rechtsklick auf die / CaptureActivity / Ordner in der Registerkarte Paket-Explorer und klicken Sie auf Eigenschaften -> Android and make sure the “Is Library” check box checked. Click ok.

Schritt 4. Wir müssen jetzt unsere App mit der Scanner-Bibliothek verbinden.

Klicken Sie mit der rechten Maustaste auf Ihren Android-App-Ordner und dann auf Eigenschaften -> Android. Klicken Sie auf die Schaltfläche Hinzufügen, und klicken Sie auf CaptureActivity. Stellen Sie sicher, dass ein grünes Häkchen angezeigt wird, nachdem Sie auf dem Android-Bildschirm mit dem Projekt Scanner auf OK geklickt haben. OK klicken.

Schritt 5. Wir können jetzt mit der Implementierung des Scanners in unsere Anwendung beginnen. Beginnen Sie mit der Datei mainActivity.java.

Wechseln Sie in Ihrem App-Ordner zu / src / Ordner und öffnen Sie Ihr HauptActivity.java Datei. Unten ist der Code erforderlich. Kopieren Sie und fügen Sie ein, was Sie nicht haben. Der Code, den Sie hinzufügen müssen, wird in rotem Text angezeigt. Wenn Sie Fehler erhalten, müssen Sie bestimmte Klassen importieren. Sie können einfach Strg + Shift + O drücken, und alle benötigten Importe werden importiert.



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
         }
      }
   }
} 

Hier gibt es zwei Schlüsselfunktionen:

  1. Die openScanner-Methode wird ausgeführt, wenn eine Taste gedrückt wird, und öffnet anschließend den Scanner.
  2. Die onActivityResult-Methode gibt die Zeichenfolge des gelesenen Barcodes zurück. Von hier aus können Sie eine neue Absicht öffnen und Variablen übergeben, wenn Sie nach dem Scan einen anderen Bildschirm anzeigen möchten.

Schritt 6.Wir werden nun das Layout in der Datei activity_main.xml ändern.

Now in your / app / Ordner, gehe zum res Ordner -> Layout -> activity_main.xml Datei. Es sollte wie folgt aussehen. Fügen Sie den folgenden roten Code hinzu:


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

Dies fügt eine Schaltfläche hinzu, und wenn sie gedrückt wird, wird die Methode openScanner von der ausgeführt HauptActivity.java Datei. Möglicherweise müssen Sie auch ein Thema auswählen. Ich wählte Theme.holo.

Schritt 7. Die letzte Änderung besteht darin, die Datei androidManifest.xml zu bearbeiten.

Gehen Sie zum androidManifest.xml Datei unter dem Projektverzeichnis. Der Code sollte wie folgt aussehen und den roten Code erneut kopieren



<?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>

Wir fügen Berechtigungen hinzu, die Android benötigt, um die Kamera zu verwenden und Aktivitäten in die Anwendung einzuschließen, um zu wissen, welche Dateien geöffnet werden sollen, wenn wir den Scanner auf dem Gerät öffnen möchten.

Schritt 8. Alles erledigt!

Sie sollten jetzt in der Lage sein, Ihre Anwendung auf einem Gerät zu kompilieren und auszuführen. Wenn Compilerfehler auftreten, möchten Sie möglicherweise das Projekt bereinigen und / oder Eclipse neu starten.


Danke
Dieser Blog verdankt vielen Dank:

  • Alberto Landaverde, der im Telaeris-Sommer von 2012 arbeitete, der die Zxing-Bibliothek modifiziert und die erste vereinfachte Bibliothek erstellt hat
  • Kelly Lim, current Telaeris intern, who took this library and moved beyond it to build the DataLock Android App. Kelly hat auch den Inhalt dieses Blogs geschrieben.
  • Jake Pham, jetziger Praktikant bei Telaeris, der das Tutorial hier durchgearbeitet hat, um sicherzustellen, dass alles wie angekündigt funktioniert.

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 – DataLock.

DataLockRLogo
Gesehen werden. Gescannt werden. Geteilt werden.

Hinterlasse einen Kommentar

*

Blogaktualisierungen

Newsletter


mit einem Vertreter sprechen

Kontakt

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