Սկսեք NFC Android- ով

Հեղինակ: John Stephens
Ստեղծման Ամսաթիվը: 23 Հունվար 2021
Թարմացման Ամսաթիվը: 17 Մայիս 2024
Anonim
Cashback InecoMobile-ով NFC վճարումներից
Տեսանյութ: Cashback InecoMobile-ով NFC վճարումներից

Բովանդակություն

  • Գիտելիք է անհրաժեշտ. Միջանկյալ Android
  • Պահանջում է. NFC- ով աշխատող Android հեռախոս
  • Րագրի ժամանակը. 30 րոպե
  • Աջակցության ֆայլ

NFC Android- ում NFC- ն նշանակում է «Near Field Communication» - տեխնոլոգիա, որը թույլ է տալիս անլար մոտիկության տվյալների հաղորդակցում հեռախոսների, պիտակների և քարտերի միջև: Եթե ​​ծանոթ եք Barclays PayWave- ին կամ Oyster Card- ին, ապա կիմանաք, որ դրա վրա կառուցված տեխնոլոգիան `« RFID »- ը, թույլ է տալիս տվյալների ընթերցումը` պարզապես իրար հպելով:

Կարող եք հեռախոսը դիպչել կպչուն պիտակների, պաստառների և NFC- ի, այլ հեռախոսների դեմ: Այս գործողությունը կարող է օգտագործվել վեբ կայք կամ ծրագիր գործարկելու, վճարում կատարելու կամ նույնիսկ տվյալների փոխանցում երկու ուղղություններով (Android- ում վերջինս կոչվում է Beառագայթ) Երբ համեմատվում է QR կոդերի հետ, NFC Android- ը տրամադրում է անհամեմատ ավելի պարզ (և ներկառուցված) մեխանիզմ URL- ների բացման, ծրագրեր ներբեռնելու կամ նույնիսկ հատուկ բովանդակություն կարդալու և գրելու համար:

  • Կարդացեք այստեղ մեր հավելվածների նախագծման բոլոր հոդվածները

Ինչ եք սովորելու

Այս ձեռնարկի մեջ մենք պատրաստվում ենք ստեղծել մի ծրագիր, որը գրում է NFC Android պիտակներին և կարդում է նրանցից Լավագույն տրամպերի նման տվյալներ ռետրո կոնսոլային խաղի համար: Եթե ​​մեր հավելվածից զուրկ օգտվողը դիպչի պիտակին, ապա այն կօգտագործի ներկառուցված մեխանիզմ, որպեսզի նրանց տեղափոխի Android Play Store- ի ծրագրի ներբեռնման էջ: Տեղադրվելուց հետո ցանկացած հետագա հպում գործարկում է ծրագիրը և էկրանին ցույց տալիս խաղի քարտը: Բոլորը `200 տողից պակաս ծածկագրով:


Որպեսզի հետևեք ձեզ, ձեզ հարկավոր է NFC- ով աշխատող Android հեռախոս, ինչպիսին են Samsung Galaxy Nexus- ը կամ Samsung Nexus S.- ը: Մյուս բանը, որ ձեզ հարկավոր է, մի քանի NFC պիտակ կամ պիտակ է: Այս շատ վայրեր կարող եք գտնել առցանց, բայց RapidNFC- ն առաջարկում է հիանալի մեկնարկային փաթեթ, որը ներառում է բազմատեսակ վերագրելի պիտակներ, իսկ կայքը նաև պարունակում է մեծ քանակությամբ տեղեկատվություն պիտակի տարբեր տեսակների շուրջ: Համոզվեք, որ դրանք պատվիրեք նախաձևաչափված (սա հայտնվում է որպես տարբերակ) հետո վճարում), Android 4.0.2- ի սխալը կարող է կանխել ձեզ ամբողջովին դատարկ պիտակները կոդավորելը:

Նախապատրաստական ​​աշխատանքներ

Նախքան սկսենք գրել մեր սեփական կոդը, ես նաև խորհուրդ կտամ ներբեռնել NXP TagWriter- ը ՝ ձեր պիտակները ծանոթանալու և գրելու համար:

Տեքստը և URL- ները կարդալու և գրելու հետ մեկտեղ հավելվածի նախապատվությունների էկրանին անվճար կարող եք միացնել «պրոֆեսիոնալ ռեժիմը» ​​(հասանելի է ընտրացանկի կոճակի միջոցով): Միացնելուց հետո սա հնարավորություն է տալիս ձևաչափել / ջնջել և պաշտպանել պիտակները:

01. Սկսել

Հիմա մեր ծրագրի վրա… Առաջին գործը դատարկ պիտակի վրա որոշ տվյալներ գրելն է: Մենք ներառելու ենք հատուկ գրառում, որը հղում է դեպի ծրագրի ներբեռնելու էջը և խաղի տվյալներն ինքնին ՝ NDEF (NFC տվյալների փոխանակման ձևաչափ):


Խորհուրդ եմ տալիս այս պահին բացել սկզբնաղբյուրը, քանի որ ես կարևորելու եմ այս էջի հիմնական մասերը: Երբ նախագիծը ներմուծվում է, բացեք AndroidManifest.xml XML տեսքով:

Նախքան NFC Android- ը օգտագործելը մենք պետք է մի քանի նոր պիտակներ ավելացնենք մեր մանիֆեստի XML- ին.

օգտագործում-թույլտվություն android: name = "android.permission.NFC" />
օգտագործում է հատկությունը android: name = "android.hardware.nfc" android: required = "true" />

գործունեություն android: name = ". CardActivity"
>
մտադրության զտիչ>
գործողություն android: name = "android.nfc.action.NDEF_DISCOVERED" />
տվյալների android: mimeType = "application / vnd.netmagazine.nfcdemo" />
android կատեգորիա: name = "android.intent.category.DEFAULT" />
/ մտադրության զտիչ>
/ գործունեություն>


Ի օգտագործում-թույլտվություն թեգը մեզ թույլ կտա մուտք գործել հեռախոսում գտնվող NFC չիպ, և այն օգտագործում-ապարատային թեգը դա կդարձնի պահանջ, ինչը կնշանակի, որ մեր ծրագիրը Play Store- ում հայտնվում է միայն NFC հնարավորություն ունեցող հեռախոսների համար: Մեր .... համար ՔարտԱկտիվություն թեգ մենք ավելացնում ենք նորը դիտավորյալ ֆիլտր, սա կսկսի գործունեությունը, երբ սկան սկանավորվի, որը պարունակում է տվյալներ մեր խաղի ձևաչափում: Մենք դա անում ենք ՝ նշելով սովորույթ միմիկայի տեսակ, այս դեպքում ես ընտրել եմ «դիմում / vnd.netmagazine.nfcdemo» Android- ը վարում է NFC պիտակի սկանավորումը `փորձելով գտնել պիտակի տվյալների լավագույն համընկնումը` տրամադրելով մի քանի հետադարձ մեխանիզմներ `համոզվելու, որ պիտը վարվում է ճիշտ ծրագրի կողմից և թույլ տալով օգտվողին ընտրություն կատարել ընտրողի երկխոսությունից, երբ չկա հստակ նպատակ: ,


Առաջին բանը, որ մենք պետք է անենք, գրել որոշ տվյալներ դատարկ NFC պիտակի վրա, այնպես որ բացեք MainActivity.java, Այս գործողությունը մեկնարկում է, երբ օգտագործողը կտտացնում է ծրագրի պատկերակը: Այն ցուցադրում է կոճակ, որը սեղմելիս սպասում է, թե երբ է պիտակը գրելու:


Մեր մեջ onCreate () մենք վերցնում ենք հղում դեպի NFC ադապտեր հետագա օգտագործման համար.

mAdapter = NfcAdapter.getDefaultAdapter (սա);

Ի NfcAdapter թույլ է տալիս մեզ սկսել լսել պիտակը, որը սկանավորվում է, նախքան որևէ այլ ծրագիր հնարավորություն կստանա: Սա կոչվում է «առաջին պլանի առաքում»: Երբ օգտագործողը սեղմում է այն զանգը, որը մենք կանչում ենք enableWriteMode () սկսել այս գործընթացը.

private void enableWriteMode () {
mInWriteMode = ճիշտ;
PendingIntent pendingIntent = PendingIntent.getActivity (սա ՝ 0,
նոր մտադրություն (սա, getClass ()): addFlags (մտադրություն. FLAG_ACTIVITY_SINGLE_TOP), 0);

IntentFilter tagDetected = նոր IntentFilter (NfcAdapter.ACTION_TAG_DISCOVERED);
IntentFilter [] ֆիլտրեր = նոր IntentFilter [] {tagDetected};

mAdapter.enableForegroundDispatch (սա, pendingIntent, զտիչներ, null);
}

Այս մեթոդով մենք ստեղծեցինք ա Առկախ գործարկել, երբ պիտակը սկանավորվի, այս դեպքում մենք պարզապես ուզում ենք Դիտավորություն գործարկել ընթացիկ գործողությունը, երբ որևէ պիտակ սկանավորվում է, այնպես որ հատուկ զտիչներ մի տեղադրեք: Երբ համակարգը ուղարկում է ACTION_TAG_ ԲԱԱՀԱՅՏՎԵ, այս Գործունեությունը կմեկնարկի և onNewIntent () կկանչվի պիտակի մանրամասներով:


հանրային դատարկություն NewIntent (դիտավորության մտադրություն) {
եթե (mInWriteMode) {
mInWriteMode = կեղծ;

Պիտակի պիտակ = intent.getParcelableExtra (NfcAdapter.EXTRA_TAG);
writeTag (պիտակ);
}
}

Ներսում onNewIntent () մենք դուրս ենք հանում NFC պիտակը և սկսում ենք գրել դրան գրելTag (), Սա մեր ցուցադրության հեռու ամենամեծ մեթոդն է.

private boolean writeTag (Պիտակի պիտակ) {
// ձայնագրում ՝ Play Store- ը գործարկելու համար, եթե ծրագիրը տեղադրված չէ
NdefRecord appRecord = NdefRecord.createApplicationRecord ("com.netmagazine.nfcdemo");

// գրառում, որը պարունակում է մեր հարմարեցված «ռետրո կոնսոլ» խաղի տվյալները ՝ օգտագործելով հարմարեցված MIME_TYPE
բայթ [] payload = getRandomConsole (). getBytes ();
բայթ [] mimeBytes = MimeType.NFC_DEMO.getBytes (Charset.forName ("US-ASCII"));
NdefRecord cardRecord = նոր NdefRecord (NdefRecord.TNF_MIME_MEDIA, mimeBytes, նոր բայթ [0], բեռի բեռ);
NdefMessage հաղորդագրություն = նոր NdefMessage (նոր NdefRecord [] {cardRecord, appRecord});

փորձել {
// տես, թե արդյոք պիտակն արդեն NDEF ձևաչափված է
Ndef ndef = Ndef.get (պիտակ);
եթե (ndef! = null) {
ndef.connect ();

եթե (! ndef.isWritable ()) {
displayMessage ("Միայն կարդալու պիտակ");
վերադարձ կեղծ;
}

// մշակել, թե որքան տարածք է մեզ պետք տվյալների համար
int size = message.toByteArray (). երկարություն;
եթե (ndef.getMaxSize () չափը) {
displayMessage («Պիտակը չունի բավարար ազատ տարածք»);
վերադարձ կեղծ;
}

ndef.writeNdefMessage (հաղորդագրություն);
displayMessage («Պիտակը հաջողությամբ գրված է»);
վերադարձնել ճշմարիտ;
} ուրիշ {
// հատկորոշիչի ձևաչափման փորձ
NdefFormatable ձևաչափ = NdefFormatable.get (պիտակ);
if (ձևաչափ. = null) {
փորձել {
format.connect ();
ձևաչափ. ձևաչափ (հաղորդագրություն);
displayMessage («Պիտակը հաջողությամբ գրված է»);
վերադարձնել ճշմարիտ;
} բռնել (IOException ե) {
displayMessage ("Անհնար է պիտակավորել NDEF- ին:");
վերադարձ կեղծ;
}
} ուրիշ {
displayMessage («Պիտակն ըստ ամենայնի չի աջակցում NDEF ձևաչափին»:);
վերադարձ կեղծ;
}

02. NDEF

Մեր պահած տվյալները կազմված են NDEF Records- ի մեկ NDEF հաղորդագրության ներսում: Առաջին բանը, որ մենք անում ենք ՝ ստեղծել «կիրառման գրառում», appRecord, Սա նոր բան է Android 4-ի համար, այն ստիպում է համակարգին գործարկել ձեր ծրագիրը մյուսներից առաջ, եթե համապատասխան փաթեթի անուն գտնվի NFC պիտակում: Դրանից հետո մենք ստեղծում ենք մեր cardRecord որը պարունակում է պատահականորեն ստեղծված խաղային կոնսոլ: Ի ծանրաբեռնվածություն այստեղ է, որտեղ մենք պահում ենք մեր անհատական ​​տվյալները, այս դեպքում `պարզապես խաղային վահանակի անունը` փոքրատառով:

Հաջորդը մենք որոշում ենք, թե արդյոք պիտակն արդեն NDEF ձևաչափված է ՝ զանգահարելով Ndef.get (պիտակ), Եթե ​​դա արդեն NDEF ձևաչափված է, մենք ստուգում ենք, որ այն գրելի է, և որ տվյալները չափազանց մեծ չեն: Լավ վիճակում մենք գրում ենք տվյալները ndef.writeNdefMessage (), Եթե ​​պիտակն արդեն NDEF ձևաչափված չէր, մենք օգտագործում ենք NdefFormattable.format () գրել տվյալները ՝ միևնույն ժամանակ, թեգը ձևավորելով: Վերջ, մենք գրել ենք NFC պիտակ:

Գրված պիտակով հարվածեք տան կոճակին ՝ հավելվածից դուրս գալու և պիտը նորից սկանավորելու համար: Այժմ այն ​​պետք է մեկնարկի ՔարտԱկտիվություն և ցույց տալ վահանակի խաղաթուղթը: Բացել CardActivity.java տեսնել, թե ինչպես ենք մենք կարդում տեղեկատվությունը Դիտավորություն:

Intent intent = getIntent ();
if (intent.getType ()! = null && intent.getType (). հավասար է (MimeType.NFC_DEMO)) {
Հասանելի [] հումՄսգներ =
getIntent (). getParcelableArrayExtra (NfcAdapter.EXTRA_NDEF_

Հաղորդագրություններ);
NdefMessage msg = (NdefMessage) rawMsgs [0];
NdefRecord cardRecord = msg.getRecords () [0];
String consoleName = new String (cardRecord.getPayload ());
displayCard (կոնսոլի անունը);
}

}
} բռնել (բացառություն ե) {
displayMessage («Չհաջողվեց գրել պիտակ»);
}

վերադարձ կեղծ;
}

Այստեղ մենք պարզապես ստուգում ենք այն Դիտավորություն համոզվելու համար, որ տեսակը համապատասխանում է մեր սովորական միմիկայի տեսակին: Այդ վճռականությամբ մենք կարող ենք առաջ գնալ և գրավել այն NdefMessage Intent’s հավելվածներից: Մեր դեպքում մենք գիտենք առաջինը NdefRecord մերն է cardRecord, բեռի բեռի մեջ պարունակելով մեր մխիթարիչի անունը: Հայտնի վահանակի անունով մենք պարզապես ցույց ենք տալիս ճիշտ պատկերը ImageView- ում:

Շատ քիչ ժամանակ մեզ հաջողվեց գրել հատուկ տվյալներ NFC պիտակի վրա, ավտոմատ կերպով ներբեռնել մի ծրագիր ՝ այն կարդալու և հետ կարդալու այդ հատուկ խաղի տվյալները: Այստեղից դուք կարող եք ընդլայնել ցուցադրումը ՝ լիարժեք նվագելու խաղ դառնալու և նույնիսկ օգտագործելու համար Android BeamԻհեռախոսը հեռախոսին NFC դարձնել այն բազմաֆունկցիոնալ խաղացող:

Դուր եկավ սա Կարդացեք սրանք:

  • Ինչպես ստեղծել ծրագիր
  • Գրաֆիտիի տառատեսակների անվճար ընտրություն
  • Illustrator ձեռնարկներ. Զարմանալի գաղափարներ այսօր փորձելու համար:
  • Լավագույն լոգոտիպերի նախագծման վերջնական ուղեցույցը
  • Լավագույն անվճար վեբ տառատեսակները դիզայներների համար

Բառեր ՝ Ռիչարդ Լեգեթ

Ռիչարդը Valis Interactive- ի հիմնադիրն է ՝ կենտրոնանալով բջջային և վեբ հավելվածների զարգացման վրա:

Հոդվածներ Ձեզ Համար
Լավագույն նկարչական գրքերը ՝ ավելի լավ նկարիչ դարձնելու համար
Հայտնաբերել

Լավագույն նկարչական գրքերը ՝ ավելի լավ նկարիչ դարձնելու համար

Լավագույն նկարազարդ գրքերի ընտրությունը մատչելի բազմաթիվ տարբերակներից մեծ խնդիր է թվում, քանի որ ձեր ընտրությունն իրական ազդեցություն ունի ձեր աշխատանքի վրա: Heրաներկ և մարկեր օգտագործող արվեստագետնե...
Նախագծում օգտագործողների համար
Հայտնաբերել

Նախագծում օգտագործողների համար

Այս հոդվածը առաջին անգամ հայտնվեց .net ամսագրի 237 համարում ՝ աշխարհի ամենաշատ վաճառվող ամսագիրը վեբ դիզայներների և մշակողների համար:Դիզայներական մասնագիտության շրջանակներում ընդունված է ականատես լինե...
Այս տպավորիչ կողմնակի նախագիծը գիտի, թե ժամը քանիսն է
Հայտնաբերել

Այս տպավորիչ կողմնակի նախագիծը գիտի, թե ժամը քանիսն է

Լավ կողմնակի նախագծի նման ոչինչ չկա, որպեսզի ձեզ սուր պահեն: Անկախ նրանից, թե դա նախագծում է ձեր սեփական անվճար տառատեսակները, թե պատրաստ է խաղաքարտերի տախտակամած, կողմնակի նախագիծը կարող է խթանել ձեր...