Beam me over!

Android 4 NFC: ein Update

Sven Haiges

Im März 2011 kam das Nexus S in Deutschland auf den Markt. Ganz neu mit an Bord auf Basis von Android 2.3 war Near Field Communication (NFC). Viel wurde seitdem über die Zukunft dieser Technologie spekuliert. Tatsache ist aber, dass immer mehr Geräte mit NFC ausgeliefert werden und ebenso immer mehr entsprechende Dienste angeboten werden. Auch Android 4 enthält Neuerungen für Entwickler, die in diesem Update vorgestellt werden.

Android360

Der Artikel „Beam me over!“ von Sven Haiges ist erstmalig erschienen im

Android360 2.2012

Nachdem Google mit Google Wallet ein Bezahlsystem auf Basis von NFC – in den USA und nur auf wenigen Geräten verfügbar – eingeführt hatte, kam mit Android ICS (Ice Cream Sandwich) auch Android Beam. Dahinter verbirgt sich die NFC-Peer-to-Peer-Technologie, die den Austausch von Informationen zwischen zwei NFC-Geräten ermöglicht. Für den Nutzer bringt Android Beam den Vorteil, Informationen aus einer App durch einfaches Aneinanderhalten der Telefone auszutauschen. Google hat Android Beam bereits in zahlreiche seiner Apps integriert. So kann man eine Google Maps Location ganz einfach an ein anderes Android-ICS-Telefon „beamen“, indem man beide Telefone aneinanderhält. Um den Datenaustausch anzustoßen, muss der aktive Nutzer nur noch den Screen berühren – daher „Touch-to-Beam“ – und kann so die Location auf das andere Telefon „beamen“. Es öffnet sich beim zweiten Telefon automatisch die passende Applikation, hier Google Maps, und die entsprechende Location wird angezeigt. Dies funktioniert mittlerweile auch mit weiteren Google Apps: Google Play (ehem. Android Market), Contacts, Google Music, YouTube-Videos oder Websites. Auch erste Google-unabhängige App-Entwickler haben begonnen, die Vorzüge von NFC in ihre Apps zu integrieren. Ein Beispiel ist die App von Foursquare, dem bekannten Location-basierten Social Network.

NDEF Push aka Android Beam

Um Android Beam zu unterstützen, muss man lediglich die Methode setNdefPushMessage des NfcAdapters mit einem passenden NdefMessage -Objekt aufrufen. NDEF steht für „NFC Data Exchange Format“ und ist der vom NFC-Forum ausgerufene Standard, wenn es um Datenübertragung per NFC geht. Hiermit wird die übergebene Message einmal gesetzt und dann ausgeliefert, wenn ein passendes NFC-Telefon in Reichweite sowie die Aktivität im Vordergrund ist. Die Benutzung der Methode setNdefPushMessage ist sehr einfach, und im Nu ist eine Android-App dadurch kompatibel mit Android Beam. Allerdings kann die zu sendende Nachricht nur statisch belegt werden. Soll also eine Nachricht dynamisch erzeugt werden, sobald ein anderes NFC-Handy in Reichweite ist, so ist diese Methode nicht zu gebrauchen. Daher bietet ICS auch die Methode setNdefPushMessageCallback. Im NfcAdapter wird so ein Callback registriert (CreateNdefMessageCallback -Interface), der die Möglichkeit hat, die Nachricht dynamisch zu erzeugen. Das Beispiel in Listing 1 ist einer kleinen Demo-App entnommen.

Listing 1

@Override
protected void onResume() {
    super.onResume();
    
    NfcAdapter.getDefaultAdapter().setNdefPushMessageCallback(new NfcAdapter.CreateNdefMessageCallback() {
        
        @Override
        public NdefMessage createNdefMessage(NfcEvent event) {
            String dynamicURI = getURI();
            NdefRecord uriRecord = NdefRecord.createUri(dynamicURI);
            NdefRecord appRecord = NdefRecord.createApplicationRecord("com.company.app");
            return new NdefMessage(new NdefRecord[] {uriRecord, appRecord});
        }
    }, this);
}

private String getURI()
{
    //some dynamic content typically...
    return "http://svenhaiges.de"; 
}
Geschrieben von
Sven Haiges
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.