國立臺灣師範大學應用電子科技學系...

63
國立臺灣師範大學應用電子科技學系 碩士論文 指導教授:莊謙本博士 發展一個基於地理位置的 Android 應用程式 SaysApp Developing a Location-Based Android Application SaysApp 研究生:彭百謙 一百年七月

Upload: others

Post on 15-Oct-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

  • 國立臺灣師範大學應用電子科技學系

    碩士論文

    指導教授:莊謙本博士

    發展一個基於地理位置的 Android 應用程式 SaysApp

    Developing a Location-Based Android Application SaysApp

    研究生:彭百謙 撰

    中 華 民 國 一百年七月

  • i

    發展一個基於地理位置的 Android 應用程式 SaysApp

    學生:彭百謙 指導教授:莊謙本

    國立臺灣師範大學應用電子科技學系碩士班

    摘 要

    Android是現今成長最快速的行動帄台,截至 2011年5月,第一億個Android

    行動裝置啟用了,且目前正以每天超過 50 萬部的速度增加。同時,結合定位

    功能的智能手機和帄板電腦等行動裝置的普及,衍生出許多基於地理位置的資

    訊服務(Location-Based Service)。而 Android 行動帄台的開放性,最有利於研

    究發展新的應用。

    本研究為發展一個基於地理位置的 Android 行動即時資訊服務。藉由設計

    一個 Android「行動裝置端」的應用程式(App),及一個位於 Internet 上的「主

    機端」的 MySQL 資料庫,結合「雲端」的 Google Maps 服務,發展出一個具

    有訊息廣播功能、基於地理位置的行動即時資訊服務 SaysApp。相對於類似的

    App 如 Google Latitude,本研究所發展的 SaysApp,使用者能夠輕易取得地理

    位置「附近」的「任何使用者」的訊息,因此 SaysApp 可以用來建立一個前所

    未有的溝通管道。

    關鍵字:Android、Location-Based Service、App、Google Latitude

  • ii

    Developing a Location-Based Android Application SaysApp

    Student:Peng Pai-Chien Advisor:Dr. Chuang Chien-Pen

    Institute of Applied Electronics Technology

    National Taiwan Normal University

    ABSTRACT

    Android is the most rapidly growing mobile platform nowadays. By May 2011,

    one hundred million Android devices have been activated, and the number is

    increasing at a speed of over 500,000 devices being powered up every day.

    Meanwhile, many Location-Based Services are derived from the popularization of

    locationing featured mobile devices, the smartphones and the tablets. The openness

    of Android is beneficial to research and develop new applications.

    This research is to develop a location-based Android mobile instant information

    service. With both the App on the device and the database on the Internet being

    designed, and Google Maps in the “cloud” being linked, a text-broadcasting

    location-based service has been developed. Different from the app Google Latitude,

    SaysApp developed in this research enables the users to build a novel channel to

    communicate with any unknown users nearby easily.

    Keywords:Android; Location-Based Service; App; Google Latitude

  • iii

    誌 謝

    能有機會著手寫這篇畢業論文,我要特別感謝我的指導教授莊謙本博士。

    謝謝老師願意指導我這個問題學生,在研究方向和為人處世給予我許多啟發和

    學習。謝謝老師邀請到家裡聚餐,分享人生的道理和溫暖。尤其謝謝老師容許

    我在這段時間,先處理自己的問題,再繼續完成學業。

    謝謝您,莊老師!

    彭百謙 謹誌

  • iv

    目 錄

    摘 要 ...................................................................................................................... i

    ABSTRACT ................................................................................................................ii

    誌 謝 ................................................................................................................... iii

    目 錄 .................................................................................................................... iv

    圖 目 錄 .................................................................................................................... vi

    表 目 錄 ..................................................................................................................viii

    第一章 緒論 ............................................................................................................. 1

    1.1. 研究背景 ................................................................................................... 1

    1.2. 研究目的 ................................................................................................... 2

    1.3. 論文架構 ................................................................................................... 2

    第二章 行動資訊服務發展趨勢 .............................................................................. 3

    2.1. Google Android 行動帄台 ......................................................................... 3

    2.1.1. Google ............................................................................................ 3

    2.1.2. Android ........................................................................................... 5

    2.2. Google Maps 雲端服務 ............................................................................. 8

    2.2.1. Web ................................................................................................. 8

    2.2.2. App ............................................................................................... 10

    2.3. Location-Based Services 實際應用 ......................................................... 11

    2.3.1. Google Latitude ............................................................................ 11

    2.3.2. Facebook Places ............................................................................ 12

    第三章 SaysApp 的設計與實現 ............................................................................. 14

    3.1. 系統架構 ................................................................................................. 14

    3.2. 伺服器端 ................................................................................................. 15

  • v

    3.3. 使用者端 ................................................................................................. 18

    3.3.1. Android App 開發環境 ................................................................. 18

    3.3.2. SaysApp 的介面設計 ................................................................... 22

    3.3.3. SaysApp 的程式設計 ................................................................... 25

    3.4. 模擬驗證 ................................................................................................. 35

    3.4.1. 使用虛擬裝置模擬 ....................................................................... 35

    3.4.2. 使用實機驗證 .............................................................................. 38

    第四章 綜合分析比較............................................................................................ 45

    4.1. 功能適地性 ............................................................................................. 45

    4.2. 功能即時性 ............................................................................................. 46

    4.3. 功能實用性 ............................................................................................. 47

    4.4. 功能多樣性 ............................................................................................. 48

    4.5. 介面友善度 ............................................................................................. 49

    4.6. 資料安全性 ............................................................................................. 49

    4.7. 系統穩定度 ............................................................................................. 50

    第五章 結論 ........................................................................................................... 51

    5.1. 研究貢獻 ................................................................................................. 51

    5.2. 未來發展 ................................................................................................. 51

    參考文獻 ................................................................................................................... 52

  • vi

    圖 目 錄

    圖 2-1 Google 1997 ................................................................................................. 4

    圖 2-2 Google 2011 ................................................................................................. 4

    圖 2-3 臺北市信義區衛星圖 ................................................................................... 8

    圖 2-4 臺師大圖書館街景圖 ................................................................................... 9

    圖 2-5 標示遠方的朋友 ........................................................................................ 11

    圖 2-6 Facebook for Android 的 App 的 Check In 按鈕配置 ................................ 13

    圖 3-1 SaysApp 的系統架構 ................................................................................. 14

    圖 3-2 Android 行動帄台架構 .............................................................................. 19

    圖 3-3 Android App 產生的流程 ........................................................................... 20

    圖 3-4 下載安裝所需的 SDK Components ........................................................... 21

    圖 3-5 MVC 程式設計架構 .................................................................................. 22

    圖 3-6 SaysApp 的介面設計 ................................................................................. 23

    圖 3-7 新建 AVD 的規格 ...................................................................................... 35

    圖 3-8 AVD 的桌面 ............................................................................................... 36

    圖 3-9 模擬地理位置的定位測詴 ......................................................................... 37

    圖 3-10 SaysApp 使用 Android 系統預設的圖示 ................................................. 38

    圖 3-11 SaysApp 啟動後的提示訊息 .................................................................... 39

    圖 3-12 輕觸 SAY 送出名稱和訊息 ..................................................................... 40

    圖 3-13 輕觸人形圖示會浮現使用者的名稱及訊息 ............................................ 41

    圖 3-14 使用控制器或兩指觸控縮放地圖 ........................................................... 42

    圖 3-15 查看其他使用者的訊息 ........................................................................... 43

    圖 3-16 橫向手持操作 SaysApp ........................................................................... 44

    圖 3-17 正確的使用步驟提示 ............................................................................... 44

  • vii

    圖 4-1 在 Web 及 App 上手動設定地理位置 ....................................................... 45

    圖 4-2 主動 Check In 附近地標 ............................................................................ 46

    圖 4-3 Google Places 地方資訊服務 ..................................................................... 47

    圖 4-4 Check In 新增討論串 ................................................................................. 48

  • viii

    表 目 錄

    表 2-1 OHA 重要成員 ............................................................................................. 5

    表 2-2 IDC 發表的 2011 年市占率統計及 2015 年市占率預測 ............................. 6

    表 2-3 Android 版本編號、代號及 API 等級 ......................................................... 7

    表 2-4 Google Maps for mobile 支援功能 ............................................................. 10

    表 2-5 Google Latitude 支援功能 .......................................................................... 12

    表 2-6 Facebook 用戶數達 7.5 億 ......................................................................... 12

    表 3-1 contacts 資料表的 5 個欄位 ....................................................................... 15

    表 3-2 開發工具安裝順序 .................................................................................... 20

    表 3-3 六組模擬地理位置的經緯度 ..................................................................... 37

  • 1

    第一章 緒論

    1.1. 研究背景

    「通訊」是一門研究範圍相當廣泛的科學與技術,它的理論與應用也一直

    令世人感到目不暇給。從十九世紀中,簡潔而完美的 Maxwell 方程式問世,到

    二十一世紀初,「雲端」技術顧名思義已經如影隨形出現在你我的日常生活當中

    [1][2];從十九世紀末,Alexander Graham Bell 撥通的史上第一台電話機,到二

    十世紀末人們隨身攜帶的手機;從接收類比廣播訊號,林立在城市天空線的天

    線,到 2012 年 7 月我國全面邁入數位電視時代[3],安裝在家家戶戶電視上的

    數位電視盒;從只能顯示純文字的電子佈告欄系統 BBS(Bulletin Board System),

    到如同網際網路(Internet)代名詞的全球資訊網 WWW(World Wide Web);

    從使用數據機撥接上網,到使用手機行動上網;無數的對照與實例再再顯示了,

    通訊科技肯定還會持續不斷的改變人類的生活、經濟、文化等各層面。

    從「行動通訊」到「行動數據」,「功能手機」取而代之的是「智能手機」

    [4][5]。智能手機除了可以上網之外,最重要的差異是,使用者可以依照所使用

    的作業系統,安裝應用程式 App,使得智能手機不僅可以用來撥打電話、發送

    簡訊、瀏覽網頁,還有了豐富多樣的功能和創意應用等擴充性。手機作業系統

    業者也各自創建了 App 的服務網站,是一個讓使用者可自行免費或付費下載

    App 的軟體商店,如 Apple 的 App Store 及 Android 的 Android Market[6],也是

    一個讓軟體開發者可以發表 App 作品的發佈帄台。App 的開發帄台已經成為世

    界各地許多程式設計者或初學者,較勁創意和實現夢想的新舞台。除此之外,

    許多嶄新的網路服務,以智能手機及帄板電腦等行動裝置上的 App 為一個進入

  • 2

    點,而這些即時性、適地性(Location-Based)的行動資訊服務,也使現代人的

    生活更為便利。

    1.2. 研究目的

    目前許多的社交網路服務(Social Networking Service)[7],已經結合基於

    地理位置的資訊服務(Location-Based Service)[8][9][10],例如 Google Latitude

    和 Facebook Places,透過這樣的應用,我們可以很容易得知家人、朋友等關係

    人的動態。然而,有時候我們需要的是「附近」的即時資訊,而非「朋友」的

    動態。為了解決這個問題,我們設計一個能和「附近」的「不認識的使用者」

    交換訊息的 App。

    1.3. 論文架構

    本論文題目為「發展一個基於地理位置的 Android 應用程式 SaysApp」,共

    有五個章節。第一章為緒論,說明我的研究背景、研究目的和論文架構。第二

    章為行動資訊服務發展趨勢,介紹 Google Android、Google Maps、Location-Based

    Service 這些相關背景。第三章為 SaysApp 的設計與實現,從系統架構、程式編

    寫到模擬驗證,將我的設計理念與實現方法做詳細的記錄與解說。第四章為綜

    合分析比較,從七個向度分析 SaysApp 與 Google Latitude 和 Facebook Places。

    第五章為結論,總結研究貢獻並期許未來發展。

  • 3

    第二章 行動資訊服務發展趨勢

    行動上網是許多現代人生活中不可或缺的一部份,資訊服務已經從網站走

    向雲端。本章將介紹引領行動資訊服務的重要角色,Google Android 行動帄台

    和 Google Maps 雲端服務,以及 Location-Based Services 的最新發展趨勢。

    2.1. Google Android 行動帄台

    Android 是 Google 開發的行動帄台,開放源碼的作業系統、完整的軟體開

    發工具 SDK(Software Development Kit)、龐大的 Google 服務 API(Application

    Programming Interface),及應用程式發佈帄台,創造了開放式的行動通訊使用

    者經驗。

    2.1.1. Google

    Google 公司於 1998 年成立之初,是一間提供網際網路搜尋服務的網路公

    司。歷經 2000 年的網路公司泡沫化(Dot-com bubble)[11],於 2004 年在美國

    上市公開發行股票。圖 2-1 及圖 2-2 分別為最初與最新的 Google 首頁畫面,雖

    然前後看起來變化並不大,似乎只是簡潔了一點,但目前 Google 首頁所運用到

    的 HTML5 技術[12],以及登入後所整合的雲端化的行動資訊及社群服務,讓

    Google 從昔日身為搜尋的同義詞,到今日成為創新(Innovation)與開放

    (Openness)的代名詞[13]。

  • 4

    圖 2-1 Google 1997

    圖 2-2 Google 2011

  • 5

    2.1.2. Android

    2005 年 7 月,Google 併購了一家位於加州,成立才 22 個月的小公司,名

    為 Android,不僅開發手機專用軟體,還開始致力於手機作業系統的研發。2007

    年 11 月,Google 發表了以 Linux 為核心的行動裝置作業系統,開放原始碼(open

    source),並促成開放手機聯盟 OHA(Open Handset Alliance)的成立。OHA 是

    一個商業聯盟,目的為共同制定 Android 行動裝置標準,與其他例如:iOS

    (Apple)、Symbian OS(Nokia)、BlackBerry(RIM)、Windows Mobile OS

    (Microsoft)、Palm OS(Palm)等行動裝置作業系統競爭,目前有超過 80 位

    成員[14],部分重要成員如表 2-1 所列。

    表 2-1 OHA 重要成員

    成員種類 成員名稱

    手機製造商

    Handset Manufacturers

    HTC、Acer、Motorola

    、LG、Samsung

    電信營運商

    Mobile Operators

    T-Mobile、NTT DoCoMo

    、中國移動

    軟體開發商

    Software Companies

    Google、eBay

    、Ascender

    半導體製造商

    Semiconductor Companies

    Intel、Nvidia

    、Texas Instruments

    商品化公司

    Commercialization Companies

    Aplix、Borqs

    、L&T Infotech

  • 6

    由於 Android 行動帄台免費、開放的原始碼[15][16],以及 Google 服務家

    族龐大的API(Application Programming Interface)支援,許多大廠開始以Android

    行動裝置為主要的產品。採用 Android 作業系統,不僅能降低生產的成本,還

    能提供更開放式的行動通訊使用者經驗[17]。短短不到四年的時間,Google

    Android的加入,徹底改變各家手機大廠的市場版圖。表2-2為國際數據資訊 IDC

    (International Data Corporation)於2011年6月9日發表的一份研究報告中[18],

    2011 年市占率統計及 2015 年市占率預測之對照表。

    表 2-2 IDC 發表的 2011 年市占率統計及 2015 年市占率預測

    Operating System 2011 Market Share 2015 Market Share

    Android 38.90% 43.80%

    BlackBerry OS 14.20% 13.40%

    Symbian 20.60% 0.10%

    iOS 18.20% 16.90%

    Windows Phone 7/Windows Mobile 3.80% 20.30%

    Others 4.30% 5.50%

    Total 100.00% 100.00%

    由此可知,Android 的確是現今成長最快速的行動帄台,截至 2011 年 5 月,

    第一億個 Android 行動裝置啟用了[19],且目前正以每天超過 50 萬部的速度增

    加[20]。

    另外,拜 Google 強大的研發能量所賜,Android 行動帄台的版本更新也是

    十分迅速,表 2-3 所列為版本編號、代號及 API 等級[21]。

  • 7

    表 2-3 Android 版本編號、代號及 API 等級

    Platform Version VERSION_CODE API Level

    Android 3.2 HONEYCOMB_MR2 13

    Android 3.1.x HONEYCOMB_MR1 12

    Android 3.0.x HONEYCOMB 11

    Android 2.3.3~2.3.4 GINGERBREAD_MR1 10

    Android 2.3~2.3.2 GINGERBREAD 9

    Android 2.2.x FROYO 8

    Android 2.1.x ECLAIR_MR1 7

    Android 2.0.1 ECLAIR_0_1 6

    Android 2.0 ECLAIR 5

    Android 1.6 DONUT 4

    Android 1.5 CUPCAKE 3

    Android 1.1 BASE_1_1 2

    Android 1.0 BASE 1

  • 8

    2.2. Google Maps 雲端服務

    Google Maps 服務從以 Web 瀏覽為主,發展為由各行動帄台的 App 取得的

    模式。2011 年 6 月,App 所貢獻的地圖使用量,已經超越 Web 所貢獻的地圖使

    用量。

    2.2.1. Web

    Google Maps 是 Google 提供的地圖搜尋服務,與電子郵件服務 Gmail、影

    片分享服務 YouTube、社交圈服務 Plus,為 Google 成員中最熱門的數個項目。

    結合地圖、衛星圖與街景圖,Google Maps 創造了全新的地圖搜尋體驗。除了

    可以讓我們輕輕鬆鬆就找到全世界的地圖資料,還可以從空中鳥瞰地面,或置

    身街道環顧四週景象。如圖 2-3 及圖 2-4 所示。

    圖 2-3 臺北市信義區衛星圖

  • 9

    圖 2-4 臺師大圖書館街景圖

    除了提供不同模式的選擇,Google Maps 還可以偵測使用者的實際地理位

    置,設為初始地圖的中心點,以方便使用者開始一個搜尋動作,或者幫助迷路

    的使用者找出自己的地理位置及附近的設施。使用 Google 自家的 Chrome 瀏覽

    器開啟 Google Maps 網站,會在地圖的縮放控制器上方出現一個圓點,按下圓

    點然後按下允許,Google Maps 就會根據各種資訊來計算使用者的實際地理位

    置。對於不含無線網卡的桌上型電腦,IP(Internet Protocol)位址是唯一與地

    理位置有關的資訊,Google Maps 只能得知 IP 所屬單位的登記地址,因此無法

    有效定位。然而,對於內建無線網卡的筆記型電腦,Google Maps 可以根據筆

    記型電腦所提供的附近 AP(Access Point)資訊,在它所建立的 AP 地理位置資

    料庫中,得知使用者的粗略地理位置,為使用者提供定位功能。

  • 10

    2.2.2. App

    為了支援智能手機和帄板電腦兩大主要行動裝置, Google Maps 積極開發

    各家行動裝置作業系統適用的行動版 App,不同版本的 App 其功能也不盡相同

    [22],如表 2-4 所列。

    表 2-4 Google Maps for mobile 支援功能

    功能 Android BlackBerry iPhone Nokia Windows

    定位

    路況

    街景服務

    行車路線

    大眾運輸路線指引

    圖層

    2011 年 5 月,Google Maps for mobile(行動版 App)在全球的下載次數已

    跨越 2 億次。2011 年 6 月,行動版所貢獻的地圖使用量,將從此超越網站所貢

    獻的地圖使用量[23][24]。

    行動裝置的定位方式通常有三種,依照精確度的高低依序是 GPS 定位、無

    線區域網路 AP定位、行動網路基地台定位,其中以GPS定位方式最為耗電[25]。

    由於使用者隨身攜帶且具備定位能力的行動裝置的普及,結合 Google Maps 的

    地圖搜尋服務,衍生出許多基於地理位置的資訊服務(Location-Based Service)

    [26][27]。

  • 11

    2.3. Location-Based Services 實際應用

    本節將介紹兩個基於地理位置的資訊服務的實際應用,Google Latitude 和

    Facebook Places。

    2.3.1. Google Latitude

    Google Latitude 是 Google Maps for mobile 中包含的一個社交功能[28],用

    途是分享地理位置給朋友,開啟 Google Latitude 圖層,會看到朋友的圖示出現

    在地圖上,顯示朋友最後一次開啟 Latitude 的地理位置,如圖 2-5 所示。然而,

    在地圖上標示遠方的朋友,似乎沒有真正發揮 Location-Based 的適地性。

    圖 2-5 標示遠方的朋友

  • 12

    不同版本的Google Latitude提供不同等級的支援[29],如表2-5所列。Google

    Latitude 也可由網站進入,所以業務部門主管也可以在一般桌上型電腦的大尺

    寸螢幕上查看,業務員們在外的工作進度。

    表 2-5 Google Latitude 支援功能

    功能 Android BlackBerry iPhone Symbian Windows 電腦

    分享地理位置

    地點登記

    主螢幕小工具

    隱私權設定

    2.3.2. Facebook Places

    2010 年 3 月,Facebook 在美國的訪問人數竟首次超越 Google,成為全美

    存取量最大的網站。於 2004 年 2 月上線的 Facebook,現在是全球會員數最多

    的社群網站,歷年活躍用戶的統計如表 2-6[30]。

    表 2-6 Facebook 用戶數達 7.5 億

    年-月-日 用戶數(單位:億)

    2008-08-26 1

    2009-04-08 2

    2009-09-15 3

    2010-02-05 4

  • 13

    2010-07-21 5

    2011-01-05 6

    2011-07-06 7.5

    Facebook 於 2011 年初推出的 Places,利用行動裝置的定位能力,讓透過手

    機或帄板電腦登入 Facebook 的用戶,輕觸螢幕幾下就可以將自己的動態、地理

    位置以及所在地資訊分享給朋友,創造更多朋友間互動的話題。如圖 2-6 所示,

    為 Facebook for Android 的 App 的 Check In 按鈕配置。

    圖 2-6 Facebook for Android 的 App 的 Check In 按鈕配置

    如同 Google 首頁,Facebook 的介面也是力求簡潔,為一大優點。然而,

    朋友們的 Check-In 消息,卻是以一則一則的文字做為顯示方式,而沒有彙整標

    示在同一張地圖上,似乎有些可惜。

  • 14

    第三章 SaysApp 的設計與實現

    第二章最後介紹了兩個基於地理位置的資訊服務的實際應用,及其優缺點。

    本章將設計與實現一個 Android 行動裝置的 App,名為 SaysApp。使用者利用

    SaysApp 送出一個發言(Say),交換其他使用者的發言(Says),這些 Says 會

    被標記在同一張地圖上,並以一個簡單、直覺的操作介面,讓使用者接收和傳

    送訊息。SaysApp 讓使用者取得的是「附近」的資訊,而非「朋友」的動態。

    3.1. 系統架構

    基於行動裝置的定位功能,和 Google Maps 的地圖資訊,我們為 SaysApp

    實現一個主從式架構的系統[31],伺服器端為一個資料庫[32],客戶端為一個

    Android App。

    圖 3-1 SaysApp 的系統架構

  • 15

    3.2. 伺服器端

    以 MySQL 實現資料庫、Apache 實現 Web 伺服器、PHP 網頁實現資料庫存

    取程式。上 www.appservnetwork.com 下載 AppServ 2.5.9 套件包來安裝,安裝

    成功後,MySQL 中已經有一個名為 test 的空資料庫。準備建立一個名為 contacts

    的資料表,包含 5 個欄位,如表 3-1 所列。

    表 3-1 contacts 資料表的 5 個欄位

    欄位名稱 資料型態 資料長度 用途

    id int 5 每一筆資料的編號

    name varchar 16 使用者輸入的名稱

    message varchar 40 使用者輸入的訊息

    longitude int 11 使用者地理位置的經度

    latitude int 11 使用者地理位置的緯度

    撰寫一個 CREATETABLE.PHP 網頁來建立 contacts 資料表,其 PHP 程式

    碼如下:

    1

  • 16

    7 $query="CREATE TABLE contacts (

    8 id int(5) NOT NULL auto_increment,

    9 name varchar(16) NOT NULL,

    10 message varchar(40) NOT NULL,

    11 longitude int(11) NOT NULL,

    12 latitude int(11) NOT NULL,

    13 PRIMARY KEY (id),UNIQUE id (id),KEY id_2 (id))";

    14 mysql_query($query);

    15 mysql_close();

    16 ?>

    第 2 行到第 6 行,使用帳號、密碼連上 MySQL 的 test 資料庫。第 7 行到

    第 14 行,建立 SaysApp 系統所需的 contacts 資料表,第 15 行,關閉與資料庫

    的連線。

    撰寫一個 POST.PHP網頁,做為客戶端App存取伺服器端 MySQL的介面,

    其 PHP 程式碼如下:

    1

  • 17

    7 $name=$_POST['name'];

    8 $message=$_POST['message'];

    9 $longitude=$_POST['longitude'];

    10 $latitude=$_POST['latitude'];

    11 $query = "INSERT INTO contacts VALUES

    ('','$name','$message','$longitude','$latitude')";

    12 mysql_query($query);

    13 $query="SELECT * FROM contacts";

    14 $result=mysql_query($query);

    15 $num=mysql_numrows($result);

    16 for ($i=0;$i

  • 18

    第 2 行到第 6 行,使用帳號、密碼連上 MySQL 的 test 資料庫。第 7 行到

    第 12 行,允許客戶端使用 POST 方法,將使用者的名稱、訊息、經度、緯度插

    入 contacts 資料表。第 13 行到第 26 行,將 contacts 資料表的查詢結果,用 for

    迴圈一筆一筆全數輸出,並以一個反斜線 n(\n)換行字元做為間隔。第 27 行,

    關閉與資料庫的連線。

    將 CREATETABLE.PHP 和 POST.PHP 放在 www 目錄下,用瀏覽器開啟

    CREATETABLE.PHP,此時伺服器端就大致完成了。

    3.3. 使用者端

    本節將介紹Android的App開發環境,並研究SaysApp的介面及程式設計。

    3.3.1. Android App 開發環境

    Android 行動裝置作業系統是以 Linux 作業系統核心(Linux Kernel)為基

    礎,擴充 Android 執行作業環境(Android Runtime)和程式庫(Libraries),及

    應用程式框架(Application Framework),內建數個基本的應用程式,如桌面

    (Home)、電話簿(Contacts)、電話(Phone)、瀏覽器(Browser)等。整體

    Android 行動帄台架構如圖 3-2[33]。

  • 19

    圖 3-2 Android 行動帄台架構

    Android 應用程式(App)是採用 Java 語言編寫的,Android 作業系統採用

    Dalvik VM(Virtual Machine)代替 Java VM,因此,熟悉 Java SE(Standard Edition)

    開發環境的開發人員可以很快接手開發 Android App。Android App 產生的流程

    如圖 3-3[34][35]。

  • 20

    圖 3-3 Android App 產生的流程

    先要下載並安裝數個開發工具,以建立 Android App 的開發環境,安裝的

    順序如表 3-2 所列。

    表 3-2 開發工具安裝順序

    順序 開發工具名稱 版本(來源網站)

    1 Java Development Kit Java SE 6 Update 26

    (java.sun.com)

    2 Eclipse Integrated

    Development Environment

    Eclipse IDE for Java Developers

    (eclipse.org)

    http://java.sun.com/http://eclipse.org/

  • 21

    3 Android Development Tools ADT 12.0.0

    (developer.android.com/sdk/eclipse-adt.html)

    4 Android SDK Tools SDK Tools, Revision 12

    (developer.android.com/sdk)

    然後開啟 Eclipse IDE,啟動 Android SDK and AVD Manager,下載安裝所

    需的 SDK Components,包含 Samples、Platforms、Platform-tools、Add-ons、

    Documentation、Compatibility package 等,如圖 3-4 所示。

    圖 3-4 下載安裝所需的 SDK Components

    http://developer.android.com/sdk/eclipse-adt.htmlhttp://developer.android.com/sdk

  • 22

    至此 Android App 的開發環境就安裝完成了,但由於所要實現的 App 需要

    索取 Google 地圖資料,所以還要向 Google 申請一個 Google 地圖的 API 金鑰字

    串,在 code.google.com/intl/zh-TW/android/maps-api-signup.html。

    接下來就可以開始設計 SaysApp 了。

    3.3.2. SaysApp 的介面設計

    採用 MVC(Model-View-Controller)程式設計架構[36],Android App 的介

    面設計是另外使用 XML(eXtensible Markup Language)編寫,與程式主體的 Java

    分開,如圖 3-5 所示。

    圖 3-5 MVC 程式設計架構

    SaysApp 設計以一張地圖、一個按鈕、兩個文字輸入框,實現一個簡單、

    直覺的使用者介面(UI),如圖 3-6 所示。

    http://code.google.com/intl/zh-TW/android/maps-api-signup.html

  • 23

    圖 3-6 SaysApp 的介面設計

    其 XML 程式碼如下:

  • 24

    當中 apiKey 所設定的字串就是之前申請來的 Google 地圖 API 金鑰。

    介面中所要呈現的文字,我們也用一個 XML 將這些字串抽離程式主體,

    以方便日後的修改與維護,以及改良支援多國語言。其 XML 程式碼如下:

    SaysApp

    1. Input a NAME and a MESSAGE\n2. Tap

    SAY

    How to see the Says?

    Say something FIRST!

  • 25

    3.3.3. SaysApp 的程式設計

    SaysApp 會用到的 Class 和 Interface,在 Java 程式碼的最前面用 import 宣

    告如下:

    import java.io.IOException;

    import java.util.ArrayList;

    import java.util.List;

    import org.apache.http.HttpResponse;

    import org.apache.http.NameValuePair;

    import org.apache.http.client.ClientProtocolException;

    import org.apache.http.client.HttpClient;

    import org.apache.http.client.entity.UrlEncodedFormEntity;

    import org.apache.http.client.methods.HttpPost;

    import org.apache.http.impl.client.DefaultHttpClient;

    import org.apache.http.message.BasicNameValuePair;

    import org.apache.http.util.EntityUtils;

    import android.graphics.drawable.Drawable;

    import android.os.Bundle;

    import android.view.View;

    import android.view.View.OnClickListener;

    import android.widget.Button;

    import android.widget.EditText;

    import android.widget.Toast;

    import com.google.android.maps.GeoPoint;

  • 26

    import com.google.android.maps.ItemizedOverlay;

    import com.google.android.maps.MapActivity;

    import com.google.android.maps.MapController;

    import com.google.android.maps.MapView;

    import com.google.android.maps.MyLocationOverlay;

    import com.google.android.maps.OverlayItem;

    宣告 SaysApp 程式繼承 MapActivity 類別,再在程式中宣告發言按鈕、名

    稱輸入框、訊息輸入框、地圖、地圖控制器、自己地理位置的圖層、標記資訊

    的圖層、字串陣列等物件。

    public class SaysApp extends MapActivity {

    private Button sayButton;

    private EditText nameET;

    private EditText messageET;

    private MapView mView;

    private MapController mControl;

    private MyLocationOverlay mlOverlay;

    private MarkerOverlay saysoverlay;

    private String[] stringArray;

  • 27

    當 SaysApp 程式開始執行的時候,先要設定程式所使用的 ContentView(介

    面),然後用 findViews()方法設定介面中的元件與程式中的物件的對應,最後

    用 initMapView()方法起始地圖。

    public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    findViews();

    initMapView();

    定義 findViews()方法:設定介面中的 4 個元件與程式中的 4 個物件的對

    應。

    private void findViews() {

    sayButton = (Button) findViewById(R.id.sayButton);

    nameET = (EditText) findViewById(R.id.nameET);

    messageET = (EditText) findViewById(R.id.messageET);

    mView = (MapView) findViewById(R.id.mView);

    }

  • 28

    定義 initMapView()方法:設定內建縮放控制器,設定初始縮放等級為 19

    (最大為 21),以自己的地理位置為地圖的中心,將自己地理位置的圖層

    mlOverlay(一個藍點)疊在 Google Maps 之上。

    private void initMapView() {

    mView.setBuiltInZoomControls(true);

    mControl = mView.getController();

    mlOverlay = new MyLocationOverlay(this, mView);

    mlOverlay.runOnFirstFix(new Runnable() {

    public void run() {

    mControl.setZoom(19);

    mControl.animateTo(mlOverlay.getMyLocation());

    }

    });

    mView.getOverlays().add(mlOverlay);

    }

    顯示提示訊息:引導使用者先送出一個發言,就可以在地圖上看到附近的

    使用者的發言。

    Toast.makeText(SaysApp.this, getString(R.string.howto1),

    Toast.LENGTH_LONG).show();

    Toast.makeText(SaysApp.this, getString(R.string.howto2),

    Toast.LENGTH_LONG).show();

  • 29

    設定發言按鈕:當按鈕被按下,首先檢查名稱輸入框及訊息輸入框,是否

    未被輸入或含有換行字元,若無錯誤輸入,則開始執行 sync()方法同步資料,

    及 mark()方法標記資訊。

    sayButton.setOnClickListener(new OnClickListener() {

    @Override

    public void onClick(View v) {

    String name = nameET.getText().toString().trim();

    String message = messageET.getText().toString().trim();

    if (name.contains("\n") || message.contains("\n")

    || name.equals("") || message.equals("")

    || name.equals("You")

    || message.equals("Say something!")) {

    Toast.makeText(SaysApp.this, getString(R.string.suggestion),

    Toast.LENGTH_LONG).show();

    return;

    }

    sync();

    mark();

    }

    });

  • 30

    定義 sync()方法:開啟伺服器上的 POST.PHP 以存取資料庫,先將使用者

    的名稱 name、訊息 message、經度 longitude、緯度 latitude 插入 contacts 資料表。

    再將網頁回應的字串,即 contacts 資料表的查詢結果,用換行字元做為分割依

    據,存入字串陣列 stringArray。

    private void sync() {

    HttpClient httpclient = new DefaultHttpClient();

    HttpPost httppost = new HttpPost("http://11.22.33.44/POST.PHP");

    try {

    List nameValuePairs = new

    ArrayList(4);

    nameValuePairs.add(new BasicNameValuePair("name",

    nameET.getText().toString().trim()));

    nameValuePairs.add(new BasicNameValuePair("message",

    messageET.getText().toString().trim()));

    nameValuePairs.add(new BasicNameValuePair("longitude", String

    .valueOf(mlOverlay.getMyLocation().getLongitudeE6())));

    nameValuePairs.add(new BasicNameValuePair("latitude", String

    .valueOf(mlOverlay.getMyLocation().getLatitudeE6())));

    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

    HttpResponse httpresponse = httpclient.execute(httppost);

    String httpresponseString = EntityUtils.toString(httpresponse

    .getEntity());

    stringArray = httpresponseString.split("\n");

  • 31

    } catch (ClientProtocolException e) {

    } catch (IOException e) {

    }

    }

    定義 mark()方法:使用 Android 作業系統內建的人形圖示來標示資訊,將

    標記資訊的圖層 saysoverlay 疊在 Google Maps 之上。

    private void mark() {

    Drawable marker = getResources().getDrawable(

    android.R.drawable.ic_menu_myplaces);

    saysoverlay = new MarkerOverlay(marker);

    mView.getOverlays().add(saysoverlay);

    }

    宣告標記資訊的圖層類別:宣告標記資訊的圖層 saysoverlay 的類別

    MarkerOverlay 繼承 ItemizedOverlay類別,使用迴圈將字串陣列

    stringArray 內的資訊一一填入標記資訊的對應欄位,最後設定當使用者觸碰資

    訊所在的地理位置時,浮現出該資訊內的名稱及訊息。

    private class MarkerOverlay extends ItemizedOverlay {

    private List olItems = new ArrayList();

    public MarkerOverlay(Drawable defaultMarker) {

    super(boundCenterBottom(defaultMarker));

    int saysIndex = 0;

  • 32

    do {

    GeoPoint geopoint = new GeoPoint(

    Integer.valueOf(stringArray[saysIndex + 4]),

    Integer.valueOf(stringArray[saysIndex + 3]));

    olItems.add(new OverlayItem(geopoint,

    stringArray[saysIndex+ 1], stringArray[saysIndex + 2]));

    saysIndex = saysIndex + 5;

    } while (saysIndex < stringArray.length);

    populate();

    }

    @Override

    protected OverlayItem createItem(int i) {

    return olItems.get(i);

    }

    @Override

    public int size() {

    return olItems.size();

    }

    @Override

    protected boolean onTap(int index) {

    Toast.makeText(

    SaysApp.this,

    olItems.get(index).getTitle() + "\nsays\n"

    + olItems.get(index).getSnippet(),

    Toast.LENGTH_LONG).show();

  • 33

    return true;

    }

    }

    在 Java 程式碼的最後面,設定 SaysApp 當暫停及回復時,停用及啟用定位

    功能。以及設定位移路徑不顯示。

    @Override

    protected void onResume() {

    super.onResume();

    mlOverlay.enableMyLocation();

    }

    @Override

    protected void onPause() {

    super.onPause();

    mlOverlay.disableMyLocation();

    }

    @Override

    protected boolean isRouteDisplayed() {

    return false;

    }

  • 34

    SaysApp 的 Java 程式碼如以上所述。另外,在 AndroidManifest.XML 權限

    清單中,要加入以下權限設定,才能使用 GPS 定位、AP 或基地台定位、模擬

    器定位、網路連線、Google Maps。

  • 35

    3.4. 模擬驗證

    本節我們將使用開發環境內建的虛擬裝置進行模擬,以及使用 Android 行

    動裝置實機進行驗證。

    3.4.1. 使用虛擬裝置模擬

    我們在 Android SDK(Software Development Kit)內新建一個虛擬裝置 AVD

    (Android Virtual Device),規格如圖 3-7 所示。

    圖 3-7 新建 AVD 的規格

    AVD 啟動之後,首先會進入 Android 作業系統的桌面(Home),如圖 3-8

    所示。

  • 36

    圖 3-8 AVD 的桌面

    以滑鼠點擊底下中間的圖示會進入排列出所有應用程式(App)的選單畫

    面,底下左邊的 App 是電話(Phone)、底下右邊的 App 是瀏覽器(Browser),

    桌面共有五個區域。

    使用 AVD 於電腦上模擬,無法實際做觸控的測詴,但可以用控制工具送

    出模擬地理位置的經緯度,來測詴定位功能是否能運作正常。以表 3-3 所列六

    組經緯度進行模擬測詴。

  • 37

    表 3-3 六組模擬地理位置的經緯度

    模擬地理位置 經度 緯度

    1 121.5290 25.0270

    2 121.5292 25.0271

    3 121.5294 25.0272

    4 121.5296 25.0273

    5 121.5298 25.0274

    6 121.5300 25.0275

    可以看到六個人形圖標在地圖上,如同六組線性分布的座標,六個人形圖

    標在地圖上呈現一直線,如圖 3-9 所示。

    圖 3-9 模擬地理位置的定位測詴

  • 38

    3.4.2. 使用實機驗證

    使用 Android 手機進行驗證,測詴定位功能、觸控功能,以及 SaysApp 能

    否逐一正確標記及顯示伺服器端的資料庫上的資訊。

    在全部應用程式的選單中可以看到 SaysApp,使用 Android 系統預設的 App

    圖示,如圖 3-10 所示。

    圖 3-10 SaysApp 使用 Android 系統預設的圖示

  • 39

    輕觸 SaysApp 啟動程式後,畫面下方會立即浮現提示訊息,提示使用者先

    送出一個發言,就可以在地圖上看到附近的使用者的發言。提示訊息如圖 3-11

    所示。

    圖 3-11 SaysApp 啟動後的提示訊息

  • 40

    藍點為自己的地理位置,淡藍的圓圈為可能的誤差範圍。修改名稱輸入框

    和訊息輸入框內預設的提示文字,輕觸 SAY 按鈕,就會送出修改過的名稱和訊

    息,並與自己地理位置的經緯度一起寫入伺服器上的資料庫。

    圖 3-12 輕觸 SAY 送出名稱和訊息

  • 41

    送出訊息後,會取得資料庫上的所有資訊,使得標記資訊的圖層內的資訊

    與資料庫內的資訊同步。人形圖示標示資訊的地理位置,輕觸人形圖示會浮現

    使用者的名稱及訊息。

    圖 3-13 輕觸人形圖示會浮現使用者的名稱及訊息

  • 42

    輕觸地圖任一處,內建的縮放控制器會出現,可以使用縮放控制器或者使

    用兩指觸控,將地圖縮小以擴大地圖顯示範圍。可以看到先前使用 AVD 模擬

    測詴的資訊。

    圖 3-14 使用控制器或兩指觸控縮放地圖

  • 43

    再次放大地圖,輕觸最右邊的人形圖示(先前的模擬地理位置 6),可以看

    到當時輸入的資訊。

    圖 3-15 查看其他使用者的訊息

  • 44

    改以橫向手持,一樣可以操作 SaysApp。

    圖 3-16 橫向手持操作 SaysApp

    若有錯誤輸入時,如使用預設文字或者換行,會出現正確的使用步驟提示

    使用者。

    圖 3-17 正確的使用步驟提示

  • 45

    第四章 綜合分析比較

    本章就我們目前所設計與實現的 SaysApp,與 Google Latitude 和 Facebook

    Places,依下列七個向度,進行綜合分析比較。

    4.1. 功能適地性

    Google Latitude 的使用者可以選擇自動偵測或手動設定地理位置,所以在

    地圖上呈現的未必是使用者真實所在的地理位置,在 Web 及 App 上手動設定

    地理位置的畫面,如圖 4-1 所示。

    圖 4-1 在 Web 及 App 上手動設定地理位置

  • 46

    Facebook Places 的使用者必頇主動 Check In 附近任何一個在實際定位得到

    的地理位置特定範圍之內的地標,如圖 4-2 所示。

    圖 4-2 主動 Check In 附近地標

    SaysApp 不採用使用者可以手動設定地理位置、或者主動 Check In 附近地

    標的模式,是以定位所得的經緯度座標,將使用者的地理位置真實呈現在地圖

    上。

    4.2. 功能即時性

    Google Latitude 的使用者可以設定為自動偵測並更新地理位置,讓朋友可

    以在 Google Latitude 地圖上看到使用者最近一次使用 Latitude 的地理位置,如

    圖 4-1 所示。

  • 47

    Facebook Places 的使用者必頇主動 Check In 附近的地標之後,才能將自己

    的約略地理位置分享給朋友,如圖 4-2 所示。

    SaysApp資料庫目前設定為資料保留半小時,確保使用者每次使用 SaysApp

    看到的 Says 皆是半小時內的訊息。

    4.3. 功能實用性

    Google Latitude 由於是 Google Maps 服務中的一環,具備龐大的地方資訊

    資料庫可供搜尋,如圖 4-3 所示。

    圖 4-3 Google Places 地方資訊服務

  • 48

    Facebook Places 的使用者 Check In 附近地標會新增一個討論串,藉此與朋

    友分享自己的生活,本質上是社群用途。

    圖 4-4 Check In 新增討論串

    SaysApp的使用者可以對附近發送訊息,由於所有的發言皆是廣播性質的,

    可以建立溝通管道,也可能會接收到許多不重要的 Says。

    4.4. 功能多樣性

    Google Latitude 將使用者自己以及朋友的個人檔案照片標示在地圖上,沒

    有發送訊息的功能,但可以輕易開啟 Google Maps 的其它功能,。

    Facebook Places 提供使用者多樣的服務,分享使用者的所在地理位置附近

    地標、活動照片、文字敘述及超連結等等。

  • 49

    SaysApp 目前並無提供其它功能的選單,只能廣播和接收訊息。

    4.5. 介面友善度

    Google Latitude 是以一張地圖及標示於地圖上的人像圖示為介面,直覺式

    的設計讓資訊一目瞭然,使用上就如同使用 Google Maps 一樣簡單。

    Facebook Places 的內容並非以地圖呈現,而是以討論串的形式,提供較豐

    富的資訊,遵循創辦人 Mark Zuckerberg 的極簡主義[37],用極為簡單清楚的介

    面呈現大量文字、影像、超連結等。

    SaysApp 是以一張地圖、一個按鈕、兩個文字輸入框的設計實現一個

    User-Friendly 的使用者介面,並具有錯誤輸入檢查及提示文字回應,使用上相

    當簡單易懂。

    4.6. 資料安全性

    Google 和 Facebook 的隱私權問題一直是其資訊及社群服務使用者的一大

    疑慮,由於帳號資料中記錄了使用者一切的網路活動,以及網路之外的真實生

    活的行為,Google 和 Facebook 在提供客製化的雲端服務的同時,卻也很容易

    就有侵犯或洩漏個人資料及隱私的問題。

  • 50

    SaysApp 目前的設計是採用安裝即可使用的方式,沒有帳號的管理機制,

    也沒有侵犯隱私權的疑慮。

    4.7. 系統穩定度

    Google 和 Facebook 運用最頂尖的軟硬體及網路技術,每天數十億的使用

    人次驗證,系統穩定度不在話下。

    SaysApp 使用一個開放源碼的 MySQL 資料庫,容易受到駭客及病毒威脅

    [38][39][40],系統穩定度有待考驗。

  • 51

    第五章 結論

    5.1. 研究貢獻

    我們發展了一個基於地理位置的 Android 行動即時資訊服務應用程式,名

    為 SaysApp。參考 Google Latitude 和 Facebook Places 的優缺點,設計了一個使

    用介面簡單,並以「附近」訊息為訴求的 Android App。經過實機驗證,確實能

    達到操作簡單及即時交換訊息的目的。

    5.2. 未來發展

    隨著越來越多類型的感應器與功能加入行動裝置成為基本配備,如加速度

    感應器(Accelerometer)、陀螺儀(Gyroscope)、電子羅盤(compass)、全球定

    位系统(GPS)…等等,以及行動裝置對影像和聲音的處理能力不斷的提升,

    結合雲端化的網路服務,越來越多創新的應用還會不斷的進入我們的生活。

    希望 SaysApp 的發展工作可以繼續延伸,進而符應更多使用者的需求,發

    展更多元、更創新的服務與應用,成為一個結合擴增實境技術[41]的基於地理

    位置的資訊及社群服務[42]。

  • 52

    參考文獻

    [1] Shuai Zhang, Shufen Zhang, Xuebin Chen, Xiuzhen Huo, Cloud Computing

    Research and Development Trend, 2010.

    [2] http://en.wikipedia.org/wiki/Cloud_computing

    [3] 蔡志宏、謝穎青、蔡念中、陳信宏、周韻采、李秀珠、李淳,「我國數位電

    視服務市場及未來需求研析」,民 99。

    [4] http://en.wikipedia.org/wiki/Feature_phone

    [5] http://en.wikipedia.org/wiki/Smartphone

    [6] http://www.apple.com/iphone/apps-for-iphone/

    http://market.android.com

    [7] http://en.wikipedia.org/wiki/Social_networking_service

    [8] http://en.wikipedia.org/wiki/Location-based_service

    [9] Xianhua Shu, Zhenjun Du, Rong Chen, "Research on Mobile Location Service

    Design Based on Android," Wireless Communications, Networking and Mobile

    Computing, 2009.

    [10] Kumar S., Qadeer M.A., Gupta A., "Location based services using android

    (LBSOID)," Internet Multimedia Services Architecture and Applications

    (IMSAA), 2009.

    [11] http://en.wikipedia.org/wiki/Dot-com_bubble

    [12] http://www.google.com/logos/2011/lespaul.html

    [13] http://google.com/io

    [14] http://www.openhandsetalliance.com/oha_members.html

    [15] Paul Michael Kilgo, Android OS: A robust, free, open-source operating system

    for mobile devices, 2010.

  • 53

    [16] Benjamin Speckmann, The Android mobile platform, 2008.

    [17] 柯維新,「行動通訊運營商因應 Android 開放式帄台之發展策略探討」,國

    立政治大學,碩士論文,民 99。

    [18] http://www.idc.com/getdoc.jsp?containerId=prUS22871611

    [19] http://chinese.engadget.com/2011/05/10/google-reaches-100-millionth-android-

    activation-400-000-android/

    [20] http://chinese.engadget.com/2011/06/28/andy-rubin-50-android-active-a-day-gr

    owing-up/

    [21] http://developer.android.com/guide/appendix/api-levels.html

    [22] http://www.google.com/mobile/maps/

    [23] http://techcrunch.com/2011/05/25/google-maps-for-mobile-stats/

    [24] http://news.networkmagazine.com.tw/classification/web/2011/05/27/24639/

    [25] Ed Burnette, Hello, Android: Introducing Google’s Mobile Development

    Platform, 2nd, 2010.

    [26] Sandeep Kumar, Mohammed Abdul Qadeer, Archana Gupta, Location Based

    Services using Android, 2009.

    [27] 呂庭孙,「行動定位服務之智慧型即時旅遊資訊分享系統」,北台灣科學技

    術學院,碩士論文,民 99。

    [28] http://www.youtube.com/watch?v=Q-Oq-9enE-k

    [29] http://www.google.com/mobile/latitude/

    [30] http://en.wikipedia.org/wiki/Facebook

    [31] http://en.wikipedia.org/wiki/Client–server_model

    [32] 張毓軒,「在 Android 帄台上之 IEEE802.21 資訊伺服器的設計與實作」,國

    立雲林科技大學,碩士論文,民 99。

    [33] http://developer.android.com/guide/basics/what-is-android.html

  • 54

    [34] Hans Dulimarta, Jonathan Engelsma, “Developing Android Applications”, The

    Journal of Computing Sciences in Colleges, 2010.

    [35] Xianhua Shu, Zhenjun Du, Rong Chen, Research on Mobile Location Service

    Design Based on Android, 2009.

    [36] http://en.wikipedia.org/wiki/Model–view–controller

    [37] http://www.facebook.com/zuck

    [38] http://en.wikipedia.org/wiki/SQL_injection

    [39] Jesse Burns, Developing Secure Mobile Applications For Android, 2008.

    [40] Paolo Meroni, Elena Pagani, Gian Paolo Rossi, Lorenzo Valerio, An Oppor-

    tunistic Platform for Android-based Mobile Devices, 2010.

    [41] Freek Uijtdewilligen, A framework for location-based services using augmented

    reality on Google Android-- Train station navigation, 2010.

    [42] Nan Li, Guanling Chen, "Analysis of a Location-Based Social Network,"

    Computational Science and Engineering, 2009.