Android'de NFC'ye başlarken

Yazar: Louise Ward
Yaratılış Tarihi: 5 Şubat 2021
Güncelleme Tarihi: 1 Haziran 2024
Anonim
Do animations affect the speed of Android?
Video: Do animations affect the speed of Android?

İçerik

NFC veya "Yakın Alan İletişimi", telefonlar, çıkartmalar ve kartlar gibi nesneler arasında kablosuz yakın veri iletişimine izin veren bir teknolojidir. Barclays PayWave veya Oyster Card'a aşinaysanız, bunun üzerine kurulu olan "RFID" teknolojisinin, verilerin yalnızca nesnelere birlikte dokunarak okunmasına izin verdiğini bilirsiniz. Telefona çıkartmalara, posterlere ve NFC ile diğer telefonlara dokunabilirsiniz. Bu işlem, bir web sitesini veya uygulamayı başlatmak, ödeme yapmak ve hatta her iki yönde de veri aktarmak için kullanılabilir (Android'de ikincisine Işın). QR kodlarıyla karşılaştırıldığında NFC, URL'leri açmak, uygulamaları indirmek ve hatta özel içeriği okumak ve yazmak için çok daha basit (ve yerleşik) bir mekanizma sağlar.

Bu eğiticide, NFC etiketlerine yazan ve aynı zamanda retro bir konsol oyunu için bunlardan Top Trumps benzeri verileri okuyan bir uygulama geliştireceğiz. Uygulamamız olmayan bir kullanıcı etikete dokunursa, onu Android Play Store'daki uygulamanın indirme sayfasına götürmek için yerleşik bir mekanizma kullanır. Yüklendikten sonra, sonraki dokunuşlar uygulamayı başlatacak ve oyun kartını ekranda gösterecektir. Hepsi 200 satırdan az kodda!


Takip etmek için Samsung Galaxy Nexus veya Samsung Nexus S gibi NFC özellikli bir Android telefona ihtiyacınız olacak. İhtiyacınız olan diğer şey birkaç NFC etiketi veya çıkartmasıdır.Bu birçok yeri çevrimiçi olarak bulabilirsiniz ancak RapidNFC, çeşitli yeniden yazılabilir etiketler içeren harika bir başlangıç ​​paketi sunar ve web sitesi ayrıca farklı etiket türleri hakkında iyi miktarda bilgi içerir. Bunları önceden biçimlendirilmiş olarak sipariş ettiğinizden emin olun (bu bir seçenek olarak görünür sonra ödeme), Android 4.0.2'deki bir hata tamamen boş etiketleri kodlamanızı engelleyebilir.

Daha fazla oku: Samsung Galaxy Tab S4 incelemesi

Kendi kodumuzu yazmaya başlamadan önce, etiketlerinizi okumanızı ve yazmanızı sağlamak için NXP TagWriter'ı indirmenizi de tavsiye ederim.

Metin ve URL okuma ve yazmanın yanı sıra, uygulamanın tercihler ekranından (menü düğmesinden erişilebilir) "profesyonel modu" ücretsiz olarak etkinleştirebilirsiniz. Bu, etkinleştirildikten sonra size etiketleri biçimlendirme / silme ve yazmaya karşı koruma olanağı verir.


Başlarken

Şimdi uygulamamızda… İlk iş, boş bir etikete bazı veriler yazmaktır. Uygulama indirme sayfasına ve oyun verilerinin kendisine NDEF (NFC Veri Değişim Biçimi) olarak bağlanan özel bir kayıt ekleyeceğiz.

Bu sayfadaki temel bölümleri vurgulayacağım için bu noktada kaynak kodunu açmanızı tavsiye ederim. Projeyi içe aktardığınızda, açın AndroidManifest.xml XML görünümünde.

NFC'yi kullanmadan önce, manifest XML'imize birkaç yeni etiket eklememiz gerekiyor:

kullanır-izin android: name = "android.permission.NFC" /> uses-feature android: name = "android.hardware.nfc" android: required = "true" /> activity android: name = ". CardActivity"> amaç -filter> eylem android: name = "android.nfc.action.NDEF_DISCOVERED" /> veri android: mimeType = "application / vnd.netmagazine.nfcdemo" /> kategori android: name = "android.intent.category.DEFAULT" / > / intent-filter> / activity>

kullanım izni etiketi, telefondaki NFC çipine erişmemize izin verecek ve donanım kullanır etiketi bunu bir gereklilik haline getirecek, bu da uygulamamızın Play Store'da yalnızca NFC özellikli telefonlarda görüneceği anlamına gelecektir. Bizim için CardActivity etiket yeni ekliyoruz amaç filtresi, bu, oyun formatımızdaki verileri içeren bir etiket tarandığında etkinliği başlatır. Bunu bir özel belirleyerek yapıyoruz mime türü, bu durumda ben "application / vnd.netmagazine.nfcdemo”. Android, etiket üzerindeki veriler için en iyi eşleşmeyi bulmaya çalışarak NFC etiket taramalarını yönetir, etiketin doğru uygulama tarafından işlendiğinden emin olmak için birkaç yedek mekanizma sağlar ve kullanıcının net bir hedef olmadığında bir seçici iletişim kutusundan seçim yapmasına olanak tanır. .



Yapmamız gereken ilk şey, boş bir NFC etiketine bazı veriler yazmaktır, bu nedenle MainActivity.java. Bu etkinlik, kullanıcı uygulamanın simgesini tıkladığında başlatılır. Basıldığında, bir etiketin yazmasını bekleyen bir düğme görüntüler.

Bizim onCreate () daha sonra kullanmak için NFC adaptörüne bir referans alıyoruz:

mAdapter = NfcAdapter.getDefaultAdapter (bu);

NfcAdapter , başka herhangi bir uygulama bir şans elde etmeden önce taranan etiketi dinlemeye başlamamıza olanak tanır. Buna "ön plan gönderimi" denir. Kullanıcı aradığımız düğmeye bastığında enableWriteMode () bu işleme başlamak için:

private void enableWriteMode () {mInWriteMode = true; PendingIntent pendingIntent = PendingIntent.getActivity (this, 0, new Intent (this, getClass ()). addFlags (Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); IntentFilter.OVEDDetected = new ); IntentFilter [] filtreler = yeni IntentFilter [] {tagDetected}; mAdapter.enableForegroundDispatch (this, pendingIntent, filtreler, null);}

Bu yöntemde bir Bekleyen bir etiket tarandığında çalıştırmak için, bu durumda sadece Amaç herhangi bir etiket tarandığında mevcut Etkinliği başlatmak için özel filtre ayarlamayın. Sistem gönderildiğinde ACTION_TAG_DISCOVERED, bu Etkinlik başlayacak ve onNewIntent () etiket detayları ile çağrılacak.


public void onNewIntent (Amaç amacı) {if (mInWriteMode) {mInWriteMode = false; Etiket etiketi = intent.getParcelableExtra (NfcAdapter.EXTRA_TAG); writeTag (etiket);}}

İçinde onNewIntent () NFC Etiketini çıkarırız ve ona yazmaya başlarız writeTag (). Bu, demomuzdaki en büyük yöntem:

private boolean writeTag (Etiket etiketi) {// uygulama yüklü değilse Play Store'u başlatmak için kaydedin NdefRecord appRecord = NdefRecord.createApplicationRecord ("com.netmagazine.nfcdemo"); // özel MIME_TYPE bayt [] payload = getRandomConsole () kullanarak özel "retro konsol" oyun verilerimizi içeren kayıt. getBytes (); bayt [] mimeBytes = MimeType.NFC_DEMO.getBytes (Charset.forName ("US-ASCII")); NdefRecord cardRecord = new NdefRecord (NdefRecord.TNF_MIME_MEDIA, mimeBytes, yeni bayt [0], yük); NdefMessage message = new NdefMessage (yeni NdefRecord [] {cardRecord, appRecord}); deneyin {// etiketin halihazırda NDEF olarak biçimlendirilmiş olup olmadığına bakın Ndef ndef = Ndef.get (etiket); eğer (ndef! = null) {ndef.connect (); if (! ndef.isWritable ()) {displayMessage ("Salt okunur etiket."); yanlış dönüş; } // dataint size = message.toByteArray () için ne kadar alana ihtiyacımız olduğunu hesaplayın. length; if (ndef.getMaxSize () size) {displayMessage ("Etikette yeterli boş alan yok."); yanlış dönüş; } ndef.writeNdefMessage (mesaj); displayMessage ("Etiket başarıyla yazıldı."); doğruya dön; } else {// etiketi biçimlendirmeyi dene NdefFormatable format = NdefFormatable.get (etiket); eğer (format! = null) {deneyin {format.connect (); format.format (mesaj); displayMessage ("Etiket başarıyla yazıldı!"); doğruya dön; } catch (IOException e) {displayMessage ("Etiket NDEF olarak biçimlendirilemiyor."); yanlış dönüş; }} else {displayMessage ("Etiket, NDEF biçimini desteklemiyor."); yanlış dönüş; }}} catch (İstisna e) {displayMessage ("Etiket yazılamadı"); } yanlış dönüş;}

NDEF

Sakladığımız veriler, tek bir NDEF Mesajı içinde NDEF Kayıtları halinde düzenlenir. Yaptığımız ilk şey bir "uygulama kaydı" oluşturmaktır, appRecord. Bu, Android 4 için yeni bir şeydir, NFC etiketinde eşleşen bir paket adı bulunursa sistemi uygulamanızı diğerlerinden önce başlatmaya zorlar. Bundan sonra bizim cardRecord rastgele oluşturulmuş bir oyun konsolu içeren. yük özel verilerimizi depoladığımız yerdir, bu durumda sadece küçük harflerle bir oyun konsolunun adı.


Ardından, etiketin halihazırda NDEF biçimlendirilmiş olup olmadığını, Ndef.get (etiket). Zaten NDEF biçimlendirilmişse, yazılabilir olup olmadığını ve verilerin çok büyük olmadığını kontrol ederiz. Her şey yolunda giderken verileri yazıyoruz ndef.writeNdefMessage (). Etiket halihazırda NDEF formatlı değilse NdefFormattable.format () Verileri etiketi biçimlendirirken aynı anda yazmak için. İşte bu, bir NFC etiketi yazdık!

Etiket yazılı olarak uygulamadan çıkmak ve etiketi yeniden taramak için ana sayfa düğmesine basın. Şimdi CardActivity ve konsolun oyun kartını gösterin. Açmak CardActivity.java bilgileri nasıl okuduğumuzu görmek için Amaç:

Amaç amaç = getIntent (); if (intent.getType ()! = Null && intent.getType (). Equals (MimeType.NFC_DEMO)) {Parcelable [] rawMsgs = getIntent (). GetParcelableArrayExtra (NfcAdapter.EXTRA_NDEF_MESS); NdefMessage msg = (NdefMessage) rawMsgs [0]; NdefRecord cardRecord = msg.getRecords () [0]; String consoleName = new String (cardRecord.getPayload ()); displayCard (consoleName);}

Burada sadece kontrol ediyoruz Amaç türün özel mime tipimizle eşleştiğinden emin olmak için. Bu kararlılıkla devam edebilir ve NdefMessage Intent'in ekstralarından. Bizim durumumuzda ilkini biliyoruz NdefRecord bizim cardRecord, yükte konsol adımızı içeren. Bilinen konsol adı ile bir ImageView'da doğru görüntüyü gösteriyoruz.

Çok kısa bir sürede bir NFC etiketine özel veriler yazmayı, bir uygulamayı okumak için otomatik olarak indirmeyi ve bu özel oyun verilerini okumayı başardık. Buradan, tamamen oynanabilir bir oyun haline gelmek için demoyu genişletebilir ve hatta Android Beam’Sçok oyunculu hale getirmek için telefondan telefona NFC.

Ilginç Makaleler
Hayatınızı kolaylaştıracak 15 HTML5 aracı
Daha Fazla Oku

Hayatınızı kolaylaştıracak 15 HTML5 aracı

HTML5 on uza dek ürecek gibi görünüyor, ancak a lında adece Ekim 2014'te tamamlandı - yaklaşık beş yıl önce uygulanma ına rağmen. Web’deki e ki itelerin çoğu, işlev e...
Cadılar Bayramı için 13 korkutucu ücretsiz yazı tipi
Daha Fazla Oku

Cadılar Bayramı için 13 korkutucu ücretsiz yazı tipi

Cadılar Bayramı hızla yaklaşırken, ize karanlık tarafınızı erbe t bırakma fır atı veren herhangi bir ayıda mev im el ta arımla görevlendirilebilir iniz. Yine de doğru yazı tipleri olmadan, bitmiş...
Illustrator'da mükemmel bir geometrik logo tasarımı oluşturun
Daha Fazla Oku

Illustrator'da mükemmel bir geometrik logo tasarımı oluşturun

Bu kı a Illu trator eğitiminde ta arımcı Will Pater on, Adobe Illu trator'da mükemmel bir geometrik logo ta arımının na ıl oluşturulacağını anlatıyor.Adobe Illu trator'ı edininAkıllı kıla...