onze blog

Barcodekruising

Barcoding op Android

zxing_zebra_logo
Het grootste deel van de tijd dat medewerkers van Telaeris hier publiceren, is het voor voorbeelden uit het echte leven met betrekking tot onze producten. Dit stelt ons in staat om een ​​breed scala aan onderwerpen te bespreken, inclusief barcodes en RFID-gebruik, implementatie van beveiligings- of veiligheidssystemen of tips voor het runnen van een onderneming. Maar de kern van wat we doen is om te verzinnen nette oplossingen voor lastige problemen. De volgende blogvermeldingen zijn voorbeelden van hoe twee stagiaires bij Telaeris begonnen met het maken van een gratis nieuw mobiel product voor het volgen van barcodes en RFID-tags vanaf uw mobiele apparaat van Android of iPhone. Het systeem wordt gebeld DataLockr en is net gelanceerd - ik raad u ten zeerste aan de app en het systeem te bekijken. Wat zij in dit artikel beschrijven, zijn de eerste stappen voor het bouwen van een eenvoudige barcodelezen-app met de open source Zxing-bibliotheek voor Android.

Deze blog is voor de hackers die graag coderen. Genieten!

Implementatie van een vereenvoudigde Zxing-bibliotheek
Terwijl we bezig waren met het leren hoe de ZXing bibliotheek, we ontdekten al snel dat het een beetje lastig was om te begrijpen wat er in deze enorme bibliotheek aan de hand was. Er waren veel tutorials, maar veel van de stappen brachten ons in de war of waren verouderd. Er ontbraken dingen in de code, of dingen die anders waren op basis van de bibliotheekversie of iets was niet volledig opgehelderd. We wilden een zelfstudie maken waarmee iedereen die een eenvoudige Zxing-scanbibliotheek probeert te implementeren, snel kan beginnen met het gebruik ervan in zijn eigen toepassing.

Deze zelfstudie maakt gebruik van een afgebroken versie van de Zxing-bibliotheek om de basis te leren van hoe de bibliotheek kan worden geïmplementeerd in een zelfstandige app en om uw eigen native Android-app te implementeren. We gebruiken de Android Development Kit met SDK 19, de Android 4.4-bibliotheek. De bibliotheek is gewijzigd als een barcodescanner in de portretmodus in plaats van de standaard horizontale richting.

U kunt onze vereenvoudigde versie van de Zxing-bibliotheek downloaden om deze hier te gebruiken en te testen: CaptureActivity. Dit is anders dan de vrijgegeven ZXing-bibliotheek, maar het is goed om aan de slag te gaan.

Als u geen Eclipse hebt met de Android SDK, downloadt en installeert u de Android Development Kit. Open de Android SDK en installeer de benodigde componenten. Open vervolgens Eclipse.

Stap 1. Eerst zullen we het project maken.

Ga naar het hoofdmenu Bestand -> nieuw -> Android Application Project. Geef uw project een naam (we hebben de onze "Scanner-app" genoemd). Kopieer de onderstaande instellingen en klik op de volgende 3 keer op de pagina Activiteit maken. Kies Activiteit leegmaken en klik op volgende en vervolgens op Voltooien. De map verschijnt standaard aan de linkerkant van het scherm. Als dat niet het geval is, klikt u op de knop Maximaliseren om het projectscherm in Eclipse te openen.

Barcodekruising

Stap 2. Thema-fouten repareren (ga naar stap 3) (als u die nog niet hebt, ga dan verder met stap XNUMX)

Als u fouten in uw waardenmappen tegenkomt, kan dit een Eclipse-probleem zijn. Open alle styles.xml-pagina's en verwijder alle stijllabels en de inhoud ervan. Ga ook naar je AndroidManifest.xml en verwijder de Android: theme = "@ style / AppTheme" onder de applicatie.

Stap 3. De volgende is om de scannerbibliotheek te importeren.

Download de bovenstaande zip-over van CaptureActivty als je dit nog niet hebt gedaan. Ga naar Bestand -> Importeren -> Bestaande Android-code importeren in werkruimte -> en open bladeren en zoek de Zxing-broncode die je hebt gedownload. Controleer alleen het eerste project genaamd CaptureActivity. Het pad mag geen build / in bevatten. Klik op voltooien. Klik rechts op de / CaptureActivity / Map op het tabblad Pakketverkenner en klik op eigenschappen -> Android en controleer of het selectievakje "Is bibliotheek" is aangevinkt. Klik OK.

Stap 4. We moeten nu onze app verbinden met de scannerbibliotheek.

Klik met de rechtermuisknop op uw Android-app-map en klik vervolgens op eigenschappen -> Android. Klik op de knop Toevoegen en klik op CaptureActivity. Zorg ervoor dat er een groen vinkje verschijnt nadat u op OK klikt op het Android-scherm met het project Scanner. Klik OK.

Stap 5. We kunnen nu beginnen met de implementatie van de scanner in onze applicatie. Begin met het bestand mainActivity.java.

Ga in je app-map naar / Src / map en open uw mainActivity.java het dossier. Hieronder staat de code die nodig is. Kopieer en plak wat je niet hebt. De code die u moet toevoegen, staat in rode tekst. Als u fouten krijgt, moet u bepaalde klassen importeren. u kunt gewoon op ctrl + shift + O drukken en alle benodigde import wordt geïmporteerd.



pakket com.example.scannerapp; import android.app.Activity; importeer android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.widget.Toast; public class MainActivity breidt activiteit uit {@Override beschermde ongeldig onCreate (bundel savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); } @Override public boolean onCreateOptionsMenu (Menu menu) {// Blaas het menu op; dit voegt items toe aan de actiebalk als deze aanwezig is. getMenuInflater (). oppompen (R.menu.main, menu); geef waar terug; } p ublic void openScanner (Weergave weergeven) {Intent intent = new Intent ("com.example.scannerapp.SCAN"); startActivityForResult (intentie, 0000); } public void onActivityResult (int requestCode, int resultCode, Intent intent) {if (requestCode == 0000) {if (resultCode == RESULT_OK) {String contents = intent.getStringExtra ("SCAN_RESULT"); Toast.makeText (dit inhoud 0) .toon (); } else if (resultCode == RESULT_CANCELED) {// Handeling annuleren}}} } 

Er zijn twee belangrijke functies:

  1. De methode openScanner wordt uitgevoerd wanneer op een knop wordt gedrukt en opent vervolgens de scanner.
  2. De methode onActivityResult retourneert de tekenreeks van de gelezen streepjescode. Vanaf hier kunt u een nieuwe intentie openen en variabelen doorgeven als u na uw scan een ander scherm wilt weergeven.

Stap 6.We zal nu de lay-out in het bestand activity_main.xml wijzigen.

Nu in jouw / App / map, ga naar de res folder -> layout -> activity_main.xml bestand. Het moet er als volgt uitzien. Voeg de volgende rode code toe:


<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 "> <Knop 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 = "Scan" android: onClick = "openScanner" /> </ RelativeLayout>

Dit voegt een knop toe, en wanneer ingedrukt, wordt de methode openScanner uitgevoerd vanuit de mainActivity.java het dossier. U moet mogelijk ook een thema kiezen. Ik koos voor Theme.holo.

Stap 7. De laatste wijziging is om het bestand androidManifest.xml te bewerken.

Naar de AndroidManifest.xml bestand onder de projectdirectory. De code moet er als volgt uitzien en de rode code opnieuw kopiëren



<? 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"> <gebruikt-sdk android: minSdkVersion = "8" android: targetSdkVersion = "21" /> <! - PERMISSIONS VEREIST DOOR ZXING -> <gebruik-permissie android : name = "android.permission.CAMERA" /> <gebruikt-permissie android: name = "android.permission.INTERNET" /> <gebruikt-permissie android: name = "android.permission.WRITE_EXTERNAL_STORAGE" /> <! - FUNCTIES VEREIST DOOR 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" /> <toepassing android: allowBackup = "true" android: icon = "@ drawable / ic_launcher" android: label = "@ string / app_naam" android: theme = "@ style / AppTheme"> <activiteit android: name = "com.example.scannerapp.Ma inActivity "android: label =" @ string / app_name "> <intent-filter> <actie android: name =" android.intent.action.MAIN "/> <categorie android: name =" android.intent.category.LAUNCHER " /> </ intent-filter> </ activiteit> <activiteit android: naam = "com.telaeris.datalockrScanner.android.CaptureActivity" android: screenOrientation = "portrait" android: configChanges = "orientation | keyboardHidden" android: theme = " @android: style / Theme.NoTitleBar.Fullscreen "android: windowSoftInputMode =" stateAlwaysHidden "> <intent-filter> <actie android: name =" android.intent.category.MAIN "/> <category android: name =" android. intent.category.LAUNCHER "/> </ intent-filter> <intentie-filter> <actie android: naam =" com.example.scannerapp.SCAN "/> <categorie android: name =" android.intent.category.DEFAULT "/> </ intent-filter> </ activity> </ application> </ manifest>

We voegen rechten toe die Android nodig heeft om de camera te gebruiken en activiteiten aan de applicatie toevoegen om te weten welke bestanden moeten worden geopend als we de scanner op het apparaat willen openen.

Stap 8. Helemaal klaar!

U zou nu uw applicatie op een apparaat moeten kunnen compileren en uitvoeren. Als er compilerfouten zijn, wilt u misschien het project opschonen en / of de eclips opnieuw starten.


Bedankt
Deze blog is veel dank verschuldigd aan veel mensen:

  • Alberto Landaverde, die geïnterneerd heeft met Telaeris zomer van 2012, die de Zxing-bibliotheek heeft aangepast en de initiële vereenvoudigde bibliotheek heeft gebouwd
  • Kelly Lim, de huidige interne stagiair van Telaeris, heeft deze bibliotheek gebruikt en is er verder overheen gegaan om de DataLockr Android-app. Kelly heeft ook de inhoud van deze blog geschreven.
  • Jake Pham, de huidige internist van Telaeris, die de tutorial hier heeft doorlopen om te controleren of alles werkte zoals geadverteerd.

Houd ons in de gaten voor de volgende aflevering, waarin we bespreken hoe de ZXing-bibliotheek kan worden gescand in de staande en liggende modus. En als je tijd hebt, bekijk dan het product van al hun inspanningen - DataLockr.

DataLockrLogo
Gezien worden. Gescand worden. Gedeeld zijn.

Laat een reactie achter

*

Blog Updates

nieuwsbrieven


praat met een vertegenwoordiger

Contact

Telefoon: 858-627-9700
Fax: 858-627-9702
-------------------------------
9123 Chesapeake Dr.
San Diego, Californië 92123
-------------------------------
sales@telaeris.com