Ich weiss nicht, ob ICH der richtige bin um das erklären zu können. Dazu habe ich mit NFC zu wenig Erfahrung.
Aber auch ich habe - oder bin gerade dabei - mir Gedanken gemacht wie NFC uns (der Firma) "behiflich" sein kann.
Mein aktueller Ansatz folgt weiter unten.
GRUNDSÄTZLICH muss man NFC schon als Event-driven ansehen....
- Der Benutzer scannt einen NFC-Tag und das System (android) versucht dem BefehlInhalt zu folgen. Es gibt sicherlich gewissen Standards wie eine URL.
Also; wird ein Tag gescannt wird eine App von Android gestartet die vorher angegeben hat, dass sie z.B. für eine ganz bestimmte "URL" zuständig sind.
Man kann seine aktuelle app während der Laufzeit auch in einen "Vordergrund-Modus" bringen und damit erreichen daß jeglicher gescannte NFC-Tag erstmal in der eigenen App ankommt.
Siehe ein Beispiel im Anhang: grundprogramm.zip
in diesem Beispiel wird, wenn die URL z.B. "beka://service/1234" lautet, das ganze an ein anderes Modul weiter gereicht. Also unterm Strich wird eine andere App gestartet mit dieser URL als Parameter.
Das zweite Beispiel ist eine solche App (serviceapp.zip). Diese meldet sich bei Android mittels eines Eintrages im Manifest an, um Android mitzuteilen, das die App für die folgenden URLs zuständig ist: beginnt eine URL so, dann wird android beim Scannen eins Tags diese App starten:
- beka://kunden/
- beka://service/
- beka://ab/
erreicht wird das durch den folgenden Eintrag im Manifest
AddActivityText(Main,
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Accepts URIs that begin with "beka://service” -->
<data android:scheme="beka" android:host="service" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Accepts URIs that begin with "beka://kunden” -->
<data android:scheme="beka" android:host="kunden" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Accepts URIs that begin with "beka://ab” -->
<data android:scheme="beka" android:host="ab" />
</intent-filter>
)
Grundsätzlich kann man auch ohne vorgeschaltetem "grundprogramm" arbeiten. Dann muss android aber die entscheidung abnehmen, welche App da gestartet wird. Es könnten mehrere pps sein die sich für etwas anmelden.
Is serviceapp also erstmal installiert und einmal gestartet worden, so sind die neuen URLs Android bekannt....
Scannt man nun (ohne laufendes Grundprogramm) einen Tag mit einer solchen URL dann startet Android sofort die Serviceapp. Zumindest ist das bei mir hier so. Keine Ahnung ob das so gewollt ist. Aber ich denke schon das man sich auf dieses Verhalten irgendwie verlassen kann/muss/sollte
Ziel meines rumspielens war/ist halt, das auf einem Tag z.B. die URL beka://service/2156 drauf ist. Scannt man diesen nun ein dann wird die Serviceapp gestartet und in einer listview werden die einzelnen "Parameter" angezeigt. Welche wierum die grundlage für die weitere Vorgehensweise der Serviceapp dienen soll... In obiger url soll halt ein Service mit der ID 2156 angezeigt werden....
Wie anfangs schon erwähnt bin ich ein noob was NFC betrifft. Verlasse Dich also nicht so sehr auf hier gemachte Angaben
Ich kann Dir nur meine persönlichen Erfahrungen/Ideen darlegen in der Hoffnung, das sie Dir vielleicht helfen mögen ;-)