Android SDK: Lag en Barcode Reader

Android SDK: Lag en strekkodeleser
169
Del
45
Del
Dette Cyber ​​mandag Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av.

I denne opplæringen, vil vi bruke den ZXing (Zebra Crossing) biblioteket for å gjennomføre strekkodeskanning innen en Android-app. Vi ringer på ressursene i denne åpen kildekode bibliotek innenfor vår app, henting og behandling av de returnerte resultatene.

Siden vi bruker den ZXing bibliotek, vi trenger ikke å bekymre seg for brukere uten strekkodeleser installert, fordi integrerings klassene som tilbys vil ta vare på dette for oss. Ved å importere ZXing integreringsklassene i vår app, kan vi lage bruker skanner enklere og fokusere vår utviklingsinnsats på håndtering av skanneresultater. I en oppfølgings serien kommer snart, vil vi utvikle en bok skanning app der vi skal bygge videre på den app vi opprettet i denne opplæringen. Vi vil også legge til støtte for Google Bøker API slik at vi kan vise informasjon om skannede bøker.



1. Opprett en ny Android-prosjektet

Trinn 1

I Eclipse, opprette en ny Android-prosjekt. Skriv inn dine valgte program, prosjekt og pakkenavn. La Eclipse opprette et tomt aktivitet for deg, med navnet ditt valg for både aktivitet og dens layout.

Trinn 2

Åpne din viktigste layout fil. Med standardinnstillingene, starter Eclipse layout med en relativ Layout objekt, som du kan la som er. Innsiden av den, erstatte den eksisterende innhold (vanligvis en tekst View) med en knapp
< RelativeLayout xmlns:. Android = "http://schemas.android.com/apk/res/android" xmlns: verktøy = " http://schemas.android.com/tools "android: layout_width =" match_parent "android: layout_height =" match_parent "> < Button android: id = "+ id /scan_button" android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: layout_centerHorizontal = "true" android: text = "@ streng /scan" /> < /RelativeLayout >

Etter knappen, legge to Tekst Views der vi vil informasjon utgang skanning
< TextView android. id = "+ id /scan_format" android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: textIsSelectable = "true" android: layout_centerHorizontal = "true" android: layout_below = "@ id /scan_button" /> < TextView android: id = "+ id /scan_content" android: layout_width = "wrap_content "android: layout_height =" wrap_content "android: textIsSelectable =" true "android: layout_centerHorizontal =" true "android: layout_below =" @ id /scan_format "/>

Legg på knappen for tekststrengen til din" res /verdier /strenger "XML fil
. < string name =" scan "> Scan < /string >

Brukeren vil trykke på knappen for å skanne. Når app mottar et resultat fra strekkodeskanning drift, vil det vise skanneinnholdsdata og format navn i de to tekst Views.



2. Legg ZXing til ditt prosjekt

Trinn 1

ZXing er en åpen kildekode-bibliotek som gir tilgang til testet og funksjonelle strekkodeskanning på Android. Mange brukere vil allerede ha appen installert på sine enheter, slik at du bare starte skanning hensikter og hente resultatene. I denne opplæringen skal vi bruke Skanning via Intent metode for å gjøre skanning enklere. Denne metoden innebærer å importere et par klasser i din app og lar ZXing ta vare på tilfeller der brukeren ikke har skanneren installert. Hvis brukeren ikke har strekkodeleser installert, vil de bli bedt om å laste den ned

. Tips: Siden ZXing er åpen kildekode, kan du importere kildekoden i prosjektene i sin helhet. Men dette er egentlig bare anbefales hvis du trenger å gjøre endringer i sin funksjonalitet. Du kan også kompilere prosjektet og inkludere sin JAR-filen i dine egne apps hvis du foretrekker det. For de fleste formål, ved hjelp av skanning via Intent er en pålitelig og lett å implementere alternativer, pluss brukerne vil ha tilgang til den nyeste versjonen av ZXing app.

I Eclipse, legge til en ny pakke til prosjektet ved å høyreklikke på "src" mappen og velge "Ny", deretter "pakke", og skrive inn "com.google.zxing.integration.android" som navn på pakken.

Trinn 2

Eclipse tilbyr flere måter å importere eksisterende kode i dine prosjekter. Ved anvendelsen av denne opplæringen, vil du sannsynligvis synes det er enklest å bare lage de to nødvendige klasser og kopier koden fra ZXing. Høyreklikk den nye pakken, velg "New" og deretter "Class" og skriv inn "IntentIntegrator" som klassenavnet. Du kan la de andre standardinnstillingene slik de er. Når du har opprettet denne klassen, gjøre det samme for den andre klassen vi skal importere, gir det "IntentResult" som sitt klassenavnet.

Kopier koden fra begge klasser i ZXing biblioteket og lime det inn i klassen filene du har opprettet. Dette er IntentIntegrator og IntentResult. Refererer til kildekoden nedlasting hvis du er i tvil om hvor de ulike filer og mapper skal være eller hva som bør være i dem.

Du kan nå importere ZXing klasser inn din viktigste aktivitet klasse .
import com.google.zxing.integration.android.IntentIntegrator, import com.google.zxing.integration.android.IntentResult;

Gå videre og legge de andre import utsagn vi vil bruke for denne opplæringen. Husk at Eclipse har kanskje allerede lagt noen for deg
import android.os.Bundle;. Import android.app.Activity, import android.content.Intent, import android.view.View; import android.view.View .OnClickListener, import android.widget.Button, import android.widget.TextView, import android.widget.Toast;

Ta gjerne en titt på innholdet i de to ZXing klasser. Det er ganske grei, men detaljene i strekkodeskanning behandlingen utføres andre steder i biblioteket. Disse to klasser virkelig fungerer som et grensesnitt til skannefunksjonalitet.

3. Gjør noen Scanning

Trinn 1

La oss gjennomføre scanning når brukeren klikker på knappen vi lagt. I appen hovedaktivitet klasse, bør standard onCreate metode angitt av Eclipse se omtrent slik ut
beskyttet void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState.); setContentView (R.layout.activity_main);}

Over denne metoden, legge til følgende instansvariabler til å representere knapp og to tekst Views vi skapt i oppsettet filen
privat Button scanBtn;. privat TextView formatTxt, contentTxt;

I onCreate, etter den eksisterende koden, instantiate disse variablene ved hjelp av ID-verdier vi spesifisert i XML
scanBtn = (Button) findViewById (R.id.scan_button);. formatTxt = (TextView) findViewById (R. id.scan_format); contentTxt = (TextView) findViewById (R.id.scan_content);

Deretter legger du en lytter til knappen slik at vi kan håndtere presser
scanBtn.setOnClickListener (denne);.

utvide åpningslinjen av klassen erklæringen å gjennomføre OnClickListener grensesnittet.
public class MainActivity strekker aktivitet implementerer OnClickListener
Trinn 2

Nå kan vi svare på tasteklikk ved å starte skanningen. Legg en onClick metode for å aktivitetsklasse.
Public void onClick (Vis v) {//svare på klikkene}

Sjekk om du har trykket på skanneknappen inne i denne metoden.
If (v.getId ( ) == R.id.scan_button) {//scan}

Inne i dette betinget blokk, opprette en forekomst av Intent Integrator klassen vi importert
IntentIntegrator scanIntegrator = new IntentIntegrator (denne);.

Nå er vi . kan ringe på Intent Integrator metoden for å starte skanningen
scanIntegrator.initiateScan ();

På dette punktet, vil skanneren starte hvis det er installert på brukerens enhet. Hvis ikke, vil de bli bedt om å laste den ned. Resultatene av skanningen vil bli returnert til hovedaktiviteten der skanningen ble startet, så vi vil være i stand til å hente den i onActivityResult
metode

. Tips: Når du ringer initiateScan metoden, kan du velge å passere en samling av de strekkoder du ønsker å skanne. Som standard vil metoden skanne for alle støttede typer. Disse inkluderer UPC-A, UPC-E, EAN-8, EAN-13, QR Code, RSS-14, RSS Expanded, Data Matrix, Aztec, PDF 417, Strekkode, ITF, Codes 39, 93 og 128. ZXing Biblioteket inneholder også strekkodeskanning alternativer som vi ikke kommer til å dekke i denne opplæringen. Du kan sjekke prosjektet ut på Google Code for mer info.



4. Hente skanneresultatene

Trinn 1

Når brukeren klikker på skanneknappen, strekkodeleser vil lansere. Når de skanne en strekkode, vil den returnere de skannede dataene til onActivityResult metode for kallet aktivitet. Legg metoden til din hovedaktivitet klasse.
Public void onActivityResult (int requestCode, int resultCode, Intent hensikt) {//hente scan resultat}

Inne i metoden, prøve å analysere resultatet i en forekomst av ZXing Intent Resultat klassen vi importert
IntentResult scanningResult = IntentIntegrator.parseActivityResult (requestCode, resultCode, forsett);.
Trinn 2

Som med alle data blir hentet fra en annen app, er det viktig å sjekke for null verdier. Bare fortsette hvis vi har et gyldig resultat.
If (scanningResult! = Null) {//vi har et resultat}

Hvis skanningen data ikke er mottatt (for eksempel hvis brukeren avbryter søket ved å trykke på tilbake knappen), vi kan bare sende ut en melding
else {Toast toast = Toast.makeText (getApplicationContext (), "Ingen skanne data mottatt!", Toast.LENGTH_SHORT.); toast.show ();}

Tilbake i hvis blokken, la oss finne ut hva data skanningen returnert. Den Intent Resultat objektet gir metoder for å hente innholdet av skanningen og formatet på dataene som returneres fra den. . Hente innholdet som en strengverdi
String scanContent = scanningResult.getContents ();

Hent navn formatet, også som en streng
String scanFormat = scanningResult.getFormatName ();.
Trinn 3

Nå programmet har formatet og innholdet i de skannede dataene, slik at du kan gjøre hva du vil med den. For hensikten med denne opplæringen, vil vi bare skrive verdiene til teksten Visninger i vår layout
formatTxt.setText ("FORMAT:" + scanFormat);. ContentTxt.setText ("INNHOLD:" + scanContent); < p> Kjør programmet ditt på en enhet i stedet for en emulator, slik at du kan se skanningen fungerer. Prøv å skanne en bok eller noe annet strekkode du kan ha.


Når skanningen er igangsatt, blir brukeren tatt med til ZXing app for å skanne en strekkode.

Bedrifter Den skanningsresultater returneres til app.



Konklusjon

I denne opplæringen, har vi kjørt gjennom prosessen med å legge til rette for strekkodeskanning innen Android apps bruker ZXing biblioteket . I dine egne apps, kan det være lurt å gjennomføre videre behandling på de uttatte skanneresultater, for eksempel lasting nettadresser eller ser dataene opp i en tredjeparts datakilde. I oppfølgingen av denne opplæringen, vil vi bruke strekkodeskanning funksjonalitet for å lage en bok skanning app som vil tillate oss å hente data om skannede bøker fra Google Books API.