Android開發文檔學習:NFC(近場通訊)(二)

來源:互聯網
上載者:User

Android NFC API概述

Android中提供的與NFC相關的較高層的類都包含在android.nfc中,這個包中包含了用於與本地NFC適配器互動的類,用於代表已經識別的標籤的類以及用來使用NDEF(Nfc Data Exchange Format )格式的類。

這個包中主要包括了如下幾個類:

Show entriesSearch:
類名 描述
NfcManager NFC的一個進階管理類,用於枚舉出原生NFC適配器。由於大多數的裝置都只提供一個NFC適配器,因此在大多數情況下我們可以通過getDefaultAdapter(Context)這個靜態方法來得到本地的NFC適配器的引用。
NfcAdapter 該類代表了本地的NFC適配器。它定義了如何將NFC標籤的資訊傳達給Activity的intent,並且提供了用於註冊前台標籤調度和前台的資料推送的方法。前台的基於NDEF的資料推送是目前Android僅提供的點到點支援方式。
NdefMessage and NdefRecord NDEF是由NFC論壇所定義的一種資料結構,它是為了高效率的在NFC標籤上儲存資料,例如文本、url或者其他的資料格式。NdefMessage是用於封裝需要傳輸或讀取的資料的容器。而每一個NdefMessage包含了0個或若干個NdefRecord。每個NDEF的記錄都包括一種有效類型的資料。在一條NDEF訊息中的第一個記錄的作用是向android的Activity調度一個標籤。
Tag 該類代表了一個無源的NFC標籤。這種標籤可以來自於各種物體,比如通常所用的物理標籤、卡片、鑰匙卡或者也可以是一部可以模擬成NFC標籤的電話機。當NFC識別裝置發現了一個NFC標籤,系統就會建立一個NFC Tag對象並在對象中封裝一個intent。然後NFC的標籤調度系統將會負責將這些intent調度到適當的Activity中。可以通過 getTechList() 方法來決定使用適合該Tag對象的讀寫標準並且可以使用 android.nfc.tech包所提供的相關類來建立與此相關的 TagTechnology 對象。
Showing 1 to 4 of 4 entries

 

Android.nfc.tech包主要是包括了一些用於查詢特定標籤的特性和I/O操作的類。所有的這些類都需要實現TagTechnology介面,它們包括NfcA、NfcB、NfcF、NfcV、IsoDep、Ndef、NdefFormtable、MifareClassic、MifareUltralight這幾個類。

Android與NFC相關的類大致就是如上幾個,下面我們簡單的瞭解一下如何開始NFC的編程。

根據Android系統所遵循的許可權機制,我們需要在AndroidManifest.xml中對需要使用的許可權進行聲明,這樣在程式進行安裝時將會提示使用者該程式將會使用到哪些裝置,讓使用者來決定是否賦予應用程式相應的許可權,Android通過這樣的機制來提高系統的安全性。因此當我們在應用程式中需要使用到NFC硬體的時候,我們應當在AndroidManifest.xml中加上:

1 <uses-permission android:name="android.permission.NFC" />

另外還需要聲明的是能夠支援應用程式的最低SDK版本,由於對NFC的支援是在API 10以後才比較完善,因此我們需要使用:

1 <uses-sdk android:minSdkVersion="10"/>

android的應用程式都是通過上傳到Android Market上供使用者下載的,我們可以通過加入如下一段聲明使我們的應用程式能夠被歸類到“支援NFC”的手機型號中:

12345678910111213141516 <uses-feature android:name="android.hardware.nfc" android:required="true" />1<p style="text-indent: 2em;">最後,我們可以通過聲明一些intent filter來告訴作業系統該Activity可以處理NFC資料,有三種聲明的方式:1        <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的聲明方式使用在特定的情況下。因此我們需要通過分析具體的應用程式來決定使用哪一種方式。具體怎麼選擇將在後面提到(標籤調度系統)。

這裡我們可以看一看一個完整的AndroidManifest.xml例子,取自於NFCDemo。

1234567891011121314151617181920212223242526272829 <?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/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>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.