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 ▪ http://www.oracle.com/technetwork/java/javase/downloads/index.html ▪ JDK 當前版本為 JDK 8,與 Android Developers 官方建議版本不同 (JDK 6)。可前往下列網址下載 JDK 版本: ▪ http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloadsjavase6-419409.html 準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC! 下載 ADT Bundle ▪ http://developer.android.com/sdk/index.html ▪ ADT Bundle 整合 Android 開發必備工具,下載解壓縮後即可使用。 準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC! 安裝 Open NFC 下載 Open NFC Android Edition ▪ http://open-nfc.org/wp/home/downloads/ ▪ 選擇 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! 設定 AndroidManifest ▪ 新建專案後,打開 AndroidManifest.xml,加入以下片段: ▪ 紅色框選部分代表 App 最低要求的手機系統版本為 API 10+ (Android 2.3.3) 以及獲取 NFC 硬體的操作權限,並且是配備 NFC 功能的手機。 ▪ 藍色框選部分代表如果日後要將 App 上傳至 Google Play,使用者必須 是支持 NFC 功能的裝置才可以安裝此應用程式。 準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC! 設置佈局 ▪ 新建專案時,預設新增 MainActivity,此為 App 啟動的第一個 Activity, 應會在 res/layout 目錄下找到對應的 activity_main.xml,將其修改佈 局如下: ▪ 此 Layout 定義了一個 RelativeLayout (相對佈局),可以讓子視圖根據 它的父視圖或其他視圖指定本身的相對位置。 ▪ 在 RelativeLayout 底下我們配置一個用以顯示文字的 TextView 元件, 並且設置為垂直水平置中。 準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC! 加入字串清單 ▪ 在 res/values 目錄下找到 strings.xml,加入以下字串清單。 ▪ app_name:應用程式名稱。 ▪ nfc_unsupported:Android 裝置不支援 NFC 功能時,所顯示的文字訊息。 ▪ nfc_disabled:Android 裝置尚未開啟 NFC 功能時,所顯示的文字訊息。 ▪ nfc_ready:NFC 功能已準備就緒時,所顯示的文字訊息。 ▪ hello_nfc:當 Android 裝置偵測到 Tag 時,所顯示的NFC訊息。 準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC! 新增 NfcActity 類別 ▪ 在 src 目錄下的 package 點擊右鍵 → New → Class ▪ Name: NfcActivity ▪ Modifiers: public, abstract ▪ Superclass: android.app.Activity 準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC! NfcActivity 說明 ▪ NfcActivity 是自定義的抽象類別,繼承於 android.app.Activity。 ▪ NfcActivity 包含 Foreground Dispatch System,以及操作 NFC 的方法 (method)。我們所定義的抽象方法說明如下: ▪ protected abstract void onNfcFeatureNotFound(); ▪ 當 Android 裝置不支持 NFC 功能時,呼叫該方法。 ▪ protected abstract void onNfcStateEnabled(); ▪ 當 Android 裝置 NFC 功能已啟動時,呼叫該方法。 ▪ protected abstract void onNfcStateDisabled(); ▪ 當 Android 裝置 NFC 功能未啟動時,呼叫該方法。 ▪ protected abstract void onTagDiscovered(Intent intent); ▪ 當 Android 裝置偵測到 Tag 時,呼叫該方法。 準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC! NfcActivity.java 準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC! NfcActivity.java (Cont.) 準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC! NfcActivity.java (Cont.) 準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC! MainActivity 說明 ▪ MainActivity 是 Android 新建專案時預設的 Activity,代表 App 執行時 所啟動的第一個 Activity。 ▪ 預設執行的 Activity 可在 AndroidManifest.xml 中設定。 ▪ 預設 MainActivity 所對應的 UI 佈局為: ▪ res/layout/activity_main.xml ▪ 預設 MainActivity 繼承於 android.app.Activity。請將繼承類別改為我們 自定義的 NfcActivity。 ▪ MainActivity 為具象類別 (concrete class),因此必須覆寫 (override) NfcActivity 所定義的抽象方法 (abstract method)。 ▪ 在 MainActivity 所實作的方法內做適當的操作。 ▪ onNfcFeatureNotFound()、onNfcStateEnabled()、 onNfcStateDisabled()、onTagDiscovered()。 準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC! MainActivity.java 準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC! 測試應用程式 開啟 Connection Center ▪ Open NFC SDK for Android v4.4.1 (13751) /android_sdk/connection_center/Connection Center.exe 開啟 NfcSimulator ▪ Open NFC SDK for Android v4.4.1 (13751) /android_sdk/nfcc_simulator/NfcSimulator.exe 啟動 NFCDevice 模擬器 ▪ 確認模擬器已完成 Open NFC 設定 執行應用程式 ▪ 請注意開啟順序不同可能造成 NFC 功能無法正常運作。 準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC! 執行 Hello NFC ▪ HelloNFC 專案點擊右鍵 → Run As → Android Application ▪ 選擇創建的 NFCDevice (或其他支援 NFC 的 Android Device), 將我們寫好的應用程式安裝至選取的 Android Device 中。 準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC! Hello NFC! ▪ 打開 NfcSimulator.exe 選擇一 NFC Tag。 ▪ 如被成功偵測,該 NFC Tag 呈現綠燈, 裝置螢幕上顯示 「Hello NFC!」 字樣! 準備 Android 開發環境 / 安裝 Open NFC / Android NFC 開發基礎 / Hello NFC! References ▪ [1] V Subtil, Near Field Communication with Android Cookbook Packt Publishing Ltd, 2014 ▪ [2] Android Developers, http://developer.android.com/ ▪ [3] The Open NFC Project, http://open-nfc.org/ Thank You!