Android Beam
Android Beam adalah teknologi Near Field Communication (NFC) yang diperkenalkan di Android 4.0 yang memungkinkan aplikasi berbagi informasi melalui NFC ketika berada di dekatnya.
Android Beam bekerja dengan mendorong pesan melalui NFC saat dua perangkat berada dalam rentang. Perangkat sekitar 4cm satu sama lain dapat berbagi data menggunakan Android Beam. Aktivitas pada satu perangkat membuat pesan dan menentukan Aktivitas (atau Aktivitas) yang dapat menangani pendorongan. Ketika Aktivitas yang ditentukan berada di latar depan dan perangkat berada dalam rentang, Android Beam akan mendorong pesan ke perangkat kedua. Pada perangkat penerima, Niat dipanggil yang berisi data pesan.
Android mendukung dua cara mengatur pesan dengan Android Beam:
SetNdefPushMessage
- Sebelum Android Beam dimulai, aplikasi dapat memanggil SetNdefPushMessage untuk menentukan NdefMessage untuk mendorong NFC, dan Aktivitas yang mendorongnya. Mekanisme ini paling baik digunakan ketika pesan tidak berubah saat aplikasi sedang digunakan.SetNdefPushMessageCallback
- Ketika Android Beam dimulai, aplikasi dapat menangani panggilan balik untuk membuat NdefMessage. Mekanisme ini memungkinkan pembuatan pesan tertunda hingga perangkat berada dalam rentang. Ini mendukung skenario di mana pesan dapat bervariasi berdasarkan apa yang terjadi dalam aplikasi.
Dalam kedua kasus, untuk mengirim data dengan Android Beam, aplikasi mengirimkan NdefMessage
, mengemas data dalam beberapa NdefRecords
. Mari kita lihat poin-poin penting yang harus ditangani sebelum kita dapat memicu Android Beam. Pertama, kita akan bekerja dengan gaya panggilan balik untuk membuat NdefMessage
.
Membuat Pesan
Kita dapat mendaftarkan panggilan balik dengan NfcAdapter
dalam metode Aktivitas OnCreate
. Misalnya, dengan asumsi NfcAdapter
bernama mNfcAdapter
dinyatakan sebagai variabel kelas dalam Aktivitas, kita dapat menulis kode berikut untuk membuat panggilan balik yang akan membuat pesan:
mNfcAdapter = NfcAdapter.GetDefaultAdapter (this);
mNfcAdapter.SetNdefPushMessageCallback (this, this);
Aktivitas, yang mengimplementasikan NfcAdapter.ICreateNdefMessageCallback
, diteruskan ke metode di SetNdefPushMessageCallback
atas. Ketika Android Beam dimulai, sistem akan memanggil CreateNdefMessage
, dari mana Aktivitas dapat membangun seperti yang NdefMessage
ditunjukkan di bawah ini:
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;
}
Menerima Pesan
Di sisi penerimaan, sistem memanggil Niat dengan ActionNdefDiscovered
tindakan, dari mana kita dapat mengekstrak NdefMessage sebagai berikut:
IParcelable [] rawMsgs = intent.GetParcelableArrayExtra (NfcAdapter.ExtraNdefMessages);
NdefMessage msg = (NdefMessage) rawMsgs [0];