Tải bản đầy đủ (.pdf) (45 trang)

androidnfcapplicationdevelopmentenvironmentsetup 141012022104 conversion gate01

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.28 MB, 45 trang )

Android NFC 開發環境安裝
Android NFC Application Development Environment Setup

Chun-Kai Wang (王雋凱)
IDSL - Dept. of IM - NTUST


Overview
▪ Preparing Android Development Environment
▪ Installing Open NFC for Android edition
▪ Android NFC Basics
▪ Coding Hello NFC Application

準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC!


準備 Android 開發環境


Android 開發環境
▪ JDK (Java Development Kit)
▪ Java 開發套件;Android Developers 官方建議使用 JDK 6。

▪ Android SDK
▪ Android 軟體開發套件。

▪ Eclipse
▪ 跨平台整合式開發環境(IDE)。

▪ ADT Plugin for Eclipse
▪ Eclipse IDE 的 Android 開發工具套件。



準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC!

Android 4.0 之後,Google
將 Android SDK、Eclipse、
ADT Plugin for Eclipse 整合
至 ADT Bundle , 簡 化
Android 開發環境的安裝
步驟。


安裝 JDK
▪ />
▪ JDK 當前版本為 JDK 8,與 Android Developers 官方建議版本不同
(JDK 6)。可前往下列網址下載 JDK 6 版本:
▪ />準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC!


下載 ADT Bundle
▪ />
▪ ADT Bundle 整合 Android 開發必備工具,下載解壓縮後即可使用。
準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC!


安裝 Open NFC


下載 Open NFC Android Edition
▪ />
▪ 選擇 4.4.1 Android Edition (SDK) 版,此為穩定版本並整合 Android SDK。

準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC!


安裝 Open NFC
▪ 將下載完成的 ADT Bundle 解壓縮,開啟 SDK Manager.exe。

▪ 配合 Open NFC for Android 版本,點選 Android 4.0.3 (API15) 進行安裝
程序。
準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC!


安裝 Open NFC (Cont.)
▪ 將 Open NFC SDK for Android v4.4.1 解壓縮,複製 OpenNFC_AddOn 資
料夾內的檔案至 ADT Bundle 目錄下的 add-ons 資料夾內。
▪ 重新開啟 SDK Manager.exe ,如下圖表示已安裝完成。

準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC!


創建 NFC 模擬器
▪ 開啟 eclipse.exe,點選下列圖示開啟 Android Virtual Device
(AVD) Manager。

準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC!


創建 NFC 模擬器 (Cont.)
▪ 開啟 AVD 後點選 Create,
進行模擬器設定。
▪ 如右圖所示,確認 Target 為

OpenNFC 4.4.1 後,點選 OK。
▪ 返回 AVD Manager,
選擇剛剛創建的
模擬器,點選 Start
即可啟動模擬器。

準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC!


設定 NFC 模擬器
▪ 啟動模擬器後,在 Apps
找到 Settings Open NFC。
▪ 選取 NFC Controller
simulator。
▪ 輸入 IP Address 後勾選
Enabled/disabled NFC。

準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC!


設定 Connection Center
▪ 在 Open NFC SDK for Android v4.4.1 目錄下找到 connection_center 資料
夾,開啟 Connection Center.exe,勾選以下項目。

▪ 重新開啟 Connection Center.exe,確認設定已儲存。
準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC!


測試應用程式
1. 開啟 Connection Center

▪ Open NFC SDK for Android v4.4.1 (13751)
/android_sdk/connection_center/Connection Center.exe

2. 開啟 NfcSimulator
▪ Open NFC SDK for Android v4.4.1 (13751)
/android_sdk/nfcc_simulator/NfcSimulator.exe

3. 啟動 NFCDevice 模擬器
▪ 確認模擬器已完成 Open NFC 設定

4. 執行應用程式
▪ 請注意開啟順序不同可能造成NFC功能無法正常運作。
準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC!


Android NFC 開發基礎


What is NFC?
▪ Near Field Communication
▪ 以 RFID 為基礎,是一種短距離非接觸式的通訊方式。
▪ 作用於 13.56MHz 頻帶,傳輸距離約 10 cm。

▪ NFC vs. RFID
▪ NFC 是 RFID 技術中一個專門的子集,可視為高頻(HF)
RFID 技術的分支,工作在 13.56MHz 頻帶。
▪ NFC 裝置能夠同時具有 NFC 讀取器和 NFC 標籤,此種特
性允許 NFC 做點對點(peer-to-peer)的傳輸。
▪ NFC 是一種近距離的私密通訊方式,安全性比 RFID 更
高。

準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC!


NFC Modes
▪ 讀寫模式 (Reader/Writer Mode)
▪ NFC 裝置具備非接觸式讀取器,可讀寫外部非接觸式卡片資訊。

▪ 點對點模式 (P2P Mode)
▪ NFC 裝置可和其他 NFC 裝置進行資料交換。

▪ 卡片模擬模式 (Card Emulation Mode)
▪ NFC 裝置可模擬成一張非接觸式卡片,與讀卡機進行互動。

▪ Android Support
▪ Tag Reading – since Android 2.3 (API 9)
▪ Tag Writing – since Android 2.3.3 (API 10)
▪ Beam (P2P) – Since Android ICS 4.0 (API 14)
準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC!


NFC on Android
▪ When NFC can work in Android?
▪ 在 Android 裝置設定中啟用 NFC 功能。
▪ Android 裝置螢幕未被鎖定。

▪ The Tag Dispatch System
▪ 當 Android 裝置發現一個 NFC Tag,最好的作法是自動啟動對應的
應用程式,而不是詢問使用者選擇。
-因為選擇的動作可能會讓使用者必須將裝置離開 Tag。
▪ 因此 Android 提供 Tag Dispatch System 協助處理:

▪ 解析出 NFC tag 且找出 MIME type 或 URI 來確定 Tag 裡的資料。
▪ 將 MIME type 或 URI,和資料一起封裝進一個 Intent object。
▪ 基於建立好的 Intent object 來啟動 Activity。
準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC!


NFC Tag Dispatch System
▪ Tag Dispatch 系統定義三種 intents,其優先權由高而低為:
▪ ACTION_NDEF_DISCOVERED
▪ 當 tag 內容包括一個 NDEF payload 與具有可識別的類型被掃瞄到,
該 intent 被用來啟動一個 Activity。

▪ ACTION_TECH_DISCOVERED
▪ 如果沒有 activities 註冊處理 ACTION_NDEF_DISCOVERED 該 intent,
tag dispatch system 會發啟一個 ACTION_TECH_DISCOVER 的 intent
給對應的應用程式進行處理。

▪ ACTION_TAG_DISCOVERED
▪ 如果沒有 activities 註冊處理 ACTION_NDEF_DISCOVERED、
ACTION_TECH_DISCOVERED 的 intents,將會發啟該 intent。

準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC!


NFC Tag Dispatch System (Cont.)
▪ 基本的 Tag Dispatch System 處理流程如下圖:

▪ Android NFC 應用程式開發是使用 Intents 與 Intent Filters 機制處理裝置偵測到的 tag。
關於 Intents 與 Intent Filters 的詳細說明,請參閱 Android Developers 官方文件:
▪ />準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC!



How to use Android NFC API?
▪ 設定 Android Manifest
▪ 宣告存取 NFC 硬體許可權
<uses-permission android:name="android.permission.NFC" />

▪ 宣告支援最低的 SDK 版本
<uses-sdk android:minSdkVersion="10" />

▪ 指定 Android 裝置須配備 NFC 功能才可安裝 ( for Google Play)
android:name="android.hardware.nfc"
android:required="true" />

準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC!


NFC API Overview
▪ android.nfc 套件 (Package) 主要提供了 NFC 裝置對 NFC Tag 讀寫 NDEF
訊息的操作,以及兩個 NFC 裝置之間的資料交換的功能函式。
Class

Description

NdefMessage

Represents an immutable NDEF Message.

NdefRecord


Represents an immutable NDEF Record.

NfcAdapter

Represents the local NFC adapter.

NfcEvent

Wraps information associated with any NFC event.

NfcManager

High level manager used to obtain an instance of an NfcAdapter.

Tag

Represents an NFC tag that has been discovered.

▪ 詳細的 API 操作方式,可參考 Android Developers 官方文件:
▪ />▪ />準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC!


NfcAdapter
▪ NfcAdapter 是定義在 android.nfc 套件中的類別。
▪ 判斷目前裝置是否支持或啟動 NFC 功能,可透過以下方法 (method):

▪ public static NfcAdapter getDefaultAdapter (Context context)
▪ 取得預設的 NFC 介面卡。
▪ 回傳 null 代表該裝置不支援 NFC。


▪ public boolean isEnabled ()
▪ 判斷目前裝置 NFC 功能是否啟動。

▪ 回傳 true 代表 NFC 功能已啟動;回傳 false 代表 NFC 功能尚未啟動。

▪ public Boolean isNdefPushEnabled()
▪ 判斷目前裝置 Beam 功能是否啟動。
▪ 回傳 true 代表 Beam功能已啟動;回傳 false 代表 Beam 功能尚未啟動。

▪ 用於 P2P 開發模式。

準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC!


Foreground Dispatch System
▪ Foreground Dispatch System 是一種用於在執行的程式 (前
台呈現的Activity) 中處理 NFC tag 的方法。
▪ 允許 Activity 攔截 Intent 物件,並且宣告該 Activity 的優先順序比
其他處理 Intent 物件的 Activity 高。
▪ 使用說明:
1.

在 Activity 的 onCreate() 方法中增加下列程式:
▪ 建立一個 PendingIntent 物件,以便 Android 系統能夠在掃描到 NFC
tag 時,用它來封裝 NFC tag 的詳細資訊。
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
new Intent(this, getClass())
.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);


準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC!


×