Vår blogg

Streckkodsöverföring

Streckkodning på Android

zxing_zebra_logo
Det mesta av tiden när anställda på Telaeris publicerar här är det för verkliga exemplar som är relaterade till våra produkter. Detta gör det möjligt för oss att diskutera ett brett område med ämnen, inklusive streckkoder och RFID-användning, säkerhets- eller säkerhetssystemimplementering eller tips om att driva ett företag. Men i hjärtat av vad vi gör är att komma med snygga lösningar för knepiga problem. Nästa blogginlägg är exempel på hur två praktikanter på Telaeris började skapa en gratis ny mobilprodukt för spårning av streckkoder och RFID-taggar från din Android- eller iPhone-mobilenhet. Systemet heter DataLockr och har just lanserats - jag rekommenderar starkt att du kolla in appen och systemet. Vad de beskriver i den här artikeln är deras första steg i hur man bygger en enkel streckkodsläsningsapp med Zxing-biblioteket för öppen källkod för Android.

Den här bloggen är för hackarna där ute som gillar att koda. Njut av!

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)

Om du har fel i dina värderingsmappar kan det här vara ett Eclipse-problem. Öppna alla style.xml sidor och ta bort alla stilkoder och dess innehåll. Gå också till din AndroidManifest.xml och ta bort android: theme = "@ style / AppTheme" under ansökan.

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. Klicka på avsluta. Högerklicka på / CaptureActivity / Mapp i paketet Paket Explorer och klicka egenskaper -> Android och kontrollera att kryssrutan "Är bibliotek" är markerad. Klicka på 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.



paketet com.example.scannerapp; importera android.app.Activity; importera android.content.Intent; importera android.os.Bundle; importera android.view.Menu; importera android.view.View; importera android.widget.Toast; public class MainActivity utökar aktivitet {@Override protected void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); } @Override public boolean onCreateOptionsMenu (Menymeny) {// Bläddra i menyn; Detta lägger till objekt i åtgärdsfältet om det är närvarande. getMenuInflater (). inflate (R.menu.main, meny); återvänd sant; } p ublic void openScanner (Visa vy) {Intent intention = new Intent ("com.example.scannerapp.SCAN"); startActivityForResult (avsikt, 0000); } public void onActivityResult (int requestCode, int resultCode, Intent Intent) {if (requestCode == 0000) {om (resultCode == RESULT_OK) {String content = intent.getStringExtra ("SCAN_RESULT"); Toast.makeText (detta, innehåll, 0) .visa (); } annars om (resultCode == RESULT_CANCELED) {// Hantera avbryt}}} } 

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.

Nu i din /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 = "@dimension / activity_horizontal_margin" android: paddingTop = "@ dimen / activity_vertical_margin" verktyg: context = ". MainActivity "> <Knapp android: id =" @ + id / button0000 "android: layout_width =" wrap_content "android: layout_height =" wrap_content "android: layout_below =" @ + id / textView0000 "android: layout_centerHorizontal =" true "android: layout_marginTop = "1dp" android: text = "Skanna" 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"> <användar-sdk android: minSdkVersion = "8" android: targetSdkVersion = "21" /> <! - Tillstånd som krävs av ZXING -> <använder tillstånd android : name = "android.permission.CAMERA" /> <uses-permission android: name = "android.permission.INTERNET" /> <använder-tillstånd android: name = "android.permission.WRITE_EXTERNAL_STORAGE" /> <! - Funktioner som krävs av ZXING -> <uses-feature android: name = "android.hardware.camera" android: required = "true" /> <uses-feature android: name = "android.hardware.touchscreen" android: required = android: required = "false" /> <application android: allowBackup = "true" android: icon = "@ drawable / ic_launcher" android: label = "@ string / app_name" android: theme = "@ style / AppTheme"> <aktivitet android: name = "com.example.scannerapp.Ma iActivity "android: label =" @ sträng / app_name "> <intent-filter> <action android: name =" android.intent.action.MAIN "/> <kategori android: name =" android.intent.category.LAUNCHER " /> </ intent-filter> </ activity> <aktivitet android: name = "com.telaeris.datalockScanner.android.CaptureActivity" android: screenOrientation = "portrait" android: configChanges = "orientering | 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 "/> <kategori 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, nuvarande Telaeris praktikant, som tog detta bibliotek och flyttade bortom det för att bygga 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.

Håll dig klar för nästa avdelning där vi diskuterar hur du gör ZXing-biblioteket i både porträtt och liggande lägen. Och om du har tid, ta en titt på produkten av all deras ansträngning - DataLockr.

DataLockrLogo
Bli sedd. Skannade. Delas

Lämna en kommentar

*

nyhetsbrev


prata med en representant

Kontakt

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