Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Android Beam to technologia NFC (Near Field Communication) wprowadzona w systemie Android 4.0, która umożliwia aplikacjom udostępnianie informacji za pośrednictwem nfc w pobliżu.
System Android Beam działa przez wypychanie komunikatów za pośrednictwem komunikacji NFC, gdy dwa urządzenia są w zasięgu. Urządzenia o długości około 4 cm od siebie mogą udostępniać dane przy użyciu usługi Android Beam. Działanie na jednym urządzeniu tworzy komunikat i określa działanie (lub działania), które może obsługiwać wypychanie. Gdy określone działanie znajduje się na pierwszym planie, a urządzenia znajdują się w zasięgu, usługa Android Beam wypchnie komunikat do drugiego urządzenia. Na urządzeniu odbierającym wywoływana jest intencja zawierająca dane komunikatu.
System Android obsługuje dwa sposoby ustawiania komunikatów za pomocą usługi Android Beam:
SetNdefPushMessage- Przed zainicjowaniem śledzenia systemu Android aplikacja może wywołać funkcję SetNdefPushMessage, aby określić komunikat NdefMessage do wypychania nfc i działanie, które go wypycha. Ten mechanizm najlepiej używać, gdy komunikat nie zmienia się, gdy aplikacja jest używana.SetNdefPushMessageCallback— Po zainicjowaniu beam systemu Android aplikacja może obsłużyć wywołanie zwrotne w celu utworzenia NdefMessage. Ten mechanizm umożliwia opóźnienie tworzenia komunikatów, dopóki urządzenia nie będą w zasięgu. Obsługuje scenariusze, w których komunikat może się różnić w zależności od tego, co dzieje się w aplikacji.
W obu przypadkach, aby wysłać dane za pomocą usługi Android Beam, aplikacja wysyła element NdefMessage, pakujący dane w kilku NdefRecordselementach . Przyjrzyjmy się kluczowym punktom, które należy rozwiązać, zanim będziemy mogli wyzwolić usługę Android Beam. Najpierw będziemy pracować z stylem wywołania zwrotnego podczas tworzenia obiektu NdefMessage.
Tworzenie komunikatu
Możemy zarejestrować wywołania zwrotne za pomocą NfcAdapter metody Działania OnCreate . Na przykład przy założeniu, że NfcAdapter nazwana mNfcAdapter jest zadeklarowana jako zmienna klasy w działaniu, możemy napisać następujący kod, aby utworzyć wywołanie zwrotne, które skonstruuje komunikat:
mNfcAdapter = NfcAdapter.GetDefaultAdapter (this);
mNfcAdapter.SetNdefPushMessageCallback (this, this);
Działanie, które implementuje NfcAdapter.ICreateNdefMessageCallbackmetodę , jest przekazywane do powyższej SetNdefPushMessageCallback metody. Po zainicjowaniu beam systemu Android system wywoła CreateNdefMessagemetodę , z której działanie może utworzyć NdefMessage element , jak pokazano poniżej:
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;
}
Odbieranie komunikatu
Po stronie odbieranej system wywołuje intencję z ActionNdefDiscovered akcją , z której można wyodrębnić NdefMessage w następujący sposób:
IParcelable [] rawMsgs = intent.GetParcelableArrayExtra (NfcAdapter.ExtraNdefMessages);
NdefMessage msg = (NdefMessage) rawMsgs [0];
