Using the NFC library you can read NFC tags formatted in NDEF form (NFC Data Exchange Format).
You can read more information about the internal process here: NFC Basics | Android Developers
This library requires Android version 2.3.3 or above (API level 10 or above).
Whenever an NDEF tag is read, Android sends an intent with the extracted data. You should declare that your activity wants to handle such intents.
This is done by adding "intent filters" with the manifest editor.
There are two types of data that you can handle: text data and Uri data.
When your activity receives an Intent, the activity is first created. If the activity is currently running then it will be paused and created again.
You can use code similar to the following code to test whether the starting intent is actually an Ndef intent and then extract the records (usually a single record) from the intent:
Text data
Tags with text data include a MIME field that helps the OS decide which application should handle the intent.
For example if you want to handle messages with the "text/plain" mime (with the main activity) then you should add the following code in the manifest editor:
Note that you can add any number of intent filters.
Call NdefRecord.GetAsTextType to convert the payload to a string.
Uri data
The intent filter of Uri tags should look like:
The above example will handle any Uri that points to a page starting with ht*p://www.b4x.com.
Call NdefRecord.GetAsUriType to convert the payload to the Uri.
Testing NFC tags
I recommend you to use an application such as NFC TagWriter by NXP.
It allows you to store data formatted as Ndef on many types of tags.
NFC TagInfo is also useful to find the stored data and the mime type.
The library is available here: http://www.b4x.com/forum/additional-libraries-official-updates/14933-nfc-library.html
You can read more information about the internal process here: NFC Basics | Android Developers
This library requires Android version 2.3.3 or above (API level 10 or above).
Whenever an NDEF tag is read, Android sends an intent with the extracted data. You should declare that your activity wants to handle such intents.
This is done by adding "intent filters" with the manifest editor.
There are two types of data that you can handle: text data and Uri data.
When your activity receives an Intent, the activity is first created. If the activity is currently running then it will be paused and created again.
You can use code similar to the following code to test whether the starting intent is actually an Ndef intent and then extract the records (usually a single record) from the intent:
B4X:
Sub Process_Globals
Dim NFC As NFC
End Sub
Sub Activity_Resume
If NFC.IsNdefIntent(Activity.GetStartingIntent) Then
Dim records As List
records = NFC.GetNdefRecords(Activity.GetStartingIntent)
For i = 0 To records.Size - 1
Dim r As NdefRecord
r = records.Get(i)
Log(r.GetAsTextType)
Next
End If
End Sub
Text data
Tags with text data include a MIME field that helps the OS decide which application should handle the intent.
For example if you want to handle messages with the "text/plain" mime (with the main activity) then you should add the following code in the manifest editor:
B4X:
AddActivityText(main, <intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="text/plain" />
</intent-filter>)
Call NdefRecord.GetAsTextType to convert the payload to a string.
Uri data
The intent filter of Uri tags should look like:
B4X:
AddActivityText(main, <intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http"
android:host="www.b4x.com" />
</intent-filter>)
Call NdefRecord.GetAsUriType to convert the payload to the Uri.
Testing NFC tags
I recommend you to use an application such as NFC TagWriter by NXP.
It allows you to store data formatted as Ndef on many types of tags.
NFC TagInfo is also useful to find the stored data and the mime type.
The library is available here: http://www.b4x.com/forum/additional-libraries-official-updates/14933-nfc-library.html