Kom i gang med NFC Android

Forfatter: John Stephens
Opprettelsesdato: 23 Januar 2021
Oppdater Dato: 17 Kan 2024
Anonim
GUIDE MitID app DK
Video: GUIDE MitID app DK

Innhold

  • Kunnskap som trengs: Mellomliggende Android
  • Krever: NFC-aktivert Android-telefon
  • Prosjekt tid: 30 minutter
  • Støttefil

NFC i NFC Android står for "Near Field Communication" - en teknologi som tillater trådløs nærhetskommunikasjon mellom ting som telefoner, klistremerker og kort. Hvis du er kjent med Barclays PayWave eller Oyster Card, vil du vite at teknologien dette er bygget på, "RFID", gjør det mulig å lese data ved å bare berøre ting sammen.

Du kan berøre en telefon mot klistremerker, plakater og med NFC, andre telefoner. Denne handlingen kan brukes til å starte et nettsted eller en app, foreta en betaling eller til og med overføre data i begge retninger (på Android kalles sistnevnte Stråle). Sammenlignet med QR-koder, gir NFC Android en langt enklere (og innebygd) mekanisme for å åpne URL-er, laste ned apper eller til og med lese og skrive tilpasset innhold.

  • Les alle artiklene våre om appdesign her

Hva du lærer

I denne opplæringen skal vi bygge en app som skriver til NFC Android-koder, og leser også Topp Trumps-lignende data fra dem for et retro konsollspill. Hvis en bruker uten appen vår berører koden, bruker den en innebygd mekanisme for å ta dem til nedlastingssiden for appen i Android Play Store. Når du har installert eventuelle påfølgende trykk, vil appen starte appen og vise spillkortet på skjermen. Alt i under 200 linjer med kode!


For å følge med på trenger du en NFC-aktivert Android-telefon som Samsung Galaxy Nexus eller Samsung Nexus S. Den andre tingen du trenger er noen NFC-koder eller klistremerker. Du kan finne disse mange stedene på nettet, men RapidNFC tilbyr en flott startpakke, som inkluderer en rekke omskrivbare koder, og nettstedet inneholder også en god mengde informasjon rundt de forskjellige kodetyper. Husk å bestille dem på forhåndsformatert (dette vises som et alternativ etter betaling), kan en feil i Android 4.0.2 hindre deg i å kode helt tomme koder.

Forberedelser

Før vi begynner å skrive vår egen kode, vil jeg også anbefale å laste ned NXP TagWriter for å bli kjent med å lese og skrive kodene dine.

I tillegg til å lese og skrive tekst og URL-er, kan du aktivere "profesjonell modus" gratis i appens preferanseskjerm (tilgjengelig via menyknappen). Når dette er aktivert, gir dette deg muligheten til å formatere / slette og skrivebeskytte koder.

01. Komme i gang

Nå på appen vår ... Den første jobben er å skrive data til en tom tag. Vi kommer til å inkludere en spesiell plate som lenker til appnedlastingssiden og selve spilldataene i NDEF (NFC Data Exchange Format).


Jeg anbefaler at du åpner kildekoden på dette punktet, da jeg vil fremheve nøkkeldelene på denne siden. Når du har importert prosjektet, åpner du det AndroidManifest.xml i XML-visningen.

Før vi kan bruke NFC Android, må vi legge til noen nye koder i vår manifest XML:

bruker-tillatelse android: name = "android.permission.NFC" />
bruker-funksjon android: name = "android.hardware.nfc" android: required = "true" />

aktivitet android: name = ". CardActivity"
>
hensiktsfilter>
action android: name = "android.nfc.action.NDEF_DISCOVERED" />
data android: mimeType = "application / vnd.netmagazine.nfcdemo" />
kategori android: name = "android.intent.category.DEFAULT" />
/ hensiktsfilter>
/ aktivitet>


De bruker-tillatelse -koden vil gi oss tilgang til NFC-brikken i telefonen og bruker-maskinvare tag vil gjøre det til et krav, noe som betyr at appen vår bare vises for NFC-aktiverte telefoner i Play Store. For vår CardActivity tag vi legger til en ny hensiktsfilter, dette vil starte aktiviteten når en tag skannes som inneholder data i vårt spillformat. Vi gjør dette ved å spesifisere en skikk mime-type, i dette tilfellet har jeg valgt "application / vnd.netmagazine.nfcdemo”. Android håndterer NFC-taggskanninger ved å prøve å finne det beste samsvaret med dataene på taggen, og gir flere tilbakemeldingsmekanismer for å sikre at taggen håndteres av riktig app, og lar brukeren velge fra en valgdialog når det ikke er noe klart mål .


Det første vi trenger å gjøre er å skrive noen data til en tom NFC-tag, så åpne opp MainActivity.java. Denne aktiviteten startes når brukeren klikker på ikonet til appen. Den viser en knapp som, når du trykker på den, venter på at en tag skal skrive til.


I vår onCreate () vi tar en referanse til NFC-adapteren for senere bruk:

mAdapter = NfcAdapter.getDefaultAdapter (dette);

De NfcAdapter lar oss begynne å lytte til taggen som skannes, før noen annen app får en sjanse. Dette kalles "forgrunnssending". Når brukeren trykker på knappen vi ringer enableWriteMode () for å starte denne prosessen:

privat tomrom enableWriteMode () {
mInWriteMode = true;
PendingIntent pendingIntent = PendingIntent.getActivity (dette, 0,
new Intent (this, getClass ()). addFlags (Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);

IntentFilter tagDetected = ny IntentFilter (NfcAdapter.ACTION_TAG_DISCOVERED);
IntentFilter [] filters = new IntentFilter [] {tagDetected};

mAdapter.enableForegroundDispatch (dette, pendingIntent, filtre, null);
}

I denne metoden setter vi opp en Venter på Intent å kjøre når en tag blir skannet, i dette tilfellet vil vi bare Hensikt for å starte den gjeldende aktiviteten når en tag blir skannet, så sett opp ingen spesielle filtre. Når systemet sendes ACTION_TAG_DESCOVERED, denne aktiviteten vil starte og onNewIntent () vil bli ringt med merkedetaljer.


offentlig ugyldighet onNewIntent (Intent intention) {
hvis (mInWriteMode) {
mInWriteMode = false;

Tag tag = intent.getParcelableExtra (NfcAdapter.EXTRA_TAG);
writeTag (tag);
}
}

I onNewIntent () vi trekker ut NFC-koden og begynner å skrive til den writeTag (). Dette er den klart største metoden i vår demo:

privat boolsk writeTag (tag-tag) {
// ta opp for å starte Play Store hvis appen ikke er installert
NdefRecord appRecord = NdefRecord.createApplicationRecord ("com.netmagazine.nfcdemo");

// post som inneholder våre tilpassede "retrokonsoll" -spilldata, ved bruk av tilpasset MIME_TYPE
byte [] nyttelast = getRandomConsole (). getBytes ();
byte [] mimeBytes = MimeType.NFC_DEMO.getBytes (Charset.forName ("US-ASCII"));
NdefRecord cardRecord = ny NdefRecord (NdefRecord.TNF_MIME_MEDIA, mimeBytes, ny byte [0], nyttelast);
NdefMessage melding = ny NdefMessage (ny NdefRecord [] {cardRecord, appRecord});

prøv {
// se om taggen allerede er NDEF-formatert
Ndef ndef = Ndef.get (tag);
hvis (ndef! = null) {
ndef.connect ();

hvis (! ndef.isWritable ()) {
displayMessage ("Skrivebeskyttet tag.");
returner falsk;
}

// finne ut hvor mye plass vi trenger for dataene
int størrelse = melding.toByteArray (). lengde;
hvis (ndef.getMaxSize () størrelse) {
displayMessage ("Taggen har ikke nok ledig plass.");
returner falsk;
}

ndef.writeNdefMessage (melding);
displayMessage ("Tag skrevet med hell.");
returner sant;
} annet {
// forsøk på å formatere taggen
NdefFormatable format = NdefFormatable.get (tag);
hvis (format! = null) {
prøv {
format.connect ();
format.format (melding);
displayMessage ("Tag skrevet vellykket!");
returner sant;
} fangst (IOException e) {
displayMessage ("Kan ikke formatere taggen til NDEF.");
returner falsk;
}
} annet {
displayMessage ("Taggen ser ikke ut til å støtte NDEF-format.");
returner falsk;
}

02. NDEF

Dataene vi lagrer er organisert i NDEF Records i en enkelt NDEF-melding. Det første vi gjør er å lage en "applikasjonspost", appRecord. Dette er noe nytt for Android 4, det tvinger systemet til å starte appen din før andre hvis et samsvarende pakkenavn er funnet i NFC-koden. Etter det lager vi vårt kortopptak som inneholder en tilfeldig generert spillkonsoll. De nyttelast er der vi lagrer våre tilpassede data, i dette tilfellet bare en spillkonsoll med små bokstaver.

Deretter avgjør vi om koden allerede er NDEF-formatert ved å ringe Ndef.get (tag). Hvis det allerede er NDEF-format, sjekker vi at det kan skrives og at dataene ikke er for store. Når alt går bra skriver vi dataene med ndef.writeNdefMessage (). Hvis koden ikke allerede var NDEF-formatert, bruker vi den NdefFormattable.format () å skrive dataene samtidig som koden formateres. Det er det, vi har skrevet en NFC-tag!

Med taggen skrevet trykker du på startknappen for å avslutte appen og skanne taggen på nytt. Det skal nå starte CardActivity og vis konsollets spillkort. Åpne opp CardActivity.java for å se hvordan vi leser informasjonen fra Hensikt:

Intent intention = getIntent ();
hvis (intention.getType ()! = null && intention.getType (). er lik (MimeType.NFC_DEMO)) {
Pakke [] rawMsgs =
getIntent (). getParcelableArrayExtra (NfcAdapter.EXTRA_NDEF_

MELDINGER);
NdefMessage msg = (NdefMessage) rawMsgs [0];
NdefRecord cardRecord = msg.getRecords () [0];
Streng consoleName = ny streng (cardRecord.getPayload ());
displayCard (konsollnavn);
}

}
} fangst (unntak e) {
displayMessage ("Kunne ikke skrive taggen");
}

returner falsk;
}

Her er det bare å sjekke Hensikt for å sikre at typen samsvarer med vår tilpassede mime-type. Med det målbevisste kan vi gå videre og ta tak i NdefMessage fra Intent’s statister. I vårt tilfelle vet vi det første NdefRecord er vår kortopptak, som inneholder konsollnavnet vårt i nyttelasten. Med kjent konsollnavn viser vi ganske enkelt det riktige bildet i en ImageView.

På veldig kort tid har vi klart å skrive tilpassede data til en NFC-tag, automatisk laste ned en app for å lese den og lese tilbake den tilpassede spilldataen. Herfra kan du utvide demoen til å bli et spillbart spill og til og med bruke Android Beam’Stelefon til telefon NFC for å gjøre det til flerspiller.

Likte dette? Les disse!

  • Hvordan lage en app
  • Gratis graffiti skriftvalg
  • Illustrator tutorials: fantastiske ideer å prøve i dag!
  • Den ultimate guiden for å designe de beste logoene
  • De beste gratis nettfonter for designere

Ord: Richard Leggett

Richard er grunnlegger av Valis Interactive, med fokus på mobil- og webapputvikling.

Publikasjoner
De 12 HTML5-hackene som overbelaster mobilnettstedet ditt
Les Mer

De 12 HTML5-hackene som overbelaster mobilnettstedet ditt

Mobilnettet er en merkelig verden: du invi av nettle ere, ver joner, kjerm tørrel er, papirlø e funk joner, feil og nye problemer. Det er derfor vi i noen itua joner trenger å bryte noe...
Design en enkel mobilapp for iOS 7
Les Mer

Design en enkel mobilapp for iOS 7

Vi kal lage et iO 7-applika jon de ign ved hjelp av de me t pennende funk jonene i Apple nye mobile operativ y tem. Apple iO 7 introdu erer et nytt nytt ut eende til operativ y temet iPhone og iPad. G...
Adam Seligman om sosial virksomhet
Les Mer

Adam Seligman om sosial virksomhet

.net: Internett er alltid i endring. Hva kal bedrift eiere egentlig være inn tilt på? OM: Den tør te for tyrrel en vi er i næring livet akkurat nå er overgangen til o ialt. De...