Android Beam
Android Beam, Uygulamaların yakın mesafedeyken NFC üzerinden bilgi paylaşmasına olanak tanıyan, Android 4.0'da kullanıma sunulan bir Yakın Alan İletişimi (NFC) teknolojisidir.
Android Beam, iki cihaz aralıkta olduğunda NFC üzerinden ileti göndererek çalışır. Birbirinden yaklaşık 4 cm'lik cihazlar Android Beam kullanarak veri paylaşabilir. Bir cihazdaki Etkinlik bir ileti oluşturur ve göndermeyi işleyebilen bir Etkinlik (veya Etkinlikler) belirtir. Belirtilen Etkinlik ön planda olduğunda ve cihazlar aralıkta olduğunda, Android Beam iletiyi ikinci cihaza iletir. Alıcı cihazda, ileti verilerini içeren bir Intent çağrılır.
Android, Android Beam ile iletileri ayarlamanın iki yolunu destekler:
SetNdefPushMessage
- Android Beam başlatılmadan önce bir uygulama SetNdefPushMessage'ı çağırarak NFC üzerinden gönderim için bir NdefMessage ve onu gönderen Etkinliği belirtebilir. Bu mekanizma, bir uygulama kullanımdayken ileti değişmediğinde en iyi şekilde kullanılır.SetNdefPushMessageCallback
- Android Beam başlatıldığında, bir uygulama ndefMessage oluşturmak için geri çağırmayı işleyebilir. Bu mekanizma, cihazlar aralığa gelene kadar ileti oluşturma işleminin geciktirilmesine olanak tanır. İletinin uygulamada olup bitenlere göre değişebileceği senaryoları destekler.
Her iki durumda da, Android Beam ile veri göndermek için bir uygulama gönderir NdefMessage
ve verileri birkaç NdefRecords
içinde paketler. Android Beam'i tetikleyebilmeniz için önce ele alınması gereken önemli noktalara göz atalım. İlk olarak, oluşturma NdefMessage
işleminin geri çağırma stiliyle çalışacağız.
İleti Oluşturma
Geri çağırmaları Etkinliğin OnCreate
yönteminde ile NfcAdapter
kaydedebiliriz. Örneğin, bir NfcAdapter
adlandırılmış öğesinin mNfcAdapter
Activity içinde sınıf değişkeni olarak bildirildiğini varsayarsak, iletiyi oluşturacak geri çağırmayı oluşturmak için aşağıdaki kodu yazabiliriz:
mNfcAdapter = NfcAdapter.GetDefaultAdapter (this);
mNfcAdapter.SetNdefPushMessageCallback (this, this);
uygulayan NfcAdapter.ICreateNdefMessageCallback
Activity yukarıdaki yönteme SetNdefPushMessageCallback
geçirilir. Android Beam başlatıldığında, sistem aşağıda gösterildiği gibi Etkinliğin bir NdefMessage
oluşturabileceği öğesini çağırırCreateNdefMessage
:
public NdefMessage CreateNdefMessage (NfcEvent evt)
{
DateTime time = DateTime.Now;
var text = ("Beam me up!\n\n" + "Beam Time: " +
time.ToString ("HH:mm:ss"));
NdefMessage msg = new NdefMessage (
new NdefRecord[]{ CreateMimeRecord (
"application/com.example.android.beam",
Encoding.UTF8.GetBytes (text)) });
} };
return msg;
}
public NdefRecord CreateMimeRecord (String mimeType, byte [] payload)
{
byte [] mimeBytes = Encoding.UTF8.GetBytes (mimeType);
NdefRecord mimeRecord = new NdefRecord (
NdefRecord.TnfMimeMedia, mimeBytes, new byte [0], payload);
return mimeRecord;
}
İleti Alma
Alan tarafında sistem, NdefMessage'ı aşağıdaki gibi ayıklayabileceğiniz eylemiyle ActionNdefDiscovered
bir Intent çağırır:
IParcelable [] rawMsgs = intent.GetParcelableArrayExtra (NfcAdapter.ExtraNdefMessages);
NdefMessage msg = (NdefMessage) rawMsgs [0];