修 平 科 技 大 學ir.hust.edu.tw/bitstream/310993100/4325/1/android...修 平 科 技 大 學...

61
資訊網路技術系 行動健身記錄器 指導老師:張瑞淇 老師 製作成員: 陳昌佑 BN99118 羅宇廷 BN99051 許信毅 BN99063 翁宏銘 BN99083 李原豪 BN99113 中華民國 103 1

Transcript of 修 平 科 技 大 學ir.hust.edu.tw/bitstream/310993100/4325/1/android...修 平 科 技 大 學...

  • 修 平 科 技 大 學 資訊網路技術系

    行動健身記錄器

    指導老師:張瑞淇 老師

    製作成員:

    陳昌佑 BN99118

    羅宇廷 BN99051

    許信毅 BN99063

    翁宏銘 BN99083

    李原豪 BN99113

    中華民國 103 年 1 月

  • 行動健身記錄器

    指導老師:張瑞淇 老師

    製作成員:

    陳昌佑 BN99118

    羅宇廷 BN99051

    許信毅 BN99063

    翁宏銘 BN99083

    李原豪 BN99113

    指導老師:

    口試老師:

    中華民國 103 年 1 月

    II

  • 目錄

    摘要 .......................................................................................................... V

    專題進度表 ........................................................................................... VII

    第一章 動機與目的 ................................................................................. 1

    第二章 ANDROID 模塊與相關技術 ..................................................... 3

    2-1ANDROID 軟體堆疊 ............................................................................................. 3 2-2 作業系統層(LINUX KERNEL) .............................................................................. 4 2-3 系統函式庫(LIBRARIES) ...................................................................................... 4 2-4 ANDROID 運行環境(RUNTIME) .......................................................................... 5 2-5 應用程式層框架(APPLICATION FRAMEWORK) ................................................... 6 2-6 應用程式層(APPLICATIONS) ............................................................................... 7

    第三章 ANDROID 四大組件 ................................................................. 8

    3-1 活動(ACTIVITY) ................................................................................................... 8 3-2 服務(SERVICE) ..................................................................................................... 9 3-3 廣播接收器(BROADCAST RECEIVER) .................................................................. 9 3-4 內容提供器(CONTENT PROVIDER) ...................................................................... 9 3-5 應用程式的基本處理步驟 .............................................................................. 10

    第四章 系統分析與細部設計 ............................................................... 11

    4-1 應用程式架構 .................................................................................................. 12 4-2 ANDROID MANIFEST 定義檔 ............................................................................. 13 4-3 ANDROIDMANIFEST.XML .................................................................................... 14 4-4 在 JAVA 原始檔中使用字串變數 ................................................................. 15 4-5 XML 資源文件使用字串資源 ......................................................................... 16 4-6 支援多國語言 .................................................................................................. 17 4-7 圖檔資源目錄 DRAWABLE ............................................................................... 18 4-8 JAVA原始檔中使用圖檔名稱 ........................................................................ 19 4-9 XML文件中使用圖檔名稱 .............................................................................. 20 4-10 視窗佈局資源檔 - LAYOUT\MAIN.XML .............................................................. 21

    III

  • 4-11 JAVA中使用佈局檔案 .................................................................................. 22

    第五章 實作成果 ................................................................................... 23

    5-1健康管理程式(主畫面)................................................................................... 24 5-2 BMI執行畫面 .................................................................................................. 25 5-3飲食計算 .......................................................................................................... 26 5-4貼心小提醒 ...................................................................................................... 27 5-5資料庫查詢 ...................................................................................................... 28 5-5 GOOGLE MAP V2 ................................................................................................. 28 5-6取得憑證指紋 .................................................................................................. 30 5-7 GOOGLE APIS CONSOLE 管理介面 ....................................................................... 31 5-8 需要「憑證指紋」與「應用程式套件名稱」 .............................................. 32 5-9 產生 API 金鑰 ................................................................................................ 33 5-10 安裝 GOOGLE PLAY SERVICE .......................................................................... 34 5-11 將 GOOGLE-PLAY-SERVICES_LIB匯至專案 .......................................................... 35 5-12 建立 GOOGLE-PLAY-SERVICES_LIB 專案 ........................................................ 36 5-13 完成 GOOGLE-PLAY-SERVICES_LIB 專案 ........................................................ 37 5-14 專案要加入 GOOGLE-PLAY-SERVICES_LIB ............................................................ 38 5-15 將 API KEY加入 ANDROIDMANIFEST.XML ............................................................. 39 5-16計算距離公式 ................................................................................................ 40 5-17 消耗熱量公式 ............................................................................................... 45 5-18 距離計算程式碼 ........................................................................................... 46 5-19 熱量消耗程式碼 ........................................................................................... 47 5-20 運動路徑畫面 ............................................................................................... 48

    第 6 章 心得與結論 ............................................................................... 53

    參考文獻 ................................................................................................. 54

    IV

  • 摘要

    Android 是一個以 Linux為基礎的開放原始碼作業系統,主要用

    於行動設備,由 Google成立的 Open Handset Alliance(OHA,開放

    手持設備聯盟)持續領導與開發中。安卓已發佈的最新版本為 Android

    4.4.2。 Android系統最初由安迪 ·魯賓(Andy Rubin)開發製作,

    最初開發這個系統的目的是利用其創建一個能夠與 PC上網的「智慧

    型手機」生態圈。

    但是後來,智慧型手機市場開始快速成長,Android被改造為一

    款面向手機的作業系統。 說到 Android,一定得提一下 Google。這

    個創立於 1998年的美國公司,在科技公司來說雖然是新手,但在短

    短的幾年內卻成為微軟、Apple等公司的強敵。從搜尋技術的創新,

    到關鍵字廣告,以及現在的雲端運算;Google一直用新的思維與想

    法在運作。

    2005 年 Google併購了成立僅 22個月的 Android,並拉攏其他手

    機製造商、系統營運商等組成開放手機聯盟(Open Handset

    Alliance)。一開始 Android是基於 Linux的通用平台,不過在 2010

    V

    http://zh.wikipedia.org/wiki/%E5%AE%89%E8%BF%AA%C2%B7%E9%B2%81%E5%AE%BE

  • 年 2月,被 Linux除名,原因是 Android基於商業考量修改了一些東

    西,導致 Android的硬體驅動在 Linux上無法使用;從此,Android

    與 Linux的核心開發分道揚鑣。

    VI

  • 專題進度表

    專 題 題 目 行 動 健 身 記 錄 器

    年 2013

    月 3 4 5 6 7 8 9 10 11 12 1

    與老師討論

    相 關 資 料

    開始分配工

    尋找資料製

    作簡單初稿

    製作第一次

    報告 P P T

    報告後需修

    改 地 方

    期末製作第

    二 次 報 告

    P P T

    上網尋找更

    多相關資料

    重複測試檔

    案 與 製 作

    第三次製作

    P P T 報 告

    與老師討論

    修 改 地 方

    VII

  • 第一章 動機與目的

    在科技越來越發達之下,許多人們普遍都使用智慧型手機,加上

    現代人生活步調快速、生活繁瑣事物忙碌,對於最新資訊的需求相當

    大,需要快速又方便的獲得方式,因此幾乎不離身的智慧型手機就能

    來解決這項問題。現在手機功能當中雖然相當發達,由於人對於功能

    的需求和使用方式,呈現出相當的依賴,其功能還有許多可以改進或

    增加的空間。像是如果想要減肥的人,卻不知道自己是否太胖還是太

    瘦該不該減肥,當還在煩惱這個問題的時候,我們的行動健身記錄器

    就派上用場了,對於這件事情只要有一台簡單的輕便型智慧型手機把

    我們程式灌入手機內,就可以隨時隨地知道自己的 BMI。我們把

    Android系統開發程式來與生活周遭某些事物結合在一起來提升生活

    上的便利性,這才是我們想要的動機與目的,把一個簡單的軟體加上

    現代人們常在使用的手機來做一個結合。

    所以我們利用學校老師所交的 android 開發程式來實做出一套

    屬於自己的行動智慧健身紀錄器,希望完成此專題後,可以完整的拿

    出來使用, 在本篇論文中,我們利用 google Map開發出一個可以隨時

    隨地紀錄移動軌跡的『行動健身記錄器』,此服務包括有:BMI計算、

    飲食紀錄、 健康小提醒、資料庫系統、Gps記錄器。其主要特點有:(1)

    1

  • 提供個人 BMI計算與建議;(2)紀錄一天所吃的食物與消耗多少卡路

    里;(3)提供貼心的小提醒; (4)提供資料庫的存取查詢;(5)利用

    android google Map服務提供定位系統以及軌跡紀錄:支援多種設備

    (如:智慧型手機,桌上型電腦,筆記型電腦,平板電腦) 。如果平常時

    不用桌上型電腦的人,只要有智慧型手機也是可以利用建的系統匯入

    我們的行動健身紀錄器,幫助你不用電腦上網也可以計算計自己的

    BMI值,讓自己知道目前的體重是否過胖或過瘦,也可以儲存起來到

    資料庫系統裡面,保存後以後可以方便查詢。也可以讓喜歡運動的

    人,隨身攜帶此 App程式方便記錄自己移動路徑和計算走了多少距離

    清楚的知道消耗多少熱量。

    2

  • 第二章 Android 模塊與相關技術

    Android 是一個移動設備的平台,其軟件層次結構包括了一個操

    作系统(OS),中間件(MiddleWare)和應用程序(Application)。根

    據Android的軟件框圖,其軟件層次結構自下而上分為以下幾個層次:

    第一、作業系統層(Linux Kernel)

    第二、函式庫(Libraries)和 Android 運行環境(RunTime)

    第三、應用程序框架(Application Framework)

    第四、應用程序(Application)

    以下分别介绍 Andoid各個層次的軟件的重點及相關技術介紹說明:

    2-1Android軟體堆疊

    3

  • 2-2 作業系統層(Linux Kernel)

    (1)Base on Linux 2.6:

    –已修改 kernel,以避免 GPL授權問題

    (2)Power Management修改

    – 針對手機環境,當沒有使用就關機

    2-3 系統函式庫(Libraries)

    Android 所有元件皆是由 C/C++函式庫所組成,但 Android所有

    的應用程式皆必需經由 API 來使用這些功能。

    例如:SQLite SQLite 是一套開放原碼的關連式資料庫,其特點在於

    輕量性(僅 500KB左右的容量),適合掌上型裝置運用。

    LibWebCore:一個先進的網頁瀏覽器引擎。

    SGL:2D 繪圖引擎。

    4

  • 2-4 Android 運行環境(RunTime)

    Android 雖然用 Java 程式語言來開發、撰寫應用程式,但卻不

    使用一般大家目前在用的 Java Runtime(J2ME)版本來執行 Java 程

    式,而是用 Android 自有的 AndroidRuntime 來執行。

    Android Runtime 包含下面兩個核心。

    (1)Core Libraries

    • 核心函式庫裡頭已經包含了絕大多數 Java程式語言所需要呼用

    的功效函式。

    • 每個 Android應用程式都用一個自屬的 Dalvik虛擬機器來執行。

    (2)Dalvik Virtual Machine

    • 一種暫存器型態的虛擬機器

    • Dalvik 在撰寫開發時就已經設想用最少的記憶體資源來執

    行,以及前述的「同時可執行多個 VM個體」。

    5

  • 2-5 應用程式層框架(Application Framework)

    (1)應用層框架則實作 JNI 技術。

    (2)程式設計師在寫應用程式時可以完整的存取使用統一的應用程式

    標準介面。

    (3)很容易的去重覆使用各個原件,所有的應用程式都可以提供出它

    自己本身的特殊功能,所有的應用程式也可以較容易的去使用其它程

    式的特殊功能。

    介紹應用程式層框架中幾個常用的元件:

    (1)Activity Manager(活動管理員):管理所有的應用程式生命週期。

    (2)Package Manager:Android 系統內所有的程式管理。

    (3)Window Manager(視窗管理員):管理所有的視窗程式。

    (4)Telephony Manager:用來管理所有的移動設備(電話)的功能。

    6

  • 2-6 應用程式層(Applications)

    (1)應用程式層(Applications)提供常用的應用程式如 Email 收發、

    簡訊程式、行事歷、Google地圖、瀏覽器、通訊錄等。

    (2)應用程式以 Java 語言寫成,透過第二層的應用層框(Application

    Framework)往下溝通。

    (3)從 Market下載的程式自行開發的程式

    7

  • 第三章 Android 四大組件

    元件,是在談及所謂架構重用的時候,是一個重要的事情。像是

    把程式做的跟樂高似的,完整的元件該放在哪邊,當如果有需要的時

    候在去拿幾個來搭配起來, 整個程序就構建完成了。

    Android框架內提供了 4個重要的基本種類包括:

    • Activity:處理 UI互動事情

    • Service:處理幕後的服務

    • BroadcastReceiver:接收訊息及事件處理

    • ContentProvider:儲存共用資料

    3-1 活動(Activity)

    • 一般所指的活動是使用者介面。

    • 一支應用程式有一個或以上的活動存在,每個活動也都會有自

    己的視景(View)。

    8

  • 3-2 服務(Service)

    • 在背景長時間運行的應用元件,不和使用者直接進行動。

    • 例如:音樂播放啟動一個服務(Service),此服務運行於背景,

    Android系統將會負責音樂的持續播放。(背景播放)

    3-3 廣播接收器(Broadcast Receiver)

    • 系統發送廣播通知,來通知其它應用程式。

    – 電池電量不足

    – 資料已下載完畢,可供使用

    – 提醒使用者,如背光、振動或播放音樂 (系統通知多個應

    用程式)

    3-4 內容提供器(Content Provider)

    • 將應用程式資料組合成特定的集合供其它應用程式使用。

    • 資料可以是儲存在檔、SQLite資料庫,或是其它任何使用者可

    以存取資料的地方。

    • 應用程式不是直接呼叫這些實作方法。

    • 透過內容解析器 Intent呼叫方法。

    • 內容解析器能夠通知任何的內容管理器,並可以參與這些內容

    提供器行程間的管理。

    9

  • 3-5 應用程式的基本處理步驟

    Activity的 Lifecycle(生命週期)

    10

  • 第四章 系統分析與細部設計

    介紹了 Android的模塊與 Android四大基礎元件系統概念後,先

    對 Android 的架構有正確認知,如此開發出來的元件才能夠發揮

    Android系統框架最大的功用。可以幫助你在往後開發 Android更加

    得心應手。

    我們所建立的 Android 應用程式可以支援許多東西例如:多國語

    系,顏色設定,尺寸大小,樣式資源,視窗佈局,動畫設計,圖檔資源等

    等……。

    11

  • 4-1 應用程式架構

    12

  • 4-2 Android Manifest定義檔

    • Android Manifest定義檔是一個用來描述應用程式「整體資訊」

    的設定檔。

    • 每個應用程式都需要 AndroidManifest.xml,它提供了應用程

    式必要資訊給 Android系統使用,像是應用程式元件(活動、服

    務…等等)有什麼樣的資訊可以操作,以及在什麼地方運行。

    13

  • 4-3 AndroidManifest.xml

    14

  • 4-4 在 JAVA 原始檔中使用字串變數

    – 用法:R.string.字串名稱

    – 範例:CharSequence hello =

    getString(R.string.hello);

    15

  • 4-5 XML資源文件使用字串資源

    – 用法:@string/字串名稱

    – 範例:android:app_name=”@string/hello”

    16

  • 4-6 支援多國語言

    • 建立不同的語言錄。

    – 範例:

    values-cht繁體中文、

    values-en英文、values-jp

    日文……等等。

    17

  • 4-7 圖檔資源目錄 drawable

    – 只要是程式的圖示、背景圖片等等,皆需放在

    drawable目錄底下

    – Android會為每個放置在 res/drawable目錄下的圖片檔

    案產生一變數,變數名稱就是這個圖片的檔名(不包含副

    檔名),可在 R.java文件中的 drawable中查詢。

    18

  • 4-8 JAVA原始檔中使用圖檔名稱

    – 用法:R.drawable.圖檔名稱

    – 範例:Drawable bitmap =

    getResources().getDrawable(R.drawable.icon);

    19

  • 4-9 XML文件中使用圖檔名稱

    – 用法:@drawable/圖檔名稱

    – 範例:android:background="@drawable/icon"

    20

  • 4-10 視窗佈局資源檔 - layout\main.xml

    在 Android 平台裡,使用者介面都是透過 ViewGroup或 View類

    別來顯示,ViewGroup和 View是 Android平台上最基本的使用者

    介面元件。

    我們可以透過程式直接呼叫的方法,或是使用 XML文件,來描述

    使用者介面。

    21

  • 4-11 JAVA 中使用佈局檔案

    – 用法:R.layout.佈局檔案名稱

    – 範例:setContentView(R.layout.main);

    22

  • 第五章 實作成果

    1. 從開始專題分組到找老師後,我們從老師身上聽取許多的建議與

    方向 ,使得專題能夠順利完成。

    2. 利用 Android 開發環境下,我們花了不少時間終於完成了一個簡

    單的行動健身記錄器、這對我們算是學到了許多寶貴的經驗

    3. 我們系統架構『主畫面』分成了五個部份:『BMI 計算』,『飲食

    計算』,『貼心小提醒』,『GPS 路線計算』,『資料庫系統』。

    4. 希望可以把這次專題完整的拿出來使用,可以方便讓使用者操

    作,並且把介面上功能更加加強讓使用者使用。

    23

  • 5-1 健康管理程式(主畫面)

    圖 5-1程式進入後主畫面

    圖 5-1是程式開啟後出現主要畫面,主要設計有 5大按鈕選項,分別

    是『 BMI計算』、『飲食管理』、『GPS路線計算』、『健康小提

    醒』、『資料表』。

    24

  • 5-2 BMI執行畫面

    圖 5-2 BMI啟動畫面

    圖 5-2是點擊 BMI按鈕後開啟的畫面,輸入高、體重後可以計算 BMI ,

    可以把計算後結果儲存到資料庫,成功儲存時系統會跑出新增成功,

    按下清除資料的話,是把欄位資料重置。

    25

  • 5-3 飲食計算

    圖 5-3 飲食紀錄啟動畫面

    圖 5-3當進入畫面後,會出現一天大略所吃的食物,可以自

    己選擇吃了幾份後,來做一個計算總和。

    26

  • 5-4 貼心小提醒

    圖 5-4健康小提醒啟動畫面

    圖 5-4是系統為了當使用者如果不知道要如何瘦身或是吃什麼比較

    健康的話,貼心小提醒就派上用場了,只要點擊後即刻出現對話視窗,

    會立即建議你該如何處理你的煩惱。

    27

  • 5-5 資料庫查詢

    圖 5-5 資料庫畫面

    圖 5-5會把 BMI計算後的結果利用資料語法來儲存於我們定義好的資

    料庫裡面也會順便把時間點給記錄下來方便以後查詢。

    28

  • Google Maps v2

    • 想要建立具備基本 Google 地圖的 Android 應用程式,必須使

    用 Google Maps Android API(以下簡稱為 Maps API),我們

    使用的是第 2版(Google Maps Android APIv2 )。

    • 透過 Maps API 可以存取 Google 地圖伺服器上的資料用以呈現

    在 Android 裝置上。

    • 必須先建立 Android專案後,到 GoogleAPIs Console 管

    理介面申請一組 屬於自己的金鑰,並在 manifest檔案

    內作相關設定,匯入 google-playservices_lib 專案

    後,最後建立 layout檔案與 Activity就完成了一個

    基本 Google 地圖。

    • 以下我們做一個簡略的建立 Google 地圖的程序。

    29

  • 5-6 取得憑證指紋

    圖 5-6取得憑證指紋

    透過 Eclipse主選單「Windows」→「Preferences」→「Android」

    →「Build」→可以取得 SHA1的憑證指紋

    30

  • 5-7 Google APIs Console 管理介面

    圖5-7 啟動Google Maps Android APIv2 服務

    點擊左邊導覽列的「Services」,在右邊搜尋到「Google Maps Android

    API v2」,如圖5-7;點擊後即可啟動該服務。

    圖5-8 建立API金鑰

    31

  • 點擊導覽列「API Access」選項,並在右邊按下「Create new Android

    key」按鈕,如圖5-8。

    5-8 需要「憑證指紋」與「應用程式套件名稱」

    圖 5-9輸入憑證指紋 OR 應用程式套件名稱

    申請API 金鑰需要「憑證指紋」與「應用程式套件名稱」。請依照圖

    5-9 所示,在文字輸入方塊中先貼上憑證指紋,加上分號,再貼上套

    件名稱,格式為「憑證指紋;套件名稱」,然後按下「Create」按鈕。

    32

  • 5-9 產生 API 金鑰

    圖5-10 產生API金鑰

    最後會產生API 金鑰,如圖5-10。之後建立Android 專案時,套件名

    稱要填寫申請API 金鑰時所輸入的套件名稱;另外manifest 檔案也

    必須設定API 金鑰,在下一節將會詳細說明。

    33

  • 5-10 安裝 Google Play Service

    Maps API 現在已經成為Google Play services SDK 一部分,所

    以要使用Google 地圖相關功能,必須先安裝Google Play services

    SDK。安裝步驟為:

    圖5-11 安裝Google Play services SDK

    按下Eclipse 工具列的「Android SDK Manager」按鈕,勾選「Google

    Play services」,如圖5-11,按下右下角「Install packages」即

    可開始安裝。

    34

  • 5-11 將 google-play-services_lib 匯至專案

    Google 地圖應用程式需要使用到Google Play services 函式

    庫,所以先匯入google-play-services_lib 專案, 當作其他地圖應

    用程式的函式庫(libraryproject)。匯入步驟為:

    圖5-12建立google-play-services_lib專案

    按下Eclipse 主選單「File」>「Import」>「Android」>「 Existing

    AndroidCode Into Workspace」然後按下「Next」按鈕,如圖5-12。

    35

  • 5-12 建立 google-play-services_lib專案

    按下「Browse」按鈕然後找尋 google-play-services_lib 目錄,如

    圖 5-13,路徑在「/extras/google/google_play_services/libproject/google-play

    -services_lib」

    圖5-13 建立google-play-services_lib專案

    36

  • 5-13 完成 google-play-services_lib專案

    圖5-14 完成google-play-services_lib專案

    匯入成功後可以在Package Explorer 看google-play-services_lib

    專案,如圖5-14。

    37

  • 5-14 專案要加入 google-play-services_lib

    圖 5-15 在自己專案加入 google-play-services_lib

    引用 google-play-services_lib 專案: 請先依照前述匯入

    google-playservices_lib 專案,然後對 Android 專案按滑鼠右鍵

    選「Properties」> 點擊「Android」選項 > 按下「Add」按鈕 > 選

    擇「google-play-services_lib」專案> 按下「OK」按鈕,如圖 5-15。

    38

  • 5-15 將 API key加入 AndroidManifest.xml

    圖 5-16 AndroidManifest.xml

    到manifest檔案,把申請的API Key輸入進去如圖5-16。

    39

  • 5-16計算距離公式

    使用 GPS計算移動距離最常用的公式是 Haversine公式:已知地

    球表面 A(lat1, lon1), B(lat2, lon2)的座標 , 求 AB

    的距離。

    2 2 2( / 2) sin ( / 2) cos( 1) cos( 2)sin ( / 2)c AB a lat lat b= = + × 12 tan ( / 1 )AOB c c−∠ = −

    d=A與 B間圓幅的距離= R AOB×∠

    1.(Lat1, Lon1) 表示 A點經緯度,(Lat2, Lon2) 表示 B點經緯度

    2.a=Lat1 – Lat2 為兩點緯度之差 b=Lon1 -Lon2 為兩點經度之差

    3.把計算出來的 a 與 b 帶入上面距離計算公式求出 c

    4.把計算出來的 c 帶入上面距離計算公式求出 AOB∠

    5.在把 c x 地球半徑 3958.75 ,求出兩點間距離

    6.地球半徑 6378.137(3958.75英里);

    40

  • 以下將推導出 Haversine公式:

    Haversine Formula的原始定義:

    • VERSINE (or versed sine) of angle θ is 1-cos(θ).

    • HAVERSINE is half the versine, or (1-cos(θ))/2.

    • hav(θ) = (1-cos(θ))/2 = sin^2(θ /2)

    • Segment AC = sin(θ /2), so the length of chord AB is 2*sin(θ

    /2).

    圖 5-17 Haversine Formula的原始定義

    41

  • Haversine Formula的推導 1:

    已知地球表面 A(lat1, lon1), B(lat2, lon2)的座標 ,

    求 AB 的距離。

    圖 5-18 地球表面給定 A,B兩點座標,求 AB的地表距離

    2cos( 1)sin( / 2)AD lat b=

    2cos( 2)sin( / 2)CB lat b=

    2 1b lon lon= −

    A

    H B C

    D

    42

  • Haversine Formula的推導 2:

    圖 5-19 地球表面給定 A,B兩點座標,求 AB的直線距離

    2 2 2 2 2( ) / 4AH AC CH AC CB AD= − = − −

    ( ) / 2HB CB AD= +

    2 2 2 2 2 2

    2

    ( ) / 4 ( ) / 4AB AH HB AC CB AD CB AD

    AC CB AD

    = + = − − + +

    = + ×

    2 2 24(sin ( / 2) cos( 1) cos( 2)sin ( / 2))AB a lat lat b= + ×

    2 1a lat lat= −

    A

    H B C

    D

    43

  • Haversine Formula的推導 3:

    d=A 與 B 圓幅的距離= R AOB×∠

    R: 地球半徑

    圖 5-20 給定 A,B 兩點座標,O 為地球球心,求 AB 的地表距離

    2 2 2( / 2) sin ( / 2) cos( 1) cos( 2)sin ( / 2)c AB a lat lat b= = + ×

    12 tan ( / 1 )AOB c c−∠ = −

    44

  • 5-17 消耗熱量公式

    統計出來的:運動熱量消耗表

    運動項目 消耗熱量

    走路 3 公里/小時 240 大卡

    慢跑 8 公里/小時 655 大卡

    騎腳踏車 8.8 公里/小時 184 大卡

    因為 8800公尺消耗 184大卡,可以推論 8800公尺

    每公尺消耗熱量 = 184大卡/8800公尺

    每分鐘消耗熱量 = 184大卡/60分鐘

    個人消耗熱量 = 移動距離 x 每公尺消耗熱量

    45

  • 5-18 距離計算程式碼

    我們求出 gp1與 gp2各經緯度後,把這兩個函數帶入 GetDistance這

    個副 程式裡面,利用求出兩點間距離公式,乘上地球半徑之後求出

    兩點間 的距離。

    46

  • 5-19 熱量消耗程式碼

    預先設定一個值在外面,與下拉式元件做連結選擇需要的運動後,

    在把 消耗的卡路里值帶進跟距離做計算,在顯示出來。

    47

  • 5-20 運動路徑畫面

    實驗畫面_1

    圖 5-21啟動後出現畫面

    圖 5-21當點擊按鈕後將跑出一個定位中訊息現,這是因為 Gps衛

    星定位系統正在準確的收尋我自己的位子。

    48

  • 實驗畫面_2

    圖 5-22定位成功後畫面

    圖 5-22當 GPS衛星定位系統成功收尋到我自己位子後,將會標記目

    前自己所站的位子,左上角有選項鈕,可以選擇你要行徑的方式。

    49

  • 實驗畫面_3

    圖 5-23 軌跡顯示畫面

    圖 5-23當你選擇好你要行徑的方後,在移動過程都會以藍色畫出你

    移動的軌跡。案下手機內建選單會跳出選擇系統,可以選擇計算距離

    與消耗量。

    50

  • 實驗畫面_4

    圖 5-24距離計算畫面

    圖 5-20當到達目的後,想知道自己移動了多少公尺時,可以按下手

    機內建的選單系統,在按下計算距離後,馬上可以計算出移動多少公

    尺。

    51

  • 實驗畫面_5

    圖 5-25按下消耗卡路里畫面

    圖 5-25當知道自己移動多少距離後,想知道自已經消耗了多少卡路

    里時,只要按下內鍵選單的熱量計算按鍵就會顯示出消耗多少卡路

    里。

    52

  • 第 6 章 心得與結論

    完成這個專題後得到滿多經驗也學到了很多,從一開始什麼 都

    不懂得去摸索到現在已經有建立一些 Android基礎。我知道不能只靠

    老師來幫你解答,很多問題都需要靠自己去尋求答案的,雖然過程中

    常常想放棄,但組員的努力和安慰讓我不得不去克服它,程式對許多

    人來說應該都很排斥,但我們爲了能在這 4年中學到更多人學不到的

    東西,我們試著去接受他,挑戰他,也謝謝老師用心的教導,讓我們

    一步一步的成長,程式是需要一步一步累積的,還好有照著老師的腳

    步,也謝謝成員們盡心盡力的努力,才有今天的成果出來,但是還是

    有很多的進步空間, 往後會加努力在這方面。

    在結論方面我們是覺得這個程式裡面系統因該還有許多可以改

    進方面例如像 Gps 距離計算可以改為固定一段時間後即時自動更新

    並顯示在手機螢幕上面,再提供使用者更多服務的選項例如:可以記

    錄每一次走的距離與消耗卡路里,把這方面技術在更加強一點。

    在飲食紀錄方面希望可以有更多食物方面可以選擇並且還有希望可

    以美化每一個介面,讓使用者使用上方面可以更加方便。

    53

  • 參考文獻

    1. 黃彬華,Android 4.X App 開發教戰手冊線上教材,網

    址: https://sites.google.com/site/ronforwork/

    2. 谷歌開發者網頁,Android 的 Activity ,網

    址:http://developer.android.com/reference/android/app/Act

    ivity.html

    3. 饒瑞佶, Android GPS 軌跡紀錄器, 建國科技大學資管系

    教材,網

    址:http://rfid.ctu.edu.tw/rueychi/4_class/102_2Android/11_

    Android_GPS_logger.pdf

    4. 健康博士部落格,運動熱量消耗表,網

    址:http://drhealth.pixnet.net/blog/post/7145178

    54

    https://sites.google.com/site/ronforwork/http://developer.android.com/reference/android/app/Activity.htmlhttp://developer.android.com/reference/android/app/Activity.htmlhttp://developer.android.com/reference/android/app/Activity.htmlhttp://rfid.ctu.edu.tw/rueychi/4_class/102_2Android/11_Android_GPS_logger.pdfhttp://rfid.ctu.edu.tw/rueychi/4_class/102_2Android/11_Android_GPS_logger.pdfhttp://rfid.ctu.edu.tw/rueychi/4_class/102_2Android/11_Android_GPS_logger.pdfhttp://drhealth.pixnet.net/blog/post/7145178

    摘要專題進度表第一章 動機與目的第二章 Android模塊與相關技術2-1Android軟體堆疊2-2作業系統層(Linux Kernel)2-3系統函式庫(Libraries)2-4 Android 運行環境(RunTime)2-5應用程式層框架(Application Framework)2-6應用程式層(Applications)

    第三章 Android四大組件3-1活動(Activity)3-2服務(Service)3-3廣播接收器(Broadcast Receiver)3-4內容提供器(Content Provider)3-5應用程式的基本處理步驟

    第四章 系統分析與細部設計4-1 應用程式架構4-2 Android Manifest定義檔4-3 AndroidManifest.xml4-4 在JAVA原始檔中使用字串變數4-5 XML資源文件使用字串資源4-6 支援多國語言4-7 圖檔資源目錄 drawable4-8 JAVA原始檔中使用圖檔名稱4-9 XML文件中使用圖檔名稱4-10 視窗佈局資源檔 - layout\main.xml4-11 JAVA中使用佈局檔案

    第五章 實作成果5-1健康管理程式(主畫面)5-2 BMI執行畫面5-3飲食計算5-4貼心小提醒5-5資料庫查詢5-6取得憑證指紋5-7 Google APIs Console 管理介面5-8 需要「憑證指紋」與「應用程式套件名稱」5-9 產生API 金鑰5-10 安裝Google Play Service5-11 將google-play-services_lib匯至專案5-12 建立google-play-services_lib專案5-13 完成google-play-services_lib專案5-14 專案要加入google-play-services_lib5-15 將API key加入AndroidManifest.xml5-16計算距離公式5-17 消耗熱量公式5-18 距離計算程式碼5-19 熱量消耗程式碼5-20 運動路徑畫面

    第6章 心得與結論參考文獻