NFC簡介
NFC是Near Field Communication縮寫,即近距離無線通訊技術。由飛利浦公司和索尼公司共同開發的NFC是一種非
接觸式識別和互聯技術,可以在行動裝置、消費類電子產品、
PC 和智能控制項工具間進行近距離無線通訊。
13.56MHz頻率運行於20厘米距離內。其傳輸速度有106 Kbit/秒、212 Kbit/秒或者424 Kbit/秒三種。目前近距離無線通訊已通
過成為ISO/IEC IS 18092國際標準、ECMA-340標準與ETSI
TS 102 190標準。NFC採用主動和被動兩種通訊模式。
手機NFC支援三種工作模式:讀/寫標籤模式,點到點模式,類比卡片模式。
NFC的基本類
Android平台提供了兩個android.nfc 和android.nfc.tech包,裡面有API來實現NFC標籤的操作。
android.nfc包的主要有4個類:
NfcManager類:可以用來管理Android裝置中指出的所有NFC Adapter,但由於大部分Android裝置只支援一個NFC
Adapter,可以直接使用getDefaultAapater方法來擷取系統支援的Adapter。
NfcAdapter類:本裝置的NFC adapter,可以定義Intent來請求將系統檢測到tags的提醒發送到你的Activity,並提供方
法去註冊前台tag提醒發布和前台NDEF推送。
NdefMessage類:NDEF是NFC論壇定義的資料結構,用來有效存資料到標籤中,如文本,URL,和其他MIME類
型。一個NdefMessage扮演一個容器,這個容器存哪些發送和讀到的資料。一個NdefMessage對象包含0或多個
NdefRecord,每個NDEF record有一個類型,比如文本,URL,智慧型海報/廣告,或其他MIME資料。在
NDEFMessage裡的第一個NfcRecord的類型用來發送tag到一個android裝置上的activity。
Tag類:標示一個被動的NFC目標,比如tag,card,鑰匙掛扣,甚至是一個電話類比的的NFC卡。可提供對標籤的各
種操作方法。
android.nfc.tech包
android.nfc.tech包含那些對tag查詢屬性和進行I/O操作的類。這些類分別標示一個tag支援的不同的NFC技術標準。
TagTechnology: 這個介面是下面所有tag technology類必須實現的。
NfcA: 支援ISO 14443-3A 標準的屬性和I/O操作。
NfcB:NFC-B (ISO 14443-3B)的屬性和I/O操作。
NfcF:NFC-F (JIS 6319-4)的屬性和I/O操作。
NfcV: NFC-V (ISO 15693)的屬性和I/O操作。
IsoDep:ISO-DEP (ISO 14443-4)的屬性和I/O操作。
Ndef:對支援NDEF格式的標籤進行讀寫操作。
NdefFormatable: 對那些可以被格式化成NDEF格式的tag提供一個格式化的操作。
MifareClassic: 如果android裝置支援MIFARE,提供對MIFARE Classic目標的屬性和I/O操作。
MifareUltralight: 如果android裝置支援MIFARE,提供對MIFARE Ultralight目標的屬性和I/O操作。
NFC編程基本步驟
設定許可權
限制版本號碼
限制安裝的裝置
定義可接收Tag的Activity(可獲得標籤的相關資訊)
處理業務(根據便簽的具體業務)
NFC標籤過濾系統
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前台調度
將處理NFC標籤的權利交給某個視窗(優先順序最高)
1、在onCreate()中獲得NfcAdapter對象;
2、建立與該Activity關聯的PendingIntent;
3、指定一個用於處理NFC標籤的視窗;通常會在onResume()方法中採用nfcAdapter.enableForegroundDispatch()
來實現;
4、禁止視窗處理NFC標籤。採用nfcAdapter.disableForegroundDispatch()來實現。
使用權限設定
在你能訪問一個裝置的NFC硬體和正確的處理NFC的Intent之前,需要在AndroidManifest.xml中先聲明下面的項:
1.NFC使用 元素來訪問NFC硬體:
2.最小SDK版本需要設定正確, API level 9隻包含有限的tag支援;用API level 10來實現對tag的廣泛的讀寫支援。
3. uses-feature 元素定義:你的程式可以再android市場裡顯示有NFC硬體。
4. NFC intent filter告訴android系統你的activity能處理NFC資料,可以定義1個或多個intent filter。