• 沒有找到結果。

結合近場通訊技術之嚴肅遊戲研究— 以賓果遊戲為例

N/A
N/A
Protected

Academic year: 2021

Share "結合近場通訊技術之嚴肅遊戲研究— 以賓果遊戲為例"

Copied!
74
0
0

加載中.... (立即查看全文)

全文

(1)

國立臺灣師範大學

資訊工程研究所碩士論文

指導教授:葉耀明 博士

結合近場通訊技術之嚴肅遊戲研究—

以賓果遊戲為例

Research on serious game combined with NFC

technology - Bingo game as an example

研究生: 鄭禮衛 撰

中華民國 102 年 6 月

(2)

摘要

結合近場通訊技術之嚴肅遊戲研究—

以賓果遊戲為例

鄭禮衛 近年來隨著科技發展,人們的生活型態也逐漸發生改變,而面對當今日新月 異的科技洪流和資訊社會的變遷,教學的方式亦受到巨大的影響,最明顯的就是 數位學習的興起。嚴肅遊戲由數位遊戲發展而來,嚴肅遊戲的主要目的是讓使用者 經由遊戲的過程將教材內容習得,達成學習的目標。 近場通訊是一種新興技術,允許具有近場通訊功能的設備之間進行短距離的 無線通訊資料傳輸。而隨著智慧型手機興起,智慧型手機應用程式開啟了新的潮 流,越來越多廠商在新款的智慧型手機上安裝了近場通訊功能,這使得近場通訊 有了更多應用的可能。 本研究嘗試將近場通訊技術與教學做結合,並且加入了嚴肅遊戲的概念,製 作成手機應用程式,讓使用者能夠在遊戲中學習。本研究提出一個近場通訊遊戲 系統,讓學生在遊玩賓果遊戲當中進行題庫練習,而為了增加遊戲性與刺激性, 本系統支援網路連線比賽模式。為方便教師輸入題目,本研究包含一個簡易方式, 使系統自訂近場通訊格式,讓教師可以輕鬆編輯近場通訊標籤內的題目。 關鍵字:近場通訊、嚴肅遊戲、Android、教學

(3)

Abstract

Research on serious game combined with NFC technology -

Bingo game as an example

Li-Wei Cheng

Due to rapid technological changes torrent and information society, teaching methods are also subject to a huge impact. The most obvious case is the rise of digital learning. Evolving from the digital games, serious games have an explicit and carefully thought-out educational purpose and are not intended to be played primarily for

amusement.

Near Field Communication(NFC)is an emerging technology, which is a set of short-range wireless technologies that allows NFC-enabled devices for short-distance wireless communication data transmission. With the rise of smart phones, more and more manufacturers install NFC technology in the smartphone. It makes NFC technology have wide applications.

This research attempts to combine NFC technology with learning serious games. Our game is a developed from the traditional bingo game which can be played with a NFC enabled smartphone. When playing our bingo game, students can practice quizzes which are designed by their teachers. In order to increase the gameplay and irritating, this system supports network connections modes. The system contains an easy way to customize NFC format for the system, so that teachers can easily edit the content of NFC tags.

(4)

誌謝

經過兩年的時光,我的研究所生涯即將進入尾聲。我要感謝我的指導教授 葉 耀明教授在我撰寫論文期間的指導與啟發,在我的論文遇到困難時,葉老師也總 是能適時的給予方向。葉老師讓學生參與的校內外研究計畫,也讓我有機會接觸 不同於單純學校生活的事物,除了增廣見聞之外,也令我增加了難得的社會工作 經驗。 感謝楊明正和洪國銘教授能夠擔任我的口試委員,並且在口試當天對我的論 文進行指導並指出需加強的部分,提出良好的建議,讓我能更加完善我的論文。 感謝實驗室的同學書銘、皓中、志忠、哲維、隘同、昱賢、文寬、雨曄於就 讀研究所期間彼此激勵成長、互相幫助,往往能夠彼此討論論文議題,以開闊視 野,並嘗試於彼此的論文上獲得啟發;也要感謝實驗室的學長姐惠迪、瀧濱、冠 緯、韋德、永倫、芝華、孝倫、慶瑞、明憲、鏞年,於我碩一時能夠盡快熟悉實 驗室的環境,並且解答我的疑問;還要感謝學弟妹協助研究計畫,並且共同打理 實驗室的環境,讓我能夠專心於論文上的進度。 最後我要感謝我的家人在這兩年內對我的支持與鼓勵,讓我能夠順利拿到碩 士學位,感謝以上所有的人。

(5)

目錄

第一章 緒論 ... 1 1.1 研究背景 ... 1 1.2 研究動機與目的 ... 2 1.3 論文架構 ... 2 第二章 文獻探討 ... 4 2.1 Android 作業系統 ... 4 2.1.1 Android 系統架構 ... 5 2.1.2 Android Activity 生命週期 ... 8 2.2 近場通訊 ... 9 2.2.1 近場通訊的主要特徵 ... 9 2.2.2 近場通訊的三大工作模式 ... 10 2.2.3 NFC 論壇 ... 12 2.3 教學方式 ... 13 2.3.1 傳統教學 ... 13 2.3.2 電腦輔助語言學習 ... 14 2.3.3 嚴肅遊戲 ... 15 2.4 智慧型手機 ... 17 2.5 遊戲 ... 18 2.5.1 賓果遊戲 ... 19 第三章 系統規劃 ... 21 3.1 系統架構 ... 22 3.2 Text-To-Speech ... 24 3.3 Java Socket 通訊技術 ... 25 3.3.1 Client 端系統實作 ... 26 3.3.2 Server 端系統實作 ... 29 3.4 近場通訊技術 ... 31 3.4.1 使用近場通訊前的準備 ... 32 3.4.2 近場通訊標籤讀取設計 ... 34 3.4.3 近場通訊標籤寫入設計 ... 36 第四章 系統開發與設計 ... 39 4.1 系統開發環境 ... 39 4.2 系統實作 ... 40 4.2.1 使用者案例圖 ... 41 4.2.2 循序圖 ... 43 4.3 系統呈現 ... 45 4.3.1 單人遊戲模式 ... 46

(6)

4.3.2 網路連線模式(回合制) ... 50 4.3.3 網路連線模式(搶答制) ... 53 4.3.4 設計題目 ... 55 4.4 題目分析 ... 57 第五章 結論與未來展望 ... 61 5.1 結論 ... 61 5.2 未來展望 ... 62 參考文獻 ... 63

(7)

圖目錄

圖 2-1 Android 系統架構圖 ... 5

圖 2-2 Android Activity 生命週期 ... 8

圖 2-3 無線通訊技術比較圖 ... 10

圖 2-4 NFC card emulation mode ... 11

圖 2-5 NFC point-to-point mode ... 11

圖 2-6 NFC reader/writer mode ... 12

圖 2-7 電腦輔助語言學習 ... 15

圖 2-8 嚴肅遊戲的定位 ... 16

圖 2-9 Tactical Iraqi Skill Builder 以及 Mission Game 截圖 ... 17

圖 2-10 全球智慧型手機作業系統佔有率 ... 18 圖 2-11 賓果卡 ... 20 圖 3-1 系統基本流程圖 ... 22 圖 3-2 系統架構圖 ... 23 圖 3-3 TTS 系統流程圖 ... 24 圖 3-4 Client-Server 的基本訊息傳遞架構 ... 26 圖 3-5 NDEF message 的組成 ... 32 圖 4-1 Android 模擬器 ... 39 圖 4-2 使用者案例圖 – 整體 ... 41 圖 4-3 使用者案例圖 – 學生 ... 42 圖 4-4 使用者案例圖 – 教師編輯 NFC 標籤 ... 42 圖 4-5 循序圖 – 學生進行單人遊戲 ... 43 圖 4-6 循序圖 – 學生進行網路連線模式 ... 44 圖 4-7 循序圖 – 教師編輯 NFC 標籤 ... 45 圖 4-8 系統需求硬體 ... 46 圖 4-9 主畫面 ... 46 圖 4-10 遊戲說明 ... 46 圖 4-11 選擇遊戲模式 ... 46 圖 4-12 輸入賓果板子 ... 47 圖 4-13 開始頁面 ... 48 圖 4-14 提示讀取 NFC 標籤內容 ... 48 圖 4-15 顯示題目 ... 48 圖 4-16 提示答案錯誤 ... 49 圖 4-17 回答正確 ... 49 圖 4-18 聽力題 ... 49 圖 4-19 達成完結條件 ... 50 圖 4-20 完結畫面 ... 50

(8)

圖 4-21 等待另一個玩家畫面 ... 51 圖 4-22 第一位使用者先作答 ... 51 圖 4-23 第一位使用者作答後 ... 52 圖 4-24 第二位使用者達成勝利條件 ... 52 圖 4-25 網路連線比賽完結畫面 ... 53 圖 4-26 搶答開始畫面 ... 54 圖 4-27 雙方同時搶答 ... 54 圖 4-28 某人回答一題結束 ... 55 圖 4-29 登入頁面 ... 56 圖 4-30 編輯頁面 ... 56 圖 4-31 提示寫入 NFC 標籤內容 ... 57

(9)

表目錄

表 2-1 NFC 論壇制定之規格書……….12 表 3-1 Android 支援的 NFC 標籤規格 ... 33 表 3-2 可以選擇支援的 NFC 標籤規格 ... 34 表 4-1 開發環境 ... 40 表 4-2 編輯題目範例 ... 59

(10)

第一章 緒論

1.1 研究背景

教育的歷史非常悠久,可以說跟人類的歷史息息相關,迄今,受教育權已被 認為是基本人權中的一項。近年來,受到台灣少子化現象以及學歷社會的影響, 家長們更加重視對孩子的教學。 另一方面,由於近年來科技日新月異,學習的方式已不再僅僅限定於紙筆, 以電腦等多媒體方式加入教學的過程中也已成為趨勢。而智慧型手機的發展讓手 機不只是可以打電話,更是讓人們可以不限時間地點得使用各式各樣的應用程式, 目前智慧型手機的市佔率越來越多,應用程式的發展更是達到了高峰。

近場通訊(Near field communication, NFC)是一種新興技術,允許具有 NFC 功能電子設備之間進行短距離的無線通訊資料傳輸。自 2010 年與三星合作的 Google 將 NFC 功能導入 Android 系統的智慧型手機 Nexus S 中以來,美國各大廠 商紛紛跟進,2011 年 APPLE 發表的新一代智慧型手機 IPhone 4S 也添加了 NFC 新功能。根據市場調查機構 Juniper Research 估計,2014 年全球每 5 隻智慧型手 機中,就至少會有 1 隻搭載 NFC 功能,若以 2014 年全球銷售量約為 9 億隻來估 計,則意謂著全球將有 1.8 億隻智慧型手機內建 NFC 功能。這使得 NFC 技術有 了更多應用的可能。

(11)

1.2 研究動機與目的

近場通訊技術過去用在行動消費和資訊導覽等方面,而近年來已有越來越多 新款智慧型手機上具備 NFC 功能,這使得 NFC 技術有了更多可能。本研究希望 能將 NFC 技術與教學做結合,發展新的教學方式的可能。 目前社會的科技化與現代化固然令人們的生活越來越舒適,但與此同時也導 致了人與人之間的冷漠化、不信任感與網路成癮症等等都市疾病,本研究希望能 藉由 NFC 技術的特點—同時具有科技上的生動有趣、訊息量大的優點和需要人與 人之間的接觸,創造出多元、互動的學習環境。 至今仍少有關於 NFC 技術和教學結合的議題,因此本研究旨在藉由運用 NFC 技術的應用程式進行教學,以推廣 NFC 技術的使用及認知,同時達到寓教於樂的 效果。並探求 NFC 技術與教學進一步結合的可能性。

1.3

論文架構

本論文一共分為五個章節,各章節內容敘述如下: 第一章 緒論 介紹研究背景、研究動機與目的和論文架構。 第二章 文獻探討 介紹本研究的相關背景,例如 Android 作業系統、近場通訊技術、教學方式、 智慧型手機以及遊戲等等。

(12)

第三章 系統規劃 介紹本研究之系統的規劃,包括系統流程、系統架構、網路通訊實作方法與 近場通訊格式與方法的實作。 第四章 系統開發與設計 介紹本研究之開發環境、系統功能與使用者介面呈現,並對於題目類型加以 分析。 第五章 結論與未來展望 總結本研究的成果,並提出本系統的未來展望。

(13)

第二章 文獻探討

2.1 Android 作業系統

Android 是一個以 Linux 為基礎所開發的作業系統,主要用於智慧型手機和

平板電腦。Android 公司最初是 Andy Rubin 於 2003 年創辦,之後被 Google 於 2005 年收購,並持續致力於 Android 系統的開發和改良,並於 2007 年設立開放手持設 備聯盟(Open Handset Alliance),第一款 Android 智慧型手機於 2008 年賣出。 Google 以 Apache 免費開源許可證的方式開放 Android 系統原始碼,這種開 放原始碼的方式允許設備製造商、無線營運商和任何有興趣的人可以自由修改和 發放他們基於 Android 系統下所寫的程式。這種方式使得 Android 成為全世界最 廣泛的智慧型手機平台。至 2012 年 10 月,大約有 70 萬種應用程式可用於 Android 系統。

(14)

2.1.1 Android 系統架構

圖 2-1 Android 系統架構圖

Android 系統架構主要可分為四層,從低到高分別為 Linux 內核(Linux

kernel)、系統函式庫(Libraries)、應用程式框架(Application framework)和應 用程式(Applications)。

1. Linux 內核(Linux kernel)

Android 基於 Linux 提供基礎服務,此層為一個穩定的 Linux 內核,以及 能源管理元件,也包含了聯繫到上層 Linux 代碼的元件。

(15)

從圖中可以看出此層又可分為兩種,系統函式庫(Libraries)和系統運行 庫(Android runtime)。系統函式庫是上層應用程式框架的基礎,為連接 應用程式框架和 Linux 內核的重要樞紐,並為開發者提供重要服務。以下 是ㄧ些重要函式庫:  Surface Manager:提供並管理 2D 圖層和 3D 圖層的融合。  System C library:C 語言系統函式庫。  SGL:基本的 2D 圖層引擎。  Media Framework:提供靜態圖像格式以及支援多種音樂和視頻格式, 包括 MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 等等。

 SQLite:可以支援所有應用程式的輕型資料庫引擎。 系統運行庫為 Android 虛擬機器和函式庫的融合,Android 使用的虛擬機 器為 Dalvik,Dalvik 使用的格式是.dex,此種格式是為適合記憶體和處理 速度有限的機器而設計,Dalvik 需要 Linux 內核所提供的服務,例如底層 記憶體管理。 3. 應用程式框架(Application framework) 這一層是一種軟體框架,用於開發標準架構下的應用程式,使得程式設 計師能夠更加方便的去開發新的應用程式。主要功能是簡化元件的重複 使用,使得所有應用程式都能直接使用這些元件的功能,也能夠讓應用 程式發布功能,使得這些功能可以為其他應用程式所使用。以下是框架

(16)

的重要元件:

 檢視系統(View System):可用於建構應用程式,包含按鈕(button)、 列表(list)、文字框(text boxes)、網格(grid)以及內嵌的網頁瀏覽 器(Web browser)等等。  內容提供器(Content Provider):可以讓應用程式之間互相存取和共 享資料。  資源管理器(Resource Manager):可以提供非原始碼的資源存取。  訊息管理器(Notification Manager):使應用程式可以在狀態列的地 方顯示訊息。  活動管理器(Activity Manager):可以管理應用程式的生命週期。  視窗管理器(Window Manager):可以提供管理視窗程式,  位置管理器(Location Manager):可以提供地圖服務的功能。  封包管理器(Package Manager):可以提供 Android 內部應用程式的

管理。

4. 應用程式(Applications)

Android 有內建一些基本的應用程式,例如日曆(Calendar)、地圖(Map)、 瀏覽器(Browser)、SMS 簡訊程式(Short Message Service)、電子郵件 (E-mail)、聯絡人(Contact Person)等等,所有的應用程式都是用 JAVA 撰寫。

(17)

2.1.2 Android Activity 生命週期

Activity 是 Android 當中的互動式介面功能,主要有四個狀態:Active(活動)、

Paused(暫停)、Stopped(停止)、Dead/Inactive(已回收或未啟動)。

Active:使用者啟動 Activity,在運行中的狀態。

Paused:Activity 暫時停止,回到背景畫面的狀態。

Stopped:有其他 Activity 在運行,此 Activity 不再運行的狀態。

Dead/Inactive:Activity 被手動終止,或是被系統回收的狀態。

(18)

2.2 近場通訊

近場通訊(Near field communication, NFC)是一種新興技術,允許同樣具有

NFC 功能的電子設備之間進行短距離的點對點的無線通訊、交換數據,距離通常 在十公分以內。資料傳輸同樣可以在具備 NFC 功能的電子設備和無電源 NFC 芯 片(tag)之間進行。

NFC 的標準規格、通信協議和數據交換格式都是建立在現有的免接觸式射頻 識別(RFID)格式上面,由 Nokia、Philips 和 Sony 共同於 2004 年建立的 NFC 論壇(Near Field Communication Forum)所設立並推動標準化,已通過的標準編 列有 ISO/IEC 18092(NFCIP-1)、ECMA-340、ECMA-352、ECMA-356、ECMA-362、 ISO/IEC 21481(NFCIP-2)。現在擁有超過 160 位會員,論壇至今也不斷地促進 NFC 和新興設備融合。

2.2.1 近場通訊的主要特徵

NFC 的主要特徵如下:  用於 10cm 以下的無線通訊技術。  網路類型:Point-to-point。  頻率:13.56MHz。  資料傳輸速度:106kbit/s、212kbit/s、424kbit/s。  建立連線速度:小於十分之一秒。

(19)

 功耗:小於 15mA(read)。 NFC 是基於 RFID 技術上所開發出來的無線通訊技術,但兩者之間還是有著 區別,NFC 的傳輸範圍較小,但卻有著能量需求較小、成本較低等優點,同時只 能和一台機器建立連線的特點,也加強了安全性和保密性。 圖 2-3 無線通訊技術比較圖

2.2.2 近場通訊的三大工作模式

NFC 具有三種不同的工作模式,分別為卡模式、點對點模式、讀寫模式:  卡模式(Card emulation mode):在此模式中,具 NFC 功能的電子設備可以

當作信用卡、辨識卡、門票、車票等使用,可以替代大多數的 IC 卡,足以 實現電子錢包的功能。另外此模式下可以通用非接觸式讀卡器來供電,即使

(20)

此電子設備沒電也可以運作。

圖 2-4 NFC card emulation mode

 點對點模式(Point-to-point mode):將兩個具有 NFC 功能的電子設備靠近並 且建立連線,可以實現點對點資料傳輸,在兩者間互相傳送資料,如分享音 樂、圖片,交換電子名片,進行 NFC 遊戲等等。 圖 2-5 NFC point-to-point mode  讀寫模式(Reader/Writer mode):把具有 NFC 功能的電子設備當作非接觸式 讀卡器使用,如從海報上讀取電子訊息,下載優惠券,讀取菜單、廣告、旅 遊資訊等等。

(21)

圖 2-6 NFC reader/writer mode

2.2.3 NFC 論壇

NFC 論壇(NFC forum)為 NFC 技術的非營利性官方組織,於 2004 年創建。 該論壇制定 NFC 技術的標準和規格,並且致力於 NFC 技術的推廣和標準化,確 保具備 NFC 技術的產品遵照此規格。 表 2-1 NFC 論壇制定之規格書 年份 名稱 NFC 標準

2004 NFC Interface and Protocol (NFCIP-1) ECMA 340、

ISO/IEC 18092

2005 NFC Interface and Protocol-2 (NFCIP-2) ECMA 352、

ISO/IEC 21481

2006 NFC Data Exchange Format (NDEF 1.0) NFC forum

(22)

2006 Text Record Type Definition (RTD-Text 1.0) NFC forum

2006 URI Record Type Definition (RTD-URI 1.0) NFC forum

2006 Smart Poster Record Type Definition (SPR 1.1) NFC forum

2007 NFC Wired Interface (NFC-WI) ECMA 373、

ISO/IEC 28361

2007 Type 1 Tag Operation Specification NFC forum

2007 Type 2 Tag Operation Specification NFC forum

2007 Type 3 Tag Operation Specification NFC forum

2007 Type 4 Tag Operation Specification NFC forum

2.3 教學方式

廣義的教學泛指一切傳播學習各種知識、技術的活動,狹義的教學專指學校 制度。學習是透過教師或體驗而獲得技術、知識、態度與價值的過程。在現今社 會上,可以在學校教育中學習一系列課程,例如數學、歷史、地理等,除此之外 也有博物館、圖書館、美術館等地可供學習,近年來隨著科技發展,以電腦、網 際網路或新興科技進行教學也已成為一大議題。

2.3.1 傳統教學

傳統教學指的是數千年來,教師依據教材做講解和學生用心聽講的過程。以 現代的傳統教學而言,教師會依照一學期的教材內容制定每次上課時的大致內容,

(23)

學生以預習和複習等方式跟上教師上課進度,教師有時也會補充教材內容、或以 考試等方式檢閱學生進度。 一般認為傳統教學有下列優點:(一)簡單方便,教材內容具系統性,教師 只需依照教材內容講解即可。(二)經濟快速,教師可以同時對許多學生做講解。 (三)省時省事,直接帶領學生上課、講解結果可以省去學生獨自摸索實驗的時 間。(四)可以應付考試,只要針對考試類型作大量練習,對於考試有一定的效 果,特別是需要考驗記憶力或熟練技巧的考題。 然而傳統教學也有多項缺點,諸如學生為被動學習,可能習慣對獲取知識採 取消極姿態,欠缺探索、實驗精神,教師的性格對於年齡層低的學生會造成較大 影響,學生主動解決問題的能力不足等等問題。

2.3.2 電腦輔助語言學習

近年來,因為科技和網路的不斷發展,能夠運用在語言學習的方式也越來越 多,新的工具和教學方式也不斷推陳出新,應用於各種領域,電腦輔助語言學習 (Computer Assisted Language Learning, CALL)也應運而生。運用手機應用程式 來輔助語言學習的優點是讓使用者可以不受地點、時間限制,隨時隨地都可以進 行語言學習。電腦輔助語言學習的主要內容有兩大重點:語音辨識(語音轉文字) 和語音合成(文字轉語音)。電腦輔助語言學習在學習語言的過程中,所具備的 優點如下:

(24)

 可以運用各種多媒體以不同方式進行學習。  可以運用網路上龐大的資源進行學習。  可以立刻瞭解自己的答案是對或是錯。  可以與新科技結合,從學習中體會樂趣。 圖 2-7 電腦輔助語言學習

2.3.3

嚴肅遊戲

嚴肅遊戲(serious game)是指將數位遊戲設計理念放在除了純粹的娛樂以外 的部分,例如醫學、教育、宗教、政治或軍事方面。2003 年 Jason Della Rocca 在 China Joy 大會上定義:「嚴肅遊戲的第一目標不是任何的娛樂、享受或樂趣。」並 列舉了諸如發展城市的遊戲「模擬城市」、模擬董事長的遊戲「虛擬領導」和訓練海 軍陸戰隊員的遊戲「DOOM」等等。嚴肅遊戲的主要目的是讓使用者經由遊戲的過 程將教材內容習得,達成學習的目標。然而從使用者的角度上來看,若是嚴肅遊戲 並沒有「有趣」的成分,那麼這款嚴肅遊戲也就和教科書沒區別了。因此,嚴肅遊 戲的重點在於如何結合傳統教學內容以及新興科學的呈現手法。

(25)

在嚴肅遊戲和數位學習的分析上,世界各國對於數位學習的定義並不相同, 以我國資訊工業策進會定義:「數位學習是以數位工具,透過網路的方式取得學 習教材或進行學習活動。」但實際上全球學者普遍公認的是美國教育訓練發展學 會(ASTD, American Society of Training and Education)的定義:「數位學習是學 習者應用數位媒介學習的過程。」因此,數位學習是讓使用者利用各種科技產品 並進行學習的一種方式,並不僅限於透過網路得到學習資訊。而嚴肅遊戲就是由 數位遊戲發展而來。 圖 2-8 嚴肅遊戲的定位 嚴肅遊戲可以應用在多個領域,而教育就是其中一個重要項目。嚴肅遊戲可 以運用在各種知識以及技能的培訓,例如 2004 年北京的前線網絡公司開發了一 款「駕車高手」的遊戲,並在遊戲中向使用者宣導「駕車要繫安全帶」、「兒童乘

(26)

車安全」、「不要酒後駕車」和「不要超速」等基本知識,是早期比較完善的嚴肅 遊戲之一。圖 2-9 是一個主旨在學習伊拉克的阿拉伯語言、文化的嚴肅遊戲。在 左邊的圖像中介紹了一項伊拉克的文化習俗—將右手掌放在心臟上,用以表示歡 迎。而在右邊的圖像中,則要求使用者對非玩家角色(NPC, Non-Player Character) 做出同樣的動作,作為遊戲中的一項任務。

圖 2-9 Tactical Iraqi Skill Builder 以及 Mission Game 截圖

2.4 智慧型手機

智慧型手機(Smart phone)與傳統型手機相比,是一種具有更快速的計算能 力和更多功能的新型手機。許多現在的智慧型手機,包括了多媒體撥放器、數位 相機、攝錄影機、GPS 導航系統、高解析度觸控式螢幕、Web 瀏覽器、可以通過 Wi-Fi 上網等等機能。除此之外,智慧型手機使用者也可以下載各式各樣的應用 程式,達到學習、娛樂等各種目的。智慧型手機使用最多的作業系統為:Android、 iOS、BlackBerry OS、bada OS、Symbian OS 等等,且他們的應用程式之間互不相 容。

(27)

圖 2-10 全球智慧型手機作業系統佔有率

2.5 遊戲

遊戲通常是指人的娛樂活動,有時也會用來作為一種教育的工具。遊戲的關 鍵結構是目標、規則、挑戰和互動,遊戲過程中經常牽涉精神上和身體上的刺激, 並以此形成吸引力。許多遊戲可以做為運動的一種形式,以在遊戲中達成鍛鍊身 體的目標,或是以其他方式進行輔助教育或是正面心理活動的作用。 遊戲的歷史非常悠久,目前已證明早在西元前 2600 年,遊戲已成為人類的 普遍經驗和文化的一部份,但是遊戲做為理論研究則是在近代才開始的,因此目 前還沒有一個對於遊戲的最終認識結論。法國社會學家 Roger Caillois 在他所寫的 書「Game and Men」當中,定義了遊戲做為一個活動具備以下特徵:

(28)

 樂趣:人們可以享受遊戲的過程。  獨立性:有時間和地點的規定。  不確定性:遊戲的結果是不可預見的。  非生產性:參與遊戲的結果不生產有用的東西。  規則性:遊戲的規則不同於日常生活,有其獨自的規則。  虛構性:遊戲伴隨著不同於現實的意識。

在 Ken Anderson 與 Morry Carlson 所合著的「Games for All Occasions」一書 中,提供了二百九十七種遊戲的方式,並且將其中的遊戲依照內容分成幾種下列 的類型:  室內遊戲:在室內玩的遊戲,種類繁多。  音樂遊戲:猜測音樂或是考驗節奏感的遊戲。  書寫遊戲:以拼湊文字或考驗文章內容為主題的遊戲。  戶外遊戲:適合在草地等寬廣的地方進行的遊戲。  水上遊戲:在水上或是水面下進行的遊戲。

2.5.1 賓果遊戲

傳統的賓果遊戲是一種靠運氣取勝的遊戲。一開始玩家會拿到一張或多張賓 果卡,其上依規則畫有許多方格,方格內隨機填入數字號碼。接著由主持人隨機 喊出任意號碼,當喊出的號碼達到指定模式(直線、橫線或斜線)的第一位玩家 即為優勝,優勝者通常需要喊出「Bingo! 」以顯示自己完成勝利條件。「Bingo! 」

(29)

起源於英文,含意是「猜中了!」。如今則衍生成很高興的喊叫聲,比如當人們 遭遇自己本來沒有預料到的驚喜時,常會說「Bingo! 」。

賓果遊戲的歷史可以追溯到十六世紀義大利的樂透遊戲「Il Giuoco del Lotto d'Italia」。到了十八世紀,賓果遊戲已漸趨成熟並在法國衍生出多種玩法。在十九 世紀的德國,賓果遊戲被廣泛的使用在教育目的上,例如教孩子們文字拼寫、動 物的名字和乘法表等。

(30)

第三章 系統規劃

本章節將說明系統運用近場通訊技術,同時結合賓果遊戲的要素,以達成教 學的目標。 過去的傳統遊戲,運用著非電子設備的簡易裝備或是單純的人體行動來進行 遊戲,固然是流傳下來的傳統文化的一部份,但其也有著自己的侷限性。對比現 代化的電子遊戲,傳統遊戲有著聲光效果不足、人們無法輕易進行遊戲或是難以 發展計算量大的遊戲等侷限。本研究以傳統遊戲—賓果遊戲作為基礎,嘗試結合 NFC 技術並用在教學目的上。為了增加趣味性,也同時支援網路連線比賽功能並 提供多種模式玩法。 基本的遊戲模式如下:首先準備九個 NFC 標籤,每一個標籤裡面事先寫入編 號、數道題目以及答案,題目可由中文題庫裡來出題,也支援英文、數學等,以 進行 3x3 賓果遊戲。當使用者選擇進行遊戲時,首先將先請使用者輸入想要的 3x3 板子中的 1-9 數字順序,輸入時會由系統檢查是否有誤,也可選擇板子由系統隨 機決定。之後,即可使用 NFC 功能讀取其中一個標籤,系統會從標籤內的多道題 目中隨機抽出某一道題目表現給使用者答題,若是使用者答案正確,則此一標籤 所代表的編號劃掉,若是答案錯誤則會提示出錯並再度回答。重複此一過程而能 夠將劃掉的編號連成一線即結束遊戲,最後會計算使用者的總答題次數、答題次 數和答對率,以鼓勵使用者用心作答。使用者的答題方式可用手打輸入、也可以

(31)

用 Android 系統內建的語音辨識功能來答題。經由這種方式,使用者能夠以遊戲 的方式學習教材內容,同時達到寓教於樂的目的。 開始遊戲 決定賓果卡 讀取NFC標籤 開始作答 檢查答案 顯示賓果卡 現在進度 答案錯誤 答案正確 是否達成 完結條件 遊戲結束 否 圖 3-1 系統基本流程圖

3.1 系統架構

本系統分成三個模式,分別是單人遊戲模式、網路連線模式(回合制)和網 路連線模式(搶答制)。除此之外,也支援使用者自行設計題目,只要按照系統 所提示的方式輸入題目,即可輕鬆將題目寫入 NFC 標籤中。 單人遊戲模式主要架構如上所述,主要遊戲者僅一人,提供單一使用者練習 題目之所需,也可用於題目設計者用來檢測題目、系統是否正確無誤。網路連線 模式(回合制)則是網路連線比賽的一種模式,遊戲方式為兩人比賽作答,任一 人取得的標籤編號都會互相傳送,最後看誰手上的板子先連成一線者即獲勝。此 過程中由先連入伺服器者需先等候另一位玩家,兩人都連上後會由先連入者先作 答,在作答過程中,另一人需等候。當兩人同時連成一線時,即判斷兩人均獲勝。 網路連線模式(搶答制)則加入了更為緊張刺激的元素,遊戲方式為當兩位遊戲

(32)

者都連上伺服器後,兩人可同時讀取自己選取的 NFC 標籤並作答。之後由先回答 正確的 NFC 標籤判斷為這一輪的編號,傳送到另一方並強制中斷另一方的答題, 以此刺激遊戲者的競爭心理,直至遊戲結束。 本系統的整體架構可分為兩個部分,Client 端和 Server 端。如圖 3-2。 Client 端主要可分為兩個部分,離線模式和連線模式。在離線模式下使用者 可以進行大部分的功能,例如觀看遊戲說明、將自訂的題目寫入 NFC 標籤以及以 單人遊戲模式進行練習。而開啟了連線模式的時候,只要手機能夠連上網,就可 進行一對一的賓果遊戲比賽,此時也可以選擇想要進行的連線遊戲模式為回合制 或搶答制。

Sever 端則是 Java 的 Socket Server,其工作是當一位 client 端使用者連進來 的時候,會自動開啟一個兩人遊戲房間並要求第一位使用者等待,直到第二位 client 端使用者連進來。之後便會進行兩位使用者的資料交流,直到遊戲結束並 關閉連線。Sever 端可同時支援多人連線。

Client Server Client

User User 讀取NFC tag 寫入NFC tag Socket Socket 遊戲說明 單人遊戲 建立兩人遊戲房間 處理資料流 自訂板子 連線模式 讀取NFC tag 遊戲說明 寫入NFC tag 單人遊戲 連線模式 自訂板子 關閉連線

Android Socket Server Android

(33)

3.2 Text-To-Speech

語音合成是用人工的方式產生語音的技術,TTS(Text-To-Speech)則隸屬於 語音合成,是將文字訊息轉換成語音的技術。 語音辨識和語音合成技術是實現人與機器的語音通訊,建立聽、說兩項關鍵 能力的口語系統所必需的的技術,其應用領域非常廣泛,具有非常重要的應用價 值。目前,語音合成廣泛的應用在辦公、教學、娛樂等多媒體軟體中。 Android 系統從 1.6 版本開始支援 TTS,然而當時並不支援中文。隨著 2011 年 IPhone 4S Siri 的推出,語音辨識和語音合成技術也更加受到矚目。要在 Android 系統上使用 TSS,需要先預先設定語音合成的引擎和語言包。 本研究使用三星 TTS,這款引擎支援中文、英文和韓文,只要在文章中有以 上三種語言皆可直接讀出。本研究運用 TTS 來達成聽力練習的部分,當系統讀到 標示為聽力部分的題目時,可以引入 TTS 技術讓使用者聽取題目。 文字分析 語音合成 語音數據庫 韻律控制 文字輸入 語音輸出 圖 3-3 TTS 系統流程圖

(34)

3.3 Java Socket 通訊技術

Socket 是一種應用程式介面,介於硬體和應用程式之間,並提供標準的函式 以符合不同的網路硬體規格。

本研究使用 java.net 套件來完成網路傳輸資料,Java 的 socket 提供了主機和 網路之間溝通的網路協定,也可用於描述網路位址和端口。程式可以運用 socket 與遠端的伺服器做溝通,由於 socket 是網路通訊中最低階的程式介面,如欲在不 同主機上傳輸想要的資料流,必須由程式設計師自行處理網路傳輸資料。 以 java.net 而言,其 API 可以分為以下幾點:  處理 URL。  處理主機名稱與 IP 位址。  處理 TCP 與 UDP 通訊協定。  處理網路認證與權限。  內容處理器。

(35)

Client建立 Client Socket連線 傳送訊息 接收Server的 訊息 End Client結束 ServerSocket建立 並等待 Server Socket連線成功 建立一個新的Thread 接收Server的 訊息 接收Client的 訊息 傳送訊息 End Thread結束 並關閉連線 圖 3-4 Client-Server 的基本訊息傳遞架構

3.3.1 Client 端系統實作

首先,要另 Android Application 具有存取網路的權限,必須先在 AndroidManifast.xml 內進行網路存宣告,程式碼如下: <uses-permission android:name="android.permission.INTERNET" /> 之後,當使用者選擇網路連線之後,Client 端會產生一個新的 thread 並且開 始連結網路上的 Server 端。下面是宣告連接的 Server 網路位址(140.122.184.39) 以及連接埠(5000),同時也宣告了輸入串流 input 和輸出串流 output。在這裡把 這部分包成一個 function。

(36)

try {

connection = new Socket("140.122.184.39", 5000);

input = new DataInputStream(connection.getInputStream()); output = new DataOutputStream(connection.getOutputStream()); } catch (IOException e) {

e.printStackTrace(); }

}

與一般 Java socket 連線程式不同的是,由於 Android 系統的 Activity 在切換 後無法繼續對原有的 thread 做控制,也無法傳遞連線資料和狀態。為了解決這個 問題,可以把連線部分以及其 thread 放在背景執行的 service 當中,由 service 負 責接收 Server 傳遞過來的資料,之後把資料流經由 broadcast 傳播到這個應用程式 內部,再由需要用到連線資料的 Activity 各自去註冊存取 broadcast 的資料,以下 是 SocketService.java 的主要程式碼:

new Thread() {

public void run() {

//如果沒有連上網,執行連線 if (connection == null) { network(); } try { //首先讀取server傳過來的標記是player1或player2 myMark = input.readChar(); //把標記廣播出去 bundle1 = new Bundle();

bundle1.putChar("myMark", myMark); Intent intent1 = new Intent();

intent1.setAction(MY_ACTION1); intent1.putExtras(bundle1);

sendBroadcast(intent1);

(37)

e.printStackTrace(); } while (true) { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } try { //之後不斷做server的字串接收,來決定client端的動作 s = input.readUTF(); //把標記廣播出去 if(!s.equals("")){

bundle2 = new Bundle();

bundle2.putString("message", s); Intent intent2 = new Intent(); intent2.setAction(MY_ACTION2); intent2.putExtras(bundle2); sendBroadcast(intent2); } } catch (IOException e) { e.printStackTrace(); } } } }.start(); Service廣播出去之前,需由各Activity自行註冊要是否要接收廣播的內容, Activity藉由接收器收到訊息之後,再決定其下一步動作。

private BroadcastReceiver updatUIReceiver = new BroadcastReceiver() { //註冊接收動作

public void onReceive(Context context, Intent intent) { //選擇Action名為mxp1的廣播

if (intent.getAction().equals("mxp1")) { //將廣播內容接收進此Activity

(38)

//根據接收的訊息決定下一步動作 myTurn = (myMark == '1' ? true : false); mHandler.post(setButton); } //選擇Action名為mxp2的廣播 if (intent.getAction().equals("mxp2")) { //將廣播內容接收進此Activity s = intent.getExtras().getString("message"); //根據接收的訊息決定下一步動作 mHandler.post(setText); } } };

3.3.2 Server 端系統實作

本研究中 Server 端主要是讓兩位 Client 端使用者能夠經由 Server 端控制,達 成資料流互相傳輸的目的。首先在 Server 端開啟之後,會對第一位連線進來的使 用者給他一個標記,並且通知他等待,直到第二位使用者連線進來即可進行連線 比賽功能。

public class SocketServerDemo {

private Player players[]; //玩家兩個

private static ServerSocket server;//伺服器ServerSocket

public SocketServerDemo() { players = new Player[2]; }

public void execute() {

for(int i = 0; i < players.length; i++) { try {

//產生兩個玩家執行緒

players[i] = new Player(server.accept(), this, i); players[i].start();

(39)

} catch(IOException e) { e.printStackTrace(); System.exit(1); } } // player2連線 synchronized(players[0]) { players[0].threadSuspended = false; players[0].notify(); } } //在伺服器顯示連線資訊 public void display(String s) { System.out.println(s); }

//將player1的輸出轉至player2,或是將player2的輸出轉至player1 public void validMove(int loc, int player) {

player = (player+1) % 2;

players[player]. otherAction (loc); }

//開啟伺服器

public static void main(String[] args) { SocketServerDemo game;

try {

server = new ServerSocket(5000); } catch(IOException e) { e.printStackTrace(); System.exit(1); } //伺服器迴圈,使伺服器同時能夠多組連線 while(true) {

game = new SocketServerDemo(); game.execute();

} }

(40)

}

為了實作兩位 Client 端互相傳輸資料的目的,每當一個 Client 端連進來時

Server 端就會產生一個新的 thread,用來管理 Client 的資訊。需要傳輸資料到另 一位 Client 端的時候,即呼叫下列 function。

public void otherAction(int loc) { try {

output.writeUTF(Integer.toString(loc)); output.flush();

control.display("向玩家 " + (number == 0 ? '1' : '2') + "輸出"+loc); } catch(IOException e) { e.printStackTrace(); } }

3.4 近場通訊技術

大部分的 NFC 標籤是被動式的,儲存在標籤內的資料為 NDEF(NFC Data Exchange Format)格式。當我們使用具備 NFC 功能的手機傳遞訊息時,要先將 該訊息轉換成 NDEF 格式,當我們想要接收 NFC 訊息的時候,也就相當於經由 應用程式建立通訊連線,接收到 NDEF message 之後,再將其中的資訊拆解出來。 一個 NDEF message 是由一個或多個 NDEF record 所組成。基本上,我們可 以依據我們的應用程式和標籤類型來決定有多少個 NDEF record 封裝在一個 NDEF message。至於 NDEF record 的格式、長度等定義均依照 NFC 論壇所制定 的規格書 NFC Data Exchange Format 中。

(41)

圖 3-5 NDEF message 的組成

3.4.1 使用近場通訊前的準備

要讓應用程式得到使用近場通訊、處理近場通訊訊息的許可,首先需要修改 AndroidManifest.xml 檔,取得近場通訊的權限。 <uses-permission android:name="android.permission.NFC" /> 使用 uses-feature 元素,令此應用程式不會在沒有支援 NFC 技術的設備上顯 示,避免產生錯誤。

<uses-feature android:name="android.hardware.nfc" android:required="true" /> 除此之外,還需要加入 intent-filter 的支援,使此應用程式可以檢測到 NFC 標籤內含有 NDEF 格式時,優先處理此 NDEF 的資料。 <intent-filter> <action android:name="android.nfc.action.NDEF_DISCOVERED"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="text/plain" /> </intent-filter> 另外還需要宣告 NFC 實現的各種規格,建立在 nfc_tech_list.xml 檔中。每一

(42)

個 NFC 標籤中都可能支援多種 NFC 規格,這些規格當中有些也會是彼此兼容的。 <meta-data android:name="android.nfc.action.TECH_DISCOVERED" android:resource="@xml/nfc_tech_list" /> 以下是本研究中 nfc_tech_list.xml 檔所宣告支援的 NFC 規格: <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <tech-list> <tech>android.nfc.tech.IsoDep</tech> <tech>android.nfc.tech.NfcA</tech> <tech>android.nfc.tech.Ndef</tech> </tech-list> <tech-list> <tech>android.nfc.tech.NfcA</tech> <tech>android.nfc.tech.Ndef</tech> <tech>android.nfc.tech.MifareClassic</tech> </tech-list> </resources> 在 nfc_tech_list.xml 中,只有符合了<tech-list>……</tech-list>之間的定義的 NFC 規格,才能夠為 activity 所響應,否則會被過濾掉。Android 支援的標籤技術 如下: 表 3-1 Android 支援的 NFC 標籤規格 類別 描述

NfcA 提供存取 NFC-A(ISO 14443-3A)屬性和 I/O 控制。

NfcB 提供存取 NFC-B(ISO 14443-3B)屬性和 I/O 控制。

NfcF 提供存取 NFC-F(JIS 6319-4)屬性和 I/O 控制。

(43)

IsoDep 提供存取 ISO-DEP(ISO 14443-4)屬性和 I/O 控制。 Ndef 提供存取 NDEF 的資料和控制在已經格式化的 NFC 標籤上。 NdefFormatable 提供格式化的操作在一個可能被 NDEF 格式化的 NFC 標籤。 如果 Android 設備支援 MIFARE 系統時,可以選擇下列的規格: 表 3-2 可以選擇支援的 NFC 標籤規格 類別 描述

MifareClassic 提供存取 MIFARE Classic 屬性和 I/O 控制。

MifareUltralight 提供存取 MIFARE Ultralight 屬性和 I/O 控制。

3.4.2 近場通訊標籤讀取設計

首先在 AndroidManifest.xml 檔中,將欲使用 NFC 技術的 Activity 頁面上宣告 使用 NFC 功能的 intent-filter,使用了 3.4.1 章節中介紹的程式碼。 <activity android:name=".NfcGetData "> <intent-filter> <action android:name="android.nfc.action.NDEF_DISCOVERED"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="text/plain" /> </intent-filter> <intent-filter> <action android:name="android.nfc.action.TECH_DISCOVERED"/> </intent-filter> <meta-data android:name="android.nfc.action.TECH_DISCOVERED" android:resource="@xml/nfc_tech_list" /> <intent-filter> <action android:name="android.nfc.action.TAG_DISCOVERED"/> </intent-filter> </activity>

(44)

在使用讀取 NFC 功能的 Activity 之中,首先宣告變數: //NFC適配器,具備NFC功能的手機才有 NfcAdapter mNfcAdapter; //用於處理即將發生的事情 PendingIntent mNfcPendingIntent; //意圖過濾器 IntentFilter[] mNdefExchangeFilters; //做一個tech list

private String[][] mTechLists;

然後在 onCreate()內定義這些變數的內容: mNfcAdapter = NfcAdapter.getDefaultAdapter(this);

mNfcPendingIntent = PendingIntent.getActivity(this, 0,new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); IntentFilter ndefDetected = new

IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED); try {

ndefDetected.addDataType("text/plain"); } catch (MalformedMimeTypeException e) { }

mNdefExchangeFilters = new IntentFilter[] { ndefDetected }; mTechLists = new String[][] { new String[] { NfcA.class.getName() } };

之所以這樣定義變數,是為了利用前台發布系統的優先級大於 intent 發布系 統這點,也就是當一個正在前台運行的程式發覺使用者接觸到 NFC 標籤的時候, 可以直接由前台的 Activity 來處理接收到 NFC 標籤的內容後的動作。因此,接著 在 onResume()內寫入 enableForegroundDispatch(Activity, PendingIntent,

IntentFilter[], String[][])。 public void onResume(){ super.onResume();

if(mNfcAdapter != null)

mNfcAdapter.enableForegroundDispatch(this,mNfcPendingIntent,mNdefExchan geFilters, mTechLists);

(45)

然後,一旦在 onResume()內使用了 enableForegroundDispatch 方法,那麼就 必須在 onPause()內使用 disableForegroundDispatch 方法,以關閉前台發布系統。 protected void onPause() {

super.onPause(); if(mNfcAdapter != null) { mNfcAdapter.disableForegroundDispatch (this); } finish(); } 之前在 onResume()內使用了 enableForegroundDispatch 方法,那麼當手機感 應到 NFC 標籤時,就會跳到 onNewIntent(Intent intent)裡面,如果此標籤的 intent 為我們可以處理的 NFC intent,那麼就開始進行內容處理。

protected void onNewIntent(Intent intent) { if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) { //取得標籤內容 Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); NdefMessage msgs = (NdefMessage) rawMsgs[0];

String text = new String(msgs.getRecords()[0].getPayload()); //切換到下一個Activity

Intent intent1 = new Intent(NfcGetData.this,Question.class); //也將標籤內容傳輸過去 intent1.putExtra("text", text); startActivity(intent1); } }

3.4.3 近場通訊標籤寫入設計

一開始,新增修改 AndroidManifest.xml 和 nfc_tech_list.xml 的部分如同 3.4.1

(46)

章節以及 3.4.2 章節。在使用寫入 NFC 功能的 Activity 當中,首先宣告變數: //NFC適配器 NfcAdapter mNfcAdapter; //用於處理即將發生的事情 PendingIntent mNfcPendingIntent; //寫入標籤過濾 IntentFilter[] mWriteTagFilters; //NDEF格式過濾 IntentFilter[] mNdefExchangeFilters; 然後在 onCreate()內定義這些變數的內容: text = mText;//前一個Activity輸入的文字 mNfcAdapter = NfcAdapter.getDefaultAdapter(this);

mNfcPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); IntentFilter tagDetected =new

IntentFilter(NfcAdapter.ACTION_TAG_DISCOVERED); mWriteTagFilters = new IntentFilter[] { tagDetected };

onResume()、onPause()的部分,同 3.4.2 章節所介紹: public void onResume(){

super.onResume(); if(mNfcAdapter != null)

mNfcAdapter.enableForegroundDispatch(this, mNfcPendingIntent, m WriteTagFilters, null);

}

protected void onPause() { super.onPause(); if(mNfcAdapter != null) { mNfcAdapter.disableForegroundDispatch (this); } finish(); } 當手機接觸 NFC 標籤時,系統接收到此 intent,進入 onNewIntent()欲將訊息 寫入標籤。

(47)

protected void onNewIntent(Intent intent) { if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) { //使用writeTag方法寫入標籤 Tag detectedTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); writeTag(getNoteAsNdef(), detectedTag); //並進入下一個activity

Intent intent1 = new Intent(NfcPushData.this,SetQuestion.class); startActivity(intent1);

} }

最後定義 writeTag 方法,將 message 內容寫入即可。 boolean writeTag(NdefMessage message, Tag tag) {

Ndef ndef = Ndef.get(tag); …

ndef.writeNdefMessage(message); }

(48)

第四章 系統開發與設計

4.1 系統開發環境

本研究為開發 Android 系統上的應用程式,運用 Eclipse 作為開發工具,Java 為開發語言,並以 Android SDK 4.1.2 以及其包含的模擬器(Emulator)做為程式 開發套件,如圖 4-1。因模擬器無法實現 NFC 功能,這部分以具備 NFC 功能的 Samsung Galaxy S III 進行開發測試,詳細的開發環境如表 4-1。

(49)

表 4-1 開發環境 名稱 用途 版本 作業系統 系統開發平台 Windows 7 JDK Java 開發工具 7.0 Eclipse IDE 開發工具 3.7.2 Android SDK Android 程式開發套件 4.1.2 ADT Android 擴充套件 22.0.0

Android API Level Android 版本 16

4.2 系統實作

本節將討論本系統的使用者案例圖以及循序圖。將使用者分為教師和學生, 分別進行討論和說明。

(50)

4.2.1 使用者案例圖

編輯NFC標籤 教師 學生 遊戲系統 System 圖 4-2 使用者案例圖 – 整體 本系統的大框架如圖 4-2 所示,可分為遊戲系統和編輯 NFC 標籤兩個方面。 使用者則分為教師和學生。對於學生而言,只能夠使用遊戲系統;而對於教師而 言,則可以運用編輯 NFC 標籤輸入題目,也可以操作遊戲系統進行檢查。這種分 類是為了防止學生任意修改 NFC 標籤內的內容。

(51)

學生 遊戲說明 網路連線模式 (回合制) 單人遊戲模式 網路連線模式 (搶答制) 進行遊戲 <<include>> 顯示結果 自訂板子 <<extend>> 圖 4-3 使用者案例圖 – 學生 如圖 4-3 所示,學生在進行遊戲系統時,一開始可以觀看遊戲說明,或是選 擇進行自己想要的遊戲模式,中間板子的選擇可以自訂或是由系統自動產生。依 照之前選擇的遊戲模式進行一局遊戲之後,會在結果畫面顯示這局遊戲的總答題 次數、答錯次數和答對率,以鼓勵學生認真作答。 教師 登入 輸入題目 <<include>> 接觸NFC標籤 <<include>> 圖 4-4 使用者案例圖 – 教師編輯 NFC 標籤

(52)

如圖 4-4 所示,教師想要修改 NFC 標籤變更題目時,會先進入登入頁面,登 入成功後只要按照指定的格式輸入題目,之後再接觸 NFC 標籤即可把自訂的題目 輸入 NFC 標籤。

4.2.2 循序圖

自訂板子UI 現在狀態UI 接觸NFC tag UI NFC tag

:User 1:點選單人遊戲() 2:輸入板子() 3:繼續() 4:讀取NFC tag() loop直到連成一線 題目UI 5:回傳題目訊息() 6:顯示題目() 7:回答題目() 完結畫面UI 8:顯示結果() 圖 4-5 循序圖 – 學生進行單人遊戲 如圖 4-5 所示,當使用者點選單人遊戲時,需要先選擇自己的 3x3 板子,此 時可以選擇手寫輸入或是由系統隨機產生。在手寫輸入時,系統會檢查使用者的 輸入是否按照格式,之後就可以開始進行遊戲。首先使用者會看到自己的板子, 再來系統要求使用者接觸 NFC 標籤,碰觸後系統會在 NFC 標籤的題庫中隨機抽 出一題出來給使用者作答。若是使用者回答正確,即回到現在狀態頁面並顯示此 標籤所代表的編號。之後不斷回答問題直到連成一線,即進入完結畫面並顯示結

(53)

果。

自訂板子UI 現在狀態UI 接觸NFC tag UI NFC tag

:User 1:點選網路連線() 2:輸入板子() 5:繼續() 6:讀取NFC tag() loop直到某人連成一線 題目UI 7:回傳題目訊息() 8:顯示題目() 9:回答題目() 完結畫面UI 10:顯示結果() 伺服器 3:傳送訊息() 4:伺服器回傳訊息() 圖 4-6 循序圖 – 學生進行網路連線模式 如圖 4-6 所示,當使用者點選網路連線模式時,後面的進程基本上如同單人 遊戲模式,最大的差別在於多了伺服器連線。每當使用者進入現在狀態頁面時, 會傳給伺服器此時的使用者狀態以及完成的標籤編號,並且按照伺服器回傳的訊 息決定使用者接下來的狀態和行動。連線使用者中只要任一人達成連成一線的條 件,即會決定勝負,並且讓雙方進入完結畫面。

(54)

登入UI 輸入題目UI 接觸NFC tag UI NFC tag :User 1:點選題目設計() 2:登入成功() 3:輸入() 4:輸入題目訊息() loop 5:載入輸入題目UI() 圖 4-7 循序圖 – 教師編輯 NFC 標籤 如圖 4-7 所示,使用者首先會進入登入頁面,若是登入成功即可開始輸入題 目。在輸入題目頁面中會顯示輸入格式和範例,按照格式輸入題目後,系統會提 示使用者接觸 NFC 標籤,將題目輸入 NFC 標籤之後會回到先前的輸入題目頁面, 即可繼續進行輸入。

4.3 系統呈現

本研究將系統分為四個部分:單人遊戲模式、網路連線模式(回合制)、網 路連線模式(搶答制)和設計題目,本節將分別進行討論和說明。 本系統需一至二台具備 NFC 功能的裝置和九枚事先設定好的 NFC 標籤,標 籤內容為標籤編號、教師輸入的數道題目和答案,內容量視使用的 NFC 標籤容量 而定。

(55)

圖 4-8 系統需求硬體 在系統一開始,可以選擇遊戲開始、歡看遊戲說明、遊戲結束和設計題目, 選擇開始遊戲之後,再選擇想要進行的遊戲模式。 圖 4-9 主畫面 圖 4-10 遊戲說明 圖 4-11 選擇遊戲模式

4.3.1 單人遊戲模式

進入遊戲系統初始,需要使用者輸入自己所想要的 3x3 賓果板子,這時可以

(56)

自行手寫輸入,也可以選擇由系統隨機產生。若是由使用者自行輸入,則輸入時 會由系統檢查輸入是否符合格式。若是格式不正確,則會給出提示其輸入有什麼 錯誤,唯有檢查皆通過時才能進入下一個頁面。 系統會做三項檢查: 1. 輸入的字元長度是否為 9。 2. 輸入的字元是否皆為 1-9 的數字。 3. 輸入的字元是否有重複。 圖 4-12 輸入賓果板子 之後進入下一個頁面時,先前輸入的板子會在這裡以動態配置的方式顯示圖 片,這張圖片即為這一局遊戲中使用者的賓果卡,使用者確認後即可進行下一 步。

(57)

圖 4-13 開始頁面 選擇繼續下一步之後,系統會提示使用者將手機接觸 NFC 標籤,接著系統 會從 NFC 標籤內的題庫當中隨機抽選一題出來當作題目。當使用者輸入答案時系 統會檢查答案是否正確無誤,若是錯誤則需再次回答。 圖 4-14 提示讀取 NFC 標籤內容 圖 4-15 顯示題目

(58)

圖 4-16 提示答案錯誤 圖 4-17 回答正確 當使用者回答正確,頁面會重新顯示使用者的賓果卡,並且此時使用者方能 知道自己剛剛回答的 NFC 標籤編號,以及賓果卡的目前進度為何。接著使用者不 斷進行遊戲回答問題,直到自己的賓果卡編號連成一線即可進入完結畫面,在完 結畫面中會顯示自己這局遊戲的總答題次數、答錯次數以及答對率。 圖 4-18 聽力題

(59)

當系統讀取到標示為聽力題的題目時,會在畫面上顯示一個「聆聽題目」的 按鈕。當使用者按下此按鈕時,系統即會使用語音合成誦讀出預設的題目,使用 者可以再次按下按鈕以重新聆聽題目。 圖 4-19 達成完結條件 圖 4-20 完結畫面

4.3.2 網路連線模式(回合制)

選取網路連線模式初始,如同上一小節,同樣需要使用者先輸入自己想要的 賓果卡板子。之後便會進行伺服器連線,系統會根據伺服器回傳的訊息瞭解自己 該做的行動。伺服器會開啟兩人遊戲房間,並將最近連入的兩位使用者分配在一 起進行遊戲,當連入的使用者僅一位時,伺服器會要求這位使用者等待。當使用 者收到等待訊息時,會顯示出等待訊息並將按鈕鎖住,白色字體的按鈕即表示不 可按。

(60)

圖 4-21 等待另一個玩家畫面 當第二位使用者也連上伺服器時,伺服器會依據連上伺服器的時間順序,安 排第一位使用者先進行題目問答,如圖 4-22。在第一位使用者答題的過程中,則 會要求第二位使用者等待,直至第一位使用者作答完一題並將完成的 NFC 標籤編 號經由伺服器傳入。此時,系統會指示第二位使用者開始進行作答,如圖 4-23。 圖 4-22 第一位使用者先作答

(61)

圖 4-23 第一位使用者作答後 如同上一小節所述,兩位使用者將繼續輪流作答,直到其中一方的賓果卡率 先連成一線即表示勝負已定,如圖 4-24。若是雙方同時連成一線,則判定雙方皆 為勝利。 圖 4-24 第二位使用者達成勝利條件

(62)

最後亦會進入完結畫面,統計使用者各自的總答題次數、答錯次數以及答對 率,如圖 4-25。至此,本局遊戲結束。 圖 4-25 網路連線比賽完結畫面

4.3.3 網路連線模式(搶答制)

如同上一小節,一開始使用者需輸入自己的賓果卡板子。之後連線至伺服器, 伺服器同樣會根據客戶端的先後順序進行安排,當連入的使用者僅一位時,伺服 器會要求其等待至另一位使用者連入。為了避免混淆,伺服器端的回合制和搶答 制使用不同的連接埠。 然而當兩位使用者完成分配時,系統會同時向兩位使用者通知可開始作答, 如圖 4-25。

(63)

圖 4-26 搶答開始畫面 之後,兩位使用者可各自依照系統提示接觸 NFC 標籤、讀取題目和回答答案, 當其中一人率先回答完問題時,系統會強制中斷另一人的回答,並且讓其回到顯 示賓果卡板子的現在狀態頁面。 圖 4-27 雙方同時搶答

(64)

圖 4-28 某人回答一題結束 接下來,如同上一小節,雙方亦會繼續進行遊戲,重複搶答的過程,直至其 中一方連成一線即決定勝負,若是雙方同時連成一線,則判定雙方皆為勝利。最 後同樣進入完結畫面,總結各自的總答題次數、答錯次數和答對率。

4.3.4 設計題目

本研究包含一個簡易方式,讓教師們可以自行編輯 NFC 標籤裡面的題目。為 了避免學生隨意變更 NFC 標籤的內容,當教師欲進入編輯題目頁面時,需先輸入 正確的使用者 ID 和密碼,如圖 4-28。使用者 ID 和密碼驗證成功時,即可進入編 輯頁面,如圖 4-29。

(65)

圖 4-29 登入頁面 圖 4-30 編輯頁面 編輯頁面上寫有編輯格式和範例,教師可先在電腦上依照格式編輯好題目與 答案,再將這段文字傳輸到具有 NFC 功能之智慧型手機上。進入編輯頁面輸入後, 依照系統提示將手機接觸 NFC 標籤,如圖 4-30 所示,即可順利將題目轉成 NDEF 格式,並輸入至 NFC 標籤中。 本系統支援複數答案,為應對當題目格式為填充題時,答案可能為多項的情 況。例如問題為詢問「靜夜思」的作者為何人,學生回答「李白」或「李太白」 皆可。教師只需在輸入題目時,在答案之間以半形逗號「,」區隔即可。本系統支 援聽力測驗,教師只需在題目的最前端加入半形「@」,即標示此題為聽力題目。

(66)

圖 4-31 提示寫入 NFC 標籤內容

4.4 題目分析

本系統支援由教師自行設計題目,題目可用中文、英文、數字撰寫,以鍛鍊 學生聽、讀、寫為主。由於本系統題目、答案皆由教師事先輸入至 NFC 標籤內, 因此具有無法支援的題目類型。以下是題目類型分析: 可支援的題目類型包含:  是非題  單選題  複選題  填充題  改錯題  閱讀測驗

(67)

不可支援的題目類型包含:  造句題  問答題 輸入的資料項目有三類:標籤編號、題目和答案,每項資料之間以換行來做 區別。以下是輸入的資料格式: 1. 標籤編號 (9 個標籤分別輸入 1-9 不等) 2. 題目一 3. 題目一的答案 4. 題目二 5. 題目二的答案 … 使用者輸入的題目數量至少一個,至多到標籤的容量上限。當使用者進行遊 戲至讀取此標籤時,會由系統從題庫中取出標籤編號、隨機一道題目以及此題目 的答案。

String[] token = text.split("\n");//tag內容處理 int amount = token.length;

int ran; do{ ran = (int)(Math.random()*amount);//隨機抽出一題 }while(ran % 2 != 1); tagnumber = token[0]; question1 = token[ran];

(68)

answer1 = token[ran+1]; 表 4-2 編輯題目範例 標籤編號 5 題目 1 春天一到,花就開了,天氣也(A.涼快 B.暖和 C.冷)了。 答案 1 B 題目 2 (A.沙灘 B.海灘 C.沙漠)裡的溫度,白天高到四、五十度,晚上 又低到零下。 答案 2 C 題目 3 這家書店文學(A.類 B.種 C.樣)的書,都在那個窗戶旁邊。 答案 3 A 題目 4 (聽力題) @小王今年十二歲,美美比小王大五歲。請問美美明年幾歲? 1. 五歲 2.七歲 3.十二歲 4.十八歲 答案 4 4 題目 5 有五柳先生之稱的人是? 答案 5 陶潛,陶淵明 題目 6 這個山裡____ ____(chuchan)茶嗎? 答案 6 出產 題目 7 我的體溫很高,可能____ ____(fashao)了。 答案 7 發燒

(69)

題目 8 台北這幾年的____ ____(bianhua)很大,很多地方我都不認得了。 答案 8 變化 題目 9 改錯題: 拿到考券,我認為這次考試提目很簡單。 答案 9 題目 10 改錯題: 你怎麼剔我?我要報告老師。 答案 10 題目 11 1.玉米 2.魚 3.葡萄柚 4.柳橙 5.煤 6.香蕉 7.石油 8.鳳梨 9.鐵 10. 蝦 問題:請問哪些是水果類? 答案 12 3 4 6 8 題目 11 1.玉米 2.魚 3.葡萄柚 4.柳橙 5.煤 6.香蕉 7.石油 8.鳳梨 9.鐵 10. 蝦 問題:請問哪些是海鮮類? 答案 12 2 10 本研究所使用的 NFC 標籤採購價為一個新台幣 70 元,容量為 4KB。運用本 研究所包含的寫入方式,一個標籤大約可以寫入 1300 字,以表 4-2 的範例題目換 算,則大約可以寫入 30 題左右。寫入 30 題意即使用者每次讀取 NFC 標籤內的題 目時,每一題出現的機率為三十分之一。預備進行本系統時,NFC 標籤的費用就 需要新台幣 630 元,若想壓低硬體成本,可使用大量採購或是購買較小標籤容量 等方式。

(70)

第五章 結論與未來展望

5.1 結論

本研究提出了一個遊戲模式,令近場通訊技術結合了傳統遊戲—賓果遊戲, 並且加入了嚴肅遊戲的教學方式,使得使用者可以在遊戲中學習,提高學習的意 願。為了鼓勵使用者認真作答,會在一局遊戲結束時統計此局的總答題次數、答 錯次數和答對率。而為了增加遊戲性和刺激性,本研究加入了網路連線比賽模式, 令使用者較願意反覆遊玩,同時增進對題庫的熟悉程度。 為方便教師自行填入題目,本研究包含一個簡易方式,使系統自訂 NFC 格式, 讓教師可以輕鬆修改 NFC 標籤內的題目。 由於近場通訊需要短距離的接觸,因此在進行比賽模式時,以有助於增加人 與人之間的互動,使得人與人之間的距離得以拉近。而近場通訊之前通常被應用 在電子錢包與展覽訊息上面,本研究提出一個新的方式,讓近場通訊技術可以擁 有教學方面應用的可能。 通過本系統,希望使用者能夠在遊戲中進行學習,提高學習的意願,同時通 過互動,加強人與人之間的交流和聯繫。另一方面,能夠通過本系統發展 NFC 技術與教學之間的結合,以推動 NFC 技術的使用與認知,以創造新的教學方式的 發展可能性。

(71)

5.2 未來展望

限於現在的 NFC 標籤容量大小,尚無法將圖片或者影音檔案輸入至 NFC 標 籤當中。因此希望未來能有更大的 NFC 標籤容量,或是更好的壓縮演算法,以導 入多媒體讓題目的表示方法可以更加豐富。 本系統目前支援「聽、說、讀、寫」四大指標中的「聽」、「讀」和一部份的 「寫」。「說」的部份,由於目前語音辨識能力尚無法達到 100%正確,因此希望 將來這方面的技術能有所進展,如此一來,則可在題目類型當中加入「朗讀下列 句子」之類的題目。「寫」若要達成問答題和造句題等類型,則必須在句型辨識 等技術完善後方有所可能。「聽」的方面,現在雖已有語音合成功能,但本系統 使用的引擎對於韻律控制方面尚有待加強,希望未來能讓使用者聽得更清楚。 而在未來的研究中,可以將題目與答案放置在線上資料庫中,讓教師以帳號 密碼登入網頁進行修改題庫的動作,並屏除實體 NFC 標籤的因素,讓賓果遊戲僅 在手機和伺服器端間進行,可讓學生在沒有 NFC 裝置的情況下進行練習。如此一 來,也避免了 NFC 標籤容量不足的問題。未來也希望能夠結合其他功能,例如藍 芽連線可讓手機在沒有網路的情況下進行遊玩,或是修改伺服器端和客戶端的程 式,使系統支援三人以上同時連線遊玩。

(72)

參考文獻

[1] 王聖銘,黃馨慧,陳富美.“多模式互動節能減碳數位學習嚴肅遊戲之發展". 第八屆知識社群國際研討會,2012.

[2] 莊惠迪. “以近場通訊為基礎的遊戲之研究".國立臺灣師範大學碩士論 文,2012.

[3] W.Lewis Johnson. “Serious Use of a Serious Game for Language Learning",

Artificial Intelligence in Eduation, IOS Press , 2007.

[4] Tsvetozar Georgiev, Evgenia Georgieva, Angel Smrikarov.“M-Learning - a New Stage of Е-Learning", International Conference on Computer Systems and Technologies - CompSysTech’2004.

[5] T.-Y. Liu.“A context-aware ubiquitous learning environment for language

listening and speaking", Journal of Computer Assisted Learning pages 515--527.

[6] Andreas Holzinger, Alexander Nischelwitzer, Matthias Meisenberger. “Mobile

Phones as a Challenge for m-Learning: Examples for Mobile Interactive Learning

Objects (MILOs)", IEEE 2005.

[7] Lung-Hsiang Wong, Chee-Kuen Chin, Chee-Lay Tanand May Liu.“Students'

Personal and Social Meaning Making in a Chinese Idiom Mobile Learning

數據

圖 2-1    Android 系統架構圖
圖 2-4    NFC card emulation mode
圖 2-6    NFC reader/writer mode  2.2.3    NFC 論壇          NFC 論壇(NFC forum)為 NFC 技術的非營利性官方組織,於 2004 年創建。 該論壇制定 NFC 技術的標準和規格,並且致力於 NFC 技術的推廣和標準化,確 保具備 NFC 技術的產品遵照此規格。  表 2-1    NFC 論壇制定之規格書  年份  名稱  NFC 標準
圖 2-9    Tactical Iraqi Skill Builder 以及 Mission Game 截圖
+7

參考文獻

相關文件

由於醫療業導入 ISO 9000 品保系統的「資歷」相當資淺,僅有 三年多的年資 11 ,因此,對於 ISO 9000 品保系統應用於醫療業之相關 研究實在少之又少,本研究嘗試以通過

由於 Android 作業系統的開放性和可移植性,它可以被用在大部分電子產品 上,Android 作業系統大多搭載在使用了 ARM 架構的硬體設備上使裝置更加省電

Lin-ya Hong (2009), “Effects of Enterprise Resource Planning (ERP) Systems Adoption on Production Performance in Manufacturing Industry -- using A Multinational Plastic

Intel 公司的 RFID 事業部門之後於 2008 年 7 月被 UHF Gen 2 RFID 解決方案供應商 Impinj 公司宣佈收購 , 並更新名為 Indy R1000。.

首先遊戲廠商將 Master Server 啟動。第一台 Local Game Server 啟動後,向 Master Server 登入,Master Server 會告知這台 Local Game Server

通常在研究賽格威這類之平衡系統時在於機構之設計是十分的昂貴,本論文

在專題中,我們建立兩套以景點為主的資訊系統,一套是運行在 Android AVD (Android Virtual Device) 模擬器上的資訊系統,另外是內嵌於 Facebook

In this paper, we try to explain the three of ideals of graph theories - Dijkstra’s, Prim’s, and Kruskal’s minimum spanning tree on the board game Ticket to Ride. Brief describe