NFC Introduction
NFC is near Field communication abbreviation, that is, the close-range wireless communication technology. NFC, developed jointly by Philips and Sony, is a non-
Contact identification and interconnection technology, can be used in mobile devices, consumer electronics,
Near-distance wireless communication between PC and smart control tools.
The 13.56MHz frequency operates within 20 cm of the distance. Its transmission speed has 106 kbit/seconds, 212 kbit/seconds or 424 kbit/seconds three kinds. Near-field communication is now
ISO/IEC is 18092 International standards, ECMA-340 standards and ETSI
TS 102 190 Standard. NFC uses both active and passive modes of communication.
Mobile NFC supports three modes of operation: read/write tag mode, point-to-dot mode, analog card mode.
Basic types of NFC
The Android platform offers two android.nfc and Android.nfc.tech packages with APIs to enable the operation of NFC tags.
There are 4 main classes of ANDROID.NFC packages:
Nfcmanager class: can be used to manage all NFC Adapter indicated on Android devices, but since most Android devices support only one NFC
Adapter, you can use the Getdefaultaapater method directly to obtain system-supported Adapter.
Nfcadapter class: This device's NFC adapter, can be defined intent to request that the system detects tags to send reminders to your activity, and provide the party
Law to register the front desk tag reminder release and front desk ndef push.
Ndefmessage class: Ndef is the data structure defined by the NFC Forum, which is used to effectively store data in tags such as text, URLs, and other MIME classes
Type. A ndefmessage plays a container of what data is sent and read from this container. A Ndefmessage object contains 0 or more
Ndefrecord, each ndef record has one type, such as text, URL, smart Poster/AD, or other MIME data. In
The first type of Nfcrecord in Ndefmessage is used to send tags to an activity on an Android device.
Tag class: identifies a passive NFC target, such as Tag,card, key hook, or even a phone analog NFC card. The label can be supplied with the
Method of operation.
Android.nfc.tech Bag
The Android.nfc.tech contains those classes that query properties on the tag and perform I/O operations. These classes are labeled with a different NFC technology standard supported by tag.
tagtechnology: This interface must be implemented by all of the following tag technology classes.
NFCA: supports ISO 14443-3a-standard properties and I/O operations.
NFCB: Nfc-b (ISO 14443-3b) properties and I/O operations.
NFCF: Properties and I/O operations for Nfc-f (JIS 6319-4).
NFCV: Nfc-v (ISO 15693) properties and I/O operations.
ISODEP: ISO-DEP (ISO 14443-4) properties and I/O operations.
Ndef: Read and write to a label that supports NDEF format.
ndefformatable: provides a formatted operation for tags that can be formatted into the NDEF format.
Mifareclassic: If the Android device supports Mifare, provides properties and I/O operations on the Mifare Classic target.
mifareultralight: If the Android device supports Mifare, provides properties and I/O operations to the Mifare ultralight target.
Basic NFC programming steps
Set permissions
Limit version number
Restricting installed devices
Define activity that can receive tags (information about the tag can be obtained)
Process business (depending on the notes of the specific business)
NFC Tag Filter system
Nfcmanager class:
Use Getsystemservice (java.lang.String) with Nfc_service to create a nfcmanager, then call Getdefaultadapter () to obtain T He nfcadapter.
Alternately, you can just call the static helper Getdefaultadapter (Android.content.Context).
public static Nfcadapter Getdefaultadapter (context context): Get the default NFC device on the phone
An NFC module, all calling this method.
Nfcadapter class:
Important constants (used to obtain information from intent, the intent is initiated by the system after NFC detects the tag, by Getintent (). Getparcelableextra (Nfcadapter. Constant name); method gets the corresponding object):
Extra_tag (required): It is a tag object that represents the tag being scanned;
Getparcelableextra (Nfcadapter.extra_tag) Gets the label object.
extra_ndef_messages (optional): It is an array that parses the NDEF message from the label. This additional information is enforced on the intent
The NDEF message can be obtained by Getparcelablearrayextra (nfcadapter.extra_ndef_messages).
extra_id (optional): low-level ID of the label.
The following three constants are used to determine the type of tag in the obtained intent:
action_ndef_discovered: Nfcadapter. action_ndef_discovered . Equals (Getintent (). Getaction ())
action_tag_discovered: Nfcadapter. action_tag_discovered . Equals (Getintent (). Getaction ())
action_tech_discovered: Nfcadapter. action_tech_discovered . Equals (Getintent (). Getaction ())
Important methods:
public boolean isenabled (): Used to determine whether the current NFC is in a usable state
public void Enableforegrounddispatch (activity activity, pendingintent intent, intentfilter[] filters, string[][]
techlists): Enable foreground dispatch to the given activity. Used to open the foreground scheduler (with the highest permissions) when the activity
Located in the foreground (foreground process), you can call this method to open the foreground scheduling, usually in the Onresume () callback method
public void Disableforegrounddispatch (activity activity): Closes the foreground schedule, typically in the OnStop () callback method
Ndefmessage class:
The following three methods are used to construct the tag data of a NDEF data structure (used for data transfer between activity and tag, read and write
The object is encapsulated)
Public Ndefmessage (byte[] data)
Public Ndefmessage (Ndefrecord record, Ndefrecord ... records)
Public Ndefmessage (ndefrecord[] Records)
Public byte[] Tobytearray ():
public int getbytearraylength ():
Public ndefrecord[] GetRecords (): Get the NDEF Records inside this NDEF Message.
Ndefrecord class:
The following two are construction methods:
Public Ndefrecord (short TNF, byte[] type, byte[] ID, byte[] payload):
Public Ndefrecord (byte[] data):
The following four methods get the type of the Ndefrecord object's corresponding field:
Public byte[] GetType ():
public short GETTNF ():
Public byte[] Getpayload ():
Public byte[] GetId ():
Tag class:
Public string[] Gettechlist (): Get The technologies available in this tag, as fully qualified class names.
Ndef class:
This class is used to package the read and write operation of the tag in the ndef format, and different tags are packaged in different classes in the Android.nfc.tech package.
public static Ndef get (Tag tag): Get a instance of Ndef for the given Tag. Building objects
public void Connect (): Enable I/O operations to the tag from this Tagtechnology object., open I/O operation
public boolean iswritable (): Determine if the tag is writable. Determine if writable
public int getmaxsize (): Get The maximum NDEF message, size in bytes.
public void Writendefmessage (Ndefmessage msg): Overwrite The ndefmessage in this tag. Write data to this tag
Public String GetType (): Get the NDEF tag type.
public boolean makereadonly (): Make a tag read-only.
Ndefformatable class :
Used to format other types of formats into NDEF format
public static ndefformatable get (Tag tag): Get a instance of ndefformatable for the given Tag. Returns NULL if
Ndefformatable was wasn't enumerated in Gettechlist (). This indicates the tag was not NDEF formatable by this Android
Device.
public void Connect (): Enable I/O operations to the tag from this Tagtechnology object.
public void Format (Ndefmessage firstmessage): Format a tag as NDEF, and write a ndefmessage.
NFC Foreground Scheduler
Give the right to handle NFC tags to a window (highest priority)
1, obtains the Nfcadapter object in the OnCreate ();
2. Create the pendingintent associated with the activity;
3. Specify a window to process the NFC tag, usually using Nfcadapter.enableforegrounddispatch () in the Onresume () method
to achieve;
4. Disable processing of NFC tags on Windows. Implemented using Nfcadapter.disableforegrounddispatch ().
Permission settings
Before you can access the NFC hardware of a device and properly handle the NFC intent, you need to declare the following key in Androidmanifest.xml first:
1.NFC access to NFC hardware using <uses-permission> elements:
<uses-permission android:name= "Android.permission.NFC"/>
2. The minimum SDK version needs to be set correctly, API Level 9 contains limited tag support, and the API level 10来 enables extensive read and write support for tag.
<USES-SDK android:minsdkversion= "Ten"/>
3. uses-feature element definition: Your program can then display NFC hardware in the Android market.
<uses-feature android:name= "ANDROID.HARDWARE.NFC" android:required= "true"/>
4. The NFC Intent filter tells the Android system that your activity can handle NFC data, and you can define 1 or more intent filter.