Vår blogg

Streckkodsöverföring

Streckkodning på 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 snygga lösningar för knepiga problem. 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!

Genomföra ett förenklat Zxing-bibliotek
Medan vi gick igenom processen att lära sig hur man använder ZXings bibliotek upptäckte vi snart att det var lite besvärligt att försöka förstå vad som händer i det här stora biblioteket. Det fanns många handledningar där ute, men mycket av stegen förvirrade oss eller var föråldrade. Det saknades saker från koden, eller saker som var olika baserade på bibliotekets version eller något var inte helt klarat. Vi ville göra en handledning som skulle hjälpa alla som försöker implementera ett enkelt Zxing-skanningsbibliotek, få en snabb start för att använda den inom sin egen applikation.

Denna handledning använder en nedbruten version av Zxing-biblioteket för att lära grunderna om hur man implementerar biblioteket i en fristående app och distribuerar din egen inbyggda Android-app. Vi använder Android Development Kit som kör SDK 19, android 4.4-biblioteket. Biblioteket har blivit modifierat för att vara en streckkodsläsare för porträttläge snarare än standard horisontell orientering.

Du kan ladda ner vår förenklade version av Zxing-biblioteket för att använda och testa här: CaptureActivity. Det här är annorlunda än det släppta ZXing-biblioteket, men det är bra att komma igång.

Om du inte har Eclipse med Android SDK, ladda ner och installera Android Development Kit. Öppna Android SDK och installera nödvändiga komponenter. Därefter öppna Eclipse.

Steg 1. Först ska vi skapa projektet.

Gå till toppmenyn Fil -> ny -> Android Application Project. Namn ditt projekt (vi kallade vår "Scanner App"). Kopiera inställningarna nedan och klicka på nästa 3 gånger till sidan Skapa aktivitet. Välj Tom aktivitet och klicka sedan på Nästa och avsluta. Mappen visas som standard på skärmens vänstra sida. Om inte, klicka på knappen Maximera för att öppna projektskärmen i Eclipse.

Streckkodsöverföring

Steg 2. Fixa temafel (om du inte har någon, hoppa över till steg 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.

Steg 3. Nästa är att importera scannerbiblioteket.

Om du inte har än, ladda ner CaptureActivty-zip-filen ovanför. Gå till Fil -> Importera -> Importera befintlig Android-kod till arbetsyta -> och öppna bläddra och hitta Zxing-källkoden som du har laddat ner. Kontrollera bara det första projektet som heter CaptureActivity. Banan ska inte innehålla bygg / in den. Click finish. Högerklicka på / CaptureActivity / Mapp i paketet Paket Explorer och klicka egenskaper -> Android and make sure the “Is Library” check box checked. Click ok.

Steg 4. Vi måste nu ansluta vår app med scannerbiblioteket.

Högerklicka på din Android-appmapp och klicka sedan på egenskaper -> Android. Klicka på tilläggsknappen och klicka på CaptureActivity. Se till att ett grönt kryssrutan visas när du klickar okej på Android-skärmen med projektskannern. Klicka på ok.

Steg 5. Vi kan nu börja implementera skannern i vår ansökan. Börja med mainActivity.java-filen.

Gå till din appmapp / Src / mapp och öppna din mainActivity.java fil. Nedan finns koden som behövs. Kopiera och klistra in det du inte har. Koden som du behöver lägga till kommer att vara i röd text. Om du får fel måste du importera vissa klasser. du kan bara trycka på ctrl + shift + O, och all nödvändig import kommer att importeras.



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

Det finns två nyckelfunktioner här:

  1. OpenScanner-metoden körs när du trycker på en knapp och öppnar sedan skannern.
  2. Metoden onActivityResult returnerar strängen i streckkodsläsningen. Härifrån kan du öppna en ny avsikt och passera i variabler om du vill visa en annan skärm efter din sökning.

Steg 6.Vi ändrar nu layouten i activity_main.xml-filen.

Now in your /app/ mapp, gå till res mapp -> layout -> activity_main.xml-filen. Det ska se ut som följande. Lägg till följande röd kod:


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

Detta lägger till en knapp, och när den trycks, körs metoden openScanner från mainActivity.java fil. Du kan också behöva välja ett tema. Jag valde Theme.holo.

Steg 7. Den senaste ändringen är att redigera filen androidManifest.xml.

Gå till AndroidManifest.xml filen under projektkatalogen. Koden ska se ut som följer och kopiera den röda koden igen



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

Vi lägger till behörigheter som Android kräver för att använda kameran och inkludera aktiviteter i programmet för att veta vilka filer som ska öppnas när vi vill öppna skannern på enheten.

Steg 8. Klart!

Du borde nu kunna kompilera och köra din ansökan på en enhet. Om det finns några kompileringsfel kanske du vill rengöra projektet och / eller starta om eclipse.


Tack är du
Den här bloggen är tacksam för många människor:

  • Alberto Landaverde, som internerade med Telaeris sommaren 2012, som modifierade Zxing-biblioteket och byggde det första förenklade biblioteket
  • Kelly Lim, current Telaeris intern, who took this library and moved beyond it to build the DataLockr Android app. Kelly skrev också innehållet i den här bloggen.
  • Jake Pham, nuvarande Telaeris praktikant, som gick igenom handledningen här för att se till att allt fungerade som annonserat.

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
Bli sedd. Skannade. Delas

Lämna en kommentar

*

Blogguppdateringar

nyhetsbrev


prata med en representant

Kontakta Oss

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