Բովանդակություն
- Գիտելիք է անհրաժեշտ. Միջանկյալ 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- ի հիմնադիրն է ՝ կենտրոնանալով բջջային և վեբ հավելվածների զարգացման վրա: