preloadImage preloadImage
Diese Seite verwendet Cookies. Durch die Nutzung unserer Dienste erklären Sie sich damit einverstanden, dass wir Cookies setzen. Mehr erfahren. OK
UNTERNEHMEN APP ENTWICKLUNG WEBENTWICKLUNG SOFTWAREENTWICKLUNG BLOCKCHAIN REFERENZEN BLOG JOBS KONTAKT

NFC Android App Entwicklung

NFC Android App Entwicklung

Was ist NFC?

NFC oder "Near Field Communication" ist ein Standard für kontaktlose Datenübertragung. Häufig wird diese Technologie in Verbindung mit Smartphones, Tablets und Notebooks verwendet.
Basierend auf der RFID-Technik, ist der Unterschied zwischen NFC und RFID im wesentlichen, dass bei NFC genormte Kopplungsverfahren (ISO 14443, 18092, 21481) und festgelegte Frequenzbereiche zum Einsatz kommen.

Es werden kontaktlos Daten aus einem Abstand von max. 10cm (near field) übertragen. Die Technologie ist als Erweiterung zur Wi-Fi-Technologie zu betrachten. Da ein solcher Chip, oder auch "Tag" genannt, keine eigene Energieversorgung in Form einer Batterie o.ä. besitzt, wird die Stromversorgung durch das aktive Gerät im Zuge der Kontaktaufnahme zur Verfügung gestellt.
 
NFC-Chips funktionieren nach dem Prinzip der elektromagnetischen Induktion. Elektromagnetische Wellen treffen auf eine Spule und erzeugen so den benötigten Strom. Die Belastung für den Akku des Smartphones bleibt dabei auf einem sehr geringen Niveau.
 
Wenn das NFC aktiviert ist, wird dabei nicht durchgängig nach Chips in der Nähe gesucht, sondern nur ca. 10 mal in der Sekunde. Das reine Suchen verbraucht dabei im Vergleich zum Verbindungsaufbau und der Datenübertragung nur wenig Akku-Leistung, dazu kommt, dass der Lese- bzw. Schreibvorgang in der Regel nur eine Sekunde braucht.
 
NFC bietet unter anderem durch die Normierungen eine sichere Verbindung und wird so zum Beispiel auch im Zahlungsverkehr verwendet. So können per EC/Kreditkarte kleinere Beträge bis zu 50,- EUR ohne weitere PIN-Abfrage per NFC beglichen werden.
 
Ebenfalls gibt es die Möglichkeit eine Peer-To-Peer Verbindung zwischen zwei NFC-fähigen Geräten aufzubauen, in diesem Artikel soll jedoch nicht weiter darauf eingegangen werden.
 
 
 

Welche Chips gibt es?

NFC-Chips kommen in verschiedenen Formen und Größen. Wichtig dabei ist allein die verwendete Technologie. Als grobe Unterscheidung gibt es den ISO/IEC 14443- und den ISO/IEC 15693-Standard. Diese legen unter anderem fest, welche Abmessungen, welche Frequenz und wie mit Kollisionen (also das gleichzeitige erkennen mehrerer Chips) umgegangen werden soll.
 
Diese Normen regeln hauptsächlich die grundlegende Kommunikation, jedoch gibt es viele weitere optionale Befehle. Das führt dazu, dass es sehr schwierig ist, eine allgemeingültige Anwendung zu schreiben, die mit jedem Chip funktioniert und alle Funktionen nutzen kann.
 
Um dieses Problem anzugehen hat das NFC-Forum verschiedene Spezifikationen ausgearbeitet, in welche sich die Technologien differenzieren lassen. Hinzu kam außerdem ein allgemeingültiges Format, wie Daten auf Softwareebene ausgetauscht werden, das "NFC Data Exchange Format" oder NDEF.
 
Wir beraten Sie gerne, unverbindlich und kostenlos, welche Chips für Ihre App die sinnvollsten sind.
 
 
 

Was ist zu beachten?

NFC-Chips können die Klasse "NdefFormatable" enthalten, das bedeutet dieser Chip muss zunächst in ein NDEF-fähiges Format gebracht werden. Android bietet in der NdefFormatable-Klasse mit der format()-Funktion eine Möglichkeit diese Formatierung zu Übernehmen.
 
 
 

Wie liest man einfach Nachrichten aus?

Zunächst benötigt man die folgende Permission, um NFC in der App nutzen zu können:
 
uses-permission android:name="android.permission.NFC"
 
 
Da die NFC-Permission unter dem Protection level "Normal" geführt wird, muss diese nicht extra vom Benutzer bestätigt werden. Anschließend muss der NFC-Adapter angesprochen werden:
 
NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(mContext);
 
 
Folgendes Snippet reagiert auf NFC-Events. Es wird dabei nur NFC-Technologien reagiert, die in self.techList definiert worden sind:
 
PendingIntent pendingIntent = PendingIntent.getActivity(this, REQUEST_CODE, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
IntentFilter filter = new IntentFilter();
filter.addAction(NfcAdapter.ACTION_TAG_DISCOVERED);

//ForegroundDispatch - beansprucht alle NFC-Events
mNfcAdapter.enableForegroundDispatch(this, pendingIntent, new IntentFilter[]{filter}, this.techList);
 
 
Da neue Daten per Intent ankommen, muss folgender Code in der onNewIntent-Methode ausgeführt werden:
 
if (nfcAvailable && intent != null && intent.getAction().equals(NfcAdapter.ACTION_TAG_DISCOVERED))
{
    Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
    Ndef ndef = Ndef.get(tag);

    if (ndef != null)
    {
        NdefMessage ndefMessage = ndef.getCachedNdefMessage();
        if (ndefMessage != null)
        {
            NdefRecord[] records = ndefMessage.getRecords();

            for (NdefRecord ndefRecord : records)
            {
                if (ndefRecord.getTnf() == NdefRecord.TNF_WELL_KNOWN && Arrays.equals(ndefRecord.getType(), NdefRecord.RTD_TEXT))
                {
                    try
                    {
                        nfcMessage = readText(ndefRecord);
                    }
                    catch (UnsupportedEncodingException e)
                    {
                        Log.e("NFC Encoding", "Unsupported Encoding");
                    }
                }
            }
        }
    }
}
 
 
 
 

Wie schreibt man einfache Nachrichten?

Das beschreiben eines NFC-Chip funktioniert vom Ablauf analog zum Auslesen. Es wird nach NFC-Chips Ausschau gehalten und wenn einer gefunden wurde, werden die Daten mittels einer NdefMessage übertragen
 
Hier exemplarisch dargestellt:
 
NdefMessage message = new NdefMessage(NdefRecord.createTextRecord("en", data));

Ndef ndef = Ndef.get(tag);
if(ndef != null)
{
    ndef.connect();
    ndef.writeNdefMessage(message);
    ndef.close();
}
05.05.2018
Schul App – für Lehrer, Schüler und Eltern
Schul App – für Lehrer, Schüler und Eltern
Schul App » Leichter lernen mit sinnvollen Apps für Bildung ✔ Echter Mehrwert für Lehrer, Schüler und Eltern durch Schul App Entwicklung ➨ Wir beraten.
01.11.2018
Wann macht Blockchain Sinn – Nur ein Hype?
Wann macht Blockchain Sinn – Nur ein Hype?
Distributed Ledger » wann ist Blockchain sinnvoll ✔ Trend oder Tech-Hype? Macht Blockchain Sinn in Ihrem Projekt ➨ Wir beraten.
19.10.2018
WebAR - Augmented Reality im Web Browser
WebAR - Augmented Reality im Web Browser
Augmented Reality im Web Browser ✔ WebAR, WebVR & WebXR » Ihre Webseite mit Augmented, Virtual & Mixed Reality ➨ Mehr Infos.
07.10.2018
FKT42 GmbH • Münsterstraße 5 • 59065 Hamm • Mail: info@fkt42.de • Tel.: +49 (2381) 92 92 799