Android NFC API概述 Android中提供的與NFC相關(guān)的較高層的類都包含在android.nfc中,這個(gè)包中包含了用于與本地NFC適配器交互的類,用于代表已經(jīng)識(shí)別的標(biāo)簽的類以及用來(lái)使用NDEF(Nfc Data Exchange Format )格式的類,。 這個(gè)包中主要包括了如下幾個(gè)類:
Android.nfc.tech包主要是包括了一些用于查詢特定標(biāo)簽的特性和I/O操作的類,。所有的這些類都需要實(shí)現(xiàn)TagTechnology接口,,它們包括NfcA、NfcB,、NfcF,、NfcV、IsoDep,、Ndef,、NdefFormtable、MifareClassic,、MifareUltralight這幾個(gè)類,。 Android與NFC相關(guān)的類大致就是如上幾個(gè),,下面我們簡(jiǎn)單的了解一下如何開始NFC的編程。 根據(jù)Android系統(tǒng)所遵循的權(quán)限機(jī)制,,我們需要在AndroidManifest.xml中對(duì)需要使用的權(quán)限進(jìn)行聲明,,這樣在程序進(jìn)行安裝時(shí)將會(huì)提示用戶該程序?qū)?huì)使用到哪些設(shè)備,讓用戶來(lái)決定是否賦予應(yīng)用程序相應(yīng)的權(quán)限,,Android通過(guò)這樣的機(jī)制來(lái)提高系統(tǒng)的安全性,。因此當(dāng)我們?cè)趹?yīng)用程序中需要使用到NFC硬件的時(shí)候,我們應(yīng)當(dāng)在AndroidManifest.xml中加上: 另外還需要聲明的是能夠支持應(yīng)用程序的最低SDK版本,,由于對(duì)NFC的支持是在API 10以后才比較完善,,因此我們需要使用: android的應(yīng)用程序都是通過(guò)上傳到Android Market上供用戶下載的,我們可以通過(guò)加入如下一段聲明使我們的應(yīng)用程序能夠被歸類到“支持NFC”的手機(jī)型號(hào)中: <uses-feature android:name="android.hardware.nfc" android:required="true" /> <p style="text-indent: 2em;">最后,,我們可以通過(guò)聲明一些intent filter來(lái)告訴操作系統(tǒng)該Activity可以處理NFC數(shù)據(jù),,有三種聲明的方式: <intent-filter> <action android:name="android.nfc.action.NDEF_DISCOVERED"/> <data android:mimeType="mime/type" /> </intent-filter>
<intent-filter> <action android:name="android.nfc.action.TECH_DISCOVERED"/> <meta-data android:name="android.nfc.action.TECH_DISCOVERED" android:resource="@xml/nfc_tech_filter.xml" /> </intent-filter>
<intent-filter> <action android:name="android.nfc.action.TAG_DISCOVERED"/> </intent-filter> 這三種intent filter的聲明方式使用在特定的情況下。因此我們需要通過(guò)分析具體的應(yīng)用程序來(lái)決定使用哪一種方式,。具體怎么選擇將在后面提到(標(biāo)簽調(diào)度系統(tǒng)),。 這里我們可以看一看一個(gè)完整的AndroidManifest.xml例子,取自于NFCDemo,。 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas./apk/res/android" package="com.example.android.nfc"> <uses-permission android:name="android.permission.NFC" /> <uses-permission android:name="android.permission.CALL_PHONE" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".simulator.FakeTagsActivity" android:theme="@android:style/Theme.NoTitleBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="TagViewer" android:theme="@android:style/Theme.NoTitleBar"> <intent-filter> <action android:name="android.nfc.action.TAG_DISCOVERED"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity> </application> <uses-sdk android:minSdkVersion="9" /> <uses-feature android:name="android.hardware.nfc" android:required="true" /> </manifest>
|
|