4. SimpleNFC - Entwicklung eines NFC-Frameworks für Android 38 4.2 Ist-Zustand Da NFC als Standard noch sehr jung ist1 , existieren relativ viele verschiedene Normen. Die meisten Normen wurden als properitäre Normen von Hardware-Herstellern ins Leben gerufen. Manche davon wurden von offiziellen Gremien, wie der Internationale Organisation für Normung, verabschiedet, manche befinden sich noch immer im Status der Abstimmung. Android-Geräte mit NFC-Chips unterstützen lediglich genormte Standards. Diese werden in zwei Kategorien eingeteilt: NfcA, NfcB, NfcF, NfcV, IsoDep und Ndef gehören zu den obligatorischen Protokollen, welche jedes Android-Gerät interpretieren kann. Optional können Hersteller das System noch um Protokolle für MifareClassic, MifareUltralight und NdefFormatable erweitern. Betrachtet man die dafür erschaffene Schnittstelle von Android, so sieht man, dass der Zugriff auf die meisten Standards (genauer gesagt: alle außer Ndef) sehr rudimentär aufgebaut ist. Die Kommunikation mit der Smartcard erfolgt lediglich über raw bytes (unformatierter Text) und es gibt keinerlei Strukturvorgaben oder Einteilungen in Messages und Records. Lediglich für den Ndef-Standard gibt es eine komfortablere Schnittstelle. Wie in Kapitel 3.7 beschrieben, definiert das Ndef-Protokoll Formatierungsvorgaben wie die NdefMessage und den NdefRecord. NdefMessages, als Behältnis für NdefRecords, erfordern keine besondere Konfiguration. Sie werden mit einem Array aus NdefRecords initialisiert und sind einsatzbereit. NdefRecords hingegen können vielfältig konfiguriert werden. Nicht die einzelnen Felder für sich, vielmehr die vielfachen Kombinationen aus Type Name Formats und Record Type Definitions machen es schwierig für jedes Anwendungsszenario die richtige Kombination zu finden. Dabei kann es, abhängig von der Wahl des TNF, zu mehr oder weniger komplexen Kombinationen kommen. Als Type Name Format gibt Android sieben verschiedene Formate (siehe Abbildung 4.1) vor. Enthalten sind Formate für leere Records, Records mit bekannten bzw. unbekannten Inhalten, Records mit Inhalten, die aus dem Internet geladen werden müssen und noch einige mehr. Jedes Format schreibt dabei vor, welcher Inhalt für die Record Type Definition erlaubt ist. Dabei gibt es sowohl TNFs, die für die Record Type Definition keinen Inhalt als auch eine individuelle Zeichenkette als Inhalt vorsehen. Lediglich für TNF WELL KNOWN existiert eine Liste an Auswahlmöglichkeiten (siehe Abbildung 4.2). Wie man unschwer erkennt, gibt es eine Vielzahl von möglichen Kombinationen, die es erfahrenen Entwicklern ermöglicht, NFC über das eigentliche Ökosystem Android hinaus zu verwenden. Für die meisten Nutzerszenarien würde jedoch auch bedeutend weniger Komplexität ausreichen. Doch selbst wenn sich Entwickler für das Ndef-Protokoll entscheiden, ist der Zugriff auf Tags nicht so komfortabel wie er sein könnte. Vor dem eigentlichen Beschreiben ist es nötig,ein gewisses Maß an Vorarbeit zu leisten. Dazu muss der Entwickler jedes mal überprüfen, ob der Tag beschreibbar ist und die Kapazität für die Daten ausreicht. Danach wird kontrolliert, ob der Tag bereits formatiert ist. Sollte er unformatiert vorliegen, muss er vor dem Beschreiben formatiert werden. Da jedoch nicht alle Tags für das Ndef- Protokoll formatiert werden können, muss auch diese Kompatibilität überprüft werden. All 1 In 2002 wurden die ersten Entwürfe für eine NFC-Norm zusammen von NXP Semiconductors und Sony veröffentlicht. Quelle: http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_ detail.htm?csnumber=53430, abgerufen am 28.06.2012
Abbildung 4.1: Listedermöglichen Type Name Formats, Quelle: http://goo.gl/65FJ5, abgerufen am 28.06.2012 Abbildung 4.2: Liste der möglichen Record Type Definitions für den TNF TNF WELL KNOWN, Quelle: http://developer.android.com/guide/topics/nfc/ nfc.html, abgerufen am 28.06.2012 4.2. Ist-Zustand 39