建立Android新專案



Similar documents
證 券 簡 易 下 單 :2121 證 券 簡 易 下 單 1. 主 工 具 列 的 視 窗 搜 尋 器 直 接 輸 入 點 擊 主 選 單 證 券 專 區 下 單 特 殊 下 單 2121 證 券 簡 易 下 單 畫 面 說 明 1. 下 單 區 2. 個 股 行 情 資 訊 與

Microsoft Word doc

建立Android新專案

目 錄 項 目 內 容 頁 數 1 手 機 要 求 3 2 登 記 程 序 3 3 登 入 程 序 4 4 輸 入 買 賣 指 示 6 5 更 改 指 示 14 6 取 消 指 示 18 7 查 詢 股 票 結 存 21 8 查 詢 買 賣 指 示 23 9 更 改 密 碼 查 詢 股

Microsoft Word - 第四章.doc

實德證券網上交易系統示範

瑞興銀行

(Microsoft Word - MOODLE990201\266i\266\245\244\342\245U )

目 錄 一 系 統 登 入... 2 ( 一 ) 系 統 登 入 畫 面... 2 ( 二 ) 首 次 登 入 請 先 註 冊... 3 ( 三 ) 忘 記 單 位 帳 號... 8 ( 四 ) 忘 記 密 碼 ( 五 ) 健 保 卡 更 換 ( 六 ) 重 寄 確 認 信.


6-1-1極限的概念

目 錄 壹 題 目 1: 新 增 商 品 ( 商 品 名 稱 為 玉 井 芒 果 乾 禮 盒 )... 3 貳 題 目 2: 新 增 商 品 ( 商 品 名 稱 為 紅 磚 布 丁 精 選 禮 盒 )... 5 參 題 目 3: 新 增 商 品 ( 商 品 名 稱 為 晶 鑽 XO 醬 禮 盒 ).

授 課 老 師 章 節 第 一 章 教 學 教 具 間 3 分 鐘 粉 筆 CNC 銑 床 教 學 內 容 CNC 銑 床 之 基 本 操 作 教 材 來 源 數 值 控 制 機 械 實 習 Ⅰ 1. 了 解 CNC 銑 床 的 發 展 2. 了 解 CNC 銑 床 刀 具 的 選 用 3. 了 解

前 項 第 三 款 所 定 有 機 農 產 品 及 有 機 農 產 加 工 品 驗 證 基 準, 如 附 件 一 第 七 條 驗 證 機 構 受 理 有 機 農 產 品 及 有 機 農 產 加 工 品 之 驗 證, 應 辦 理 書 面 審 查 實 地 查 驗 產 品 檢 驗 及 驗 證 決 定 之

所 3 學 分 課 程, 及 兩 門 跨 領 域 課 程 共 6 學 分 以 上 課 程 學 生 在 修 課 前, 必 須 填 寫 課 程 修 課 認 定 表, 經 班 主 任 或 指 導 教 授 簽 名 後 始 認 定 此 課 程 學 分 ) 10. 本 規 章 未 盡 事 宜, 悉 依 學 位

PowerPoint 簡報

投影片 1

e-Submission System Quick Reference Guide for Publication Related Matters (Chinese version)



關 於 教 育 部 學 習 拍 立 得 教 育 部 於 (103) 年 度 整 合 各 縣 市 政 府 部 屬 機 構 大 學 及 民 間 的 數 位 資 源 與 服 務, 依 不 同 類 型, 分 別 匯 集 於 教 育 大 市 集 教 育 百 科 教 育 媒 體 影 音 教 育 部 學 習 拍

目 錄 頁 1. 歡 迎 使 用 網 上 預 約 面 談 訪 問 系 統 新 用 戶 新 用 戶 登 入 帳 戶 程 序 啟 動 網 上 預 約 面 談 訪 問 帳 戶 核 對 帳 戶 的 地 址 資 料

Microsoft Word - ch07

101年度社會福利方案 網路線上操作手冊

PROSPECT EXPLORATION 壹 前 言 第 9 卷 第 2 期 中 華 民 國 100 年 2 月

NCKU elearning Manual

<30332EAAFEA5F3A440A142A447A142A454A142A57CA147BEC7A5CDB14DB77EC3D2B7D3BEC7B2DFA661B9CF2E786C73>

<4D F736F F D20B3E6A4B830312D2D2DBCC6BD75BB50BEE3BCC6AABAA55BB4EEB942BAE22E646F6378>

壹、組織編制 代碼:C0101意見反映

3. 給 定 一 整 數 陣 列 a[0] a[1] a[99] 且 a[k]=3k+1, 以 value=100 呼 叫 以 下 兩 函 式, 假 設 函 式 f1 及 f2 之 while 迴 圈 主 體 分 別 執 行 n1 與 n2 次 (i.e, 計 算 if 敘 述 執 行 次 數, 不

第二組掃描器規範書

Microsoft Word - 雲林區_免試平台_國中模擬選填_操作手冊.doc

四 修 正 幼 兒 園 師 資 類 科 應 修 學 分 數 為 四 十 八 學 分, 並 明 定 學 分 數 抵 免 之 相 關 規 定 及 規 範 修 習 幼 兒 園 教 育 專 業 課 程 之 最 低 年 限 ( 修 正 條 文 第 五 條 ) 五 發 給 修 畢 師 資 職 前 教 育 證 明

Appendix2

<4D F736F F D D313032A7DEC075BAC2BC66B56EB04FB44EC5AAA7D3C440A7C7A874B2CEBEDEA740A4E2A5552E646F63>

???T????????

untitled

骨 折 別 日 數 表 1. 鼻 骨 眶 骨 ( 含 顴 骨 ) 14 天 11. 骨 盤 ( 包 括 腸 骨 恥 骨 坐 骨 薦 骨 ) 40 天 2. 掌 骨 指 骨 14 天 12. 臂 骨 40 天 3. 蹠 骨 趾 骨 14 天 13. 橈 骨 與 尺 骨 40 天 4. 下 顎 ( 齒

內 政 統 計 通 報

128 提 示 樞 紐 分 析 表 的 用 途 樞 紐 分 析 表 是 指 可 以 用 來 快 速 合 併 和 比 較 大 量 資 料 的 互 動 式 表 格, 透 過 它 可 以 詳 細 分 析 數 值 資 料, 特 別 適 用 於 下 列 情 況 : 需 要 從 含 有 大 量 資 料 的 清

(Microsoft Word -

Microsoft Word - BM900HD-2F電腦設定.doc

Microsoft Word - LongCard_Promo_2013_FAQ_tc_pdf.doc

「技術員訓練計劃」小冊子 "Technician Training Scheme" pamphlet

(DP_MFP_Training

一、 資格條件:

1. 安 裝 1.1 手 機 端 安 裝 檔 (cab 檔 ) 請 您 將 下 載 的 cab 檔 案 複 製 到 手 機 內 任 一 資 料 夾, 在 手 機 上 點 擊 cab 檔 案 後 即 可 開 始 安 裝 點 擊 本 檔 案 即 可 開 始 安 裝 請 於 您 的 手 機 上 繼 續 安

研究一:n人以『剪刀、石頭、布』猜拳法猜拳一次,決定一人勝

二 兒 歌 選 用 情 形 ( ) 2 ( ) ( )

CONTENTS 訓 練 內 容 設 計 法 056 淡 季 期 的 訓 練 058 旺 季 期 的 訓 練 060 針 對 爬 坡 賽 的 訓 練 內 容 062 賽 後 的 資 料 分 析 PART4/ 鏑 木 毅 先 生 的 建 言 活 用 於 越 野 路 跑 的 心 跳 訓

PART 2 系 統 篇 仔 細 檢 查 記 憶 體 和 顯 示 卡 AIDA64 Everest 操 作 : 使 用 AIDA64 檢 測 主 機 溫 度 AIDA64 DirectX AIDA

寫 作 背 景 導 讀 [98] L Lyman Frank Baum

進 入 系 統 1. 請 於 首 頁 右 側 使 用 者 登 入 輸 入 帳 號 密 碼 驗 證 碼 後, 點 選 登 入 進 入 系 統 2. 直 接 點 選 右 側 的 進 入 系 統, 直 接 進 入 題 目 檢 索 頁 面 直 接 進 入 系 統 後, 您 仍 可 瀏 覽 選 擇 您 所 需

校 長 遴 選 者 就 相 關 遴 選 事 項, 有 程 序 外 之 接 觸 遴 選 會 委 員 在 任 期 間 因 故 無 法 執 行 任 務 或 有 不 適 當 之 行 為 者, 由 各 該 主 管 機 關 解 聘 之 ; 其 缺 額, 依 第 一 項 至 第 五 項 規 定 聘 ( 派 ) 委

臺灣農產品生產追溯管理作業規範草案

十 三. 服 務 學 習 十 四. 座 位 表 管 理 十 五. 班 導 師 通 訊 錄 小 工 具 十 六. 電 子 報 表 十 七. 評 量 成 績 十 八. 學 期 成 績 ( 國 中 ) 十 九. 學 期 成 績 ( 高

Acronis Backup & Recovery 11 進階版本

BSP 烤箱 - 封面-2

修 課 特 殊 規 定 : 一 法 律 系 學 生 最 低 畢 業 學 分 128;101 學 年 度 修 讀 法 律 系 雙 主 修 學 生 應 修 畢 法 律 專 業 目 64 學 分 ( 限 修 習 本 校 法 律 系 開 設 課 程, 不 得 以 原 學 系 或 外 校 課 程 抵 免 -

肆 研 究 方 法 進 行 本 研 究 前, 我 們 首 先 對 研 究 中 所 用 到 名 詞 作 定 義 定 義 : 牌 數 : 玩 牌 時 所 使 用 到 撲 克 牌 數 次 數 : 進 行 猜 心 術 遊 戲 時, 重 複 分 牌 次 數 數 : 進 行 猜 心 術 遊 戲 時, 每 次 分

16

<4D F736F F D D C0F4AB4FB870A175C0B3A548BAF4B8F4B6C7BFE9A4E8A6A1BFECB27AA4F4A6C3AC56A8BEAA76B1B9AC49AD70B565BB50B35CA569C3D2A15DA4E5A5F3A15EA4A7A5D3BDD0A142C5DCA7F3A9CEAE69A9B5A141A4CEC0CBB4FAA5D3B3F8A4A7B

( 三 ) 走 道 與 建 築 物 結 構 空 間 不 符 規 定 者, 得 降 低 走 道 設 置 位 置 或 空 間 不 足 處 之 部 分 走 道 高 度, 並 視 需 要 採 階 梯 式 設 計, 使 建 築 物 與 其 走 道 間 保 持 1.8 公 尺 以 上, 確 保 人 員 走 行

章節

教 師 相 關 ( 升 等, 依 業 務 需 002 交 通 管 科 評 鑑, 評 量, 徵,C031, 聘, 各 項 考 試 委 C051,C054, 員, 通 訊 錄 等 ),C057, C058,C063 各 項 會 議 紀 錄 依 業 務 需 C001,, 002,130 交 通 管 科 (

( 五 ) 財 務 會 計 理 論 研 討 3 學 分 ( 六 ) 審 計 理 論 研 討 3 學 分 ( 七 ) 管 理 會 計 理 論 研 討 3 學 分 第 四 條 選 修 科 目 : ( 一 ) 數 量 方 法 3 學 分 ( 二 ) 財 務 會 計 專 題 研 討 ( 一 ) 3 學 分

Microsoft PowerPoint - 資料庫正規化(ccchen).ppt

iPhone版操作手冊

(Microsoft Word - \244\361\301\311\263W\253h\244\316\255p\244\300\257\ \(1\))

功能名稱

行政院金融監督管理委員會全球資訊網-行政院金融監督管理委員會

教育實習問與答:

( 二 ) 資 格 考 試 之 方 式 : 1. 筆 試 : 圖 書 資 訊 學 檔 案 學 或 出 版 與 數 位 科 技 ( 三 科 選 考 一 科 ), 考 試 時 間 3 小 時 筆 試 分 數 以 70 分 為 及 格, 如 不 及 格, 且 修 業 年 限 尚 未 屆 滿 者, 得 於

life930106

答客問

xls

節 數 內 容 網 頁 設 計 (1): 利 用 Google Sites 制 作 簡 單 文 字 網 頁, 連 結 不 同 版 面 網 頁 設 計 (2): 在 文 字 網 頁 上 加 插 圖, 上 載 網 頁 影 片 設 計 (1): 利 用 Windows Movie

目 錄 下 載 安 裝 應 用 程 式 3 手 錶 綁 定 4 手 錶 設 定 8 追 蹤 手 錶 14 手 錶 操 作 17 常 見 問 題 20 2

Microsoft Word 網頁設計.doc

目 錄

行政院金融監督管理委員會全球資訊網-行政院金融監督管理委員會

Microsoft Word - 立法會十四題附件.doc

本 題 各 點 彼 此 均 有 相 互 關 聯, 作 答 不 完 整, 將 影 響 各 評 分 點 之 得 分, 請 注 意 檔 名 儲 存 錯 誤, 該 題 一 律 0 分 計 算 深 淺 圖 表.xlsx 請 依 下 方 題 目 敘 述 操 作 ( 佔 總 分 :) 儲 存 格 範



支 持 機 構 : 社 會 文 化 司 主 辦 機 構 : 澳 門 學 聯 澳 門 青 年 研 究 協 會 電 話 : 傳 真 : 網 址 : 報 告 主 筆 : 李 略 博 士 數 據 錄

四 資 格 考 試 ( 一 ) 本 所 學 生 修 畢 先 修 課 程 及 共 同 必 修 課 程 之 圖 書 資 訊 學 研 討 或 檔 案 學 研 究 ( 依 組 別 ), 得 申 請 參 加 資 格 考 試 ( 二 ) 申 請 時 間 每 年 2 次, 分 別 為 6 月 1-7 日 及 12

簽 呈

標 準 作 業 程 序 的 版 本 說 明 : 制 定 者 版 本 編 碼 日 期 日 期 主 要 秘 書 處 Version /12/ /12/03 第 一 版 秘 書 處 Version /12/ /12/31 第 一 版 第 一 次 秘

(Microsoft Word - \246\250\301Z\272\336\262z.doc)

第 6. 節 不 定 積 分 的 基 本 公 式 我 們 可 以 把 已 經 知 道 反 導 函 數 之 所 有 函 數 都 視 為 不 定 積 分 的 基 本 公 式 基 本 公 式 涵 蓋 的 範 圍 愈 大, 我 們 求 解 積 分 就 愈 容 易, 但 有 記 憶 不 易 的 情 事 研 讀

(3) 澳 門 特 別 行 政 區 之 稅 務 知 識 及 (4) 商 法 典 ( 二 ) 重 新 批 准 註 冊 為 註 冊 會 計 師 / 專 業 會 計 員 之 筆 試 科 目 如 下 : (1) 澳 門 特 別 行 政 區 之 稅 務 知 識 及 (2) 商 法 典 ( 三 ) 考 試 範

托 兒 所 及 幼 稚 園 改 制 幼 兒 園 辦 法 條 文 說 明 第 一 條 本 辦 法 依 幼 兒 教 育 及 照 顧 法 ( 以 下 簡 稱 本 法 ) 第 五 十 五 條 第 三 項 規 定 訂 定 之 第 二 條 本 法 施 行 前 之 公 立 托 兒 所 幼 稚 園 或 經 政 府

Microsoft Word - Internet_Stock_Trading-Customer_Operation_Guide_C_0815.doc

桃園市104年國民中學新進教師甄選各校複試方式及需求表

LP 電腦週邊設備用品_第一組印表機規範書

Microsoft Word - Draft circular on Sub Leg Apr (chi)_Traditional

iPhone版操作手冊990421

目 錄 1 策 略 - 智 能 策 略 篩 選 器 策 略 - 自 訂 篩 選 器 策 略 - 觀 察 名 單 組 合 價 格 賬 戶 活 動 持 倉 - 開 倉 部 位 持 倉 - 單 子

認可人士、註冊結構工程師及註冊岩土工程師作業備考 ADM-6

Transcription:

Android 智 慧 型 手 機 程 式 設 計 程 式 設 計 與 應 用 班 Android Google Maps 建 國 科 技 大 學 資 管 系 饒 瑞 佶 2012/4 V1 2012/8 V2

Google Maps Reference: http://developer.android.com/resources/tutorials/views/hello-mapview.html 取 得 Google Map API Step1: 先 進 入 JDK 目 錄

Google Maps 透 過 keytool.exe 建 立 認 證 指 紋 需 要 debug_keystore 路 徑

debug_keystore 路 徑 Google Maps

Google Maps 輸 入 keytool list alias androiddebugkey keystore C:\Documents and Settings\Administrator\.android\debug.keystore storepass android keypass android

產 生 認 證 指 紋 Google Maps

Google Maps 進 入 Google Map API Key 申 請 頁 面 http://code.google.com/intl/zh-tw/android/addons/google-apis/maps-api-signup.html 輸 入 認 證 指 紋 碼

Google Maps 進 入 Google Map API Key 申 請 頁 面 http://code.google.com/intl/zh-tw/android/addons/google-apis/maps-api-signup.html

產 生 出 API 金 鑰 Google Maps 0O7bGO2vQxBc90bpYbJ8PnSjJapePPkrSGRvP3 A 加 入 main.xml <com.google.android.maps.mapview android:layout_width="fill_parent" android:layout_height="fill_parent" android:apikey="0o7bgo2vqxbc90bpybj8pnsj JapePPkrSGRvP3A" />

main.xml Google Maps

Google Maps 建 立 新 專 案 : HelloMaps 沒 有 Google APIs target

Google Maps 如 果 沒 有 Google APIs target 請 選 擇 Available packages 進 行 安 裝

Google Maps 安 裝 完 Google APIs target 畫 面

建 立 新 專 案 : HelloMaps Google Maps

顯 示 Google Maps 地 圖 加 入 改 成 MapActivity 加 入

Google Maps AVD 也 要 對 應 具 備 Google APIs 功 能

Google Maps 增 加 <uses-permission android:name="android.permission.internet" /> 在 <application> 裡 頭 增 加 <uses-library android:name="com.google.android.maps" /> 資 訊

Google Maps

在 Google Maps 上 加 標 示 需 要 一 個 overlay class, 做 堆 疊 圖 層 之 用

import java.util.arraylist; import android.app.alertdialog; import android.content.context; import android.graphics.drawable.drawable; import com.google.android.maps.itemizedoverlay; import com.google.android.maps.overlayitem; MapsOverlay public class MapsOverlay extends ItemizedOverlay<OverlayItem> { private ArrayList<OverlayItem> mapoverlays = new ArrayList<OverlayItem>(); private Context context; public MapsOverlay(Drawable defaultmarker) { super(boundcenterbottom(defaultmarker)); public MapsOverlay(Drawable defaultmarker, Context context) { this(defaultmarker); this.context = context; @Override protected OverlayItem createitem(int i) { return mapoverlays.get(i); @Override public int size() { return mapoverlays.size(); @Override protected boolean ontap(int index) { OverlayItem item = mapoverlays.get(index); AlertDialog.Builder dialog = new AlertDialog.Builder(context); dialog.settitle(item.gettitle()); dialog.setmessage(item.getsnippet()); dialog.show(); return true; public void addoverlay(overlayitem overlay) { mapoverlays.add(overlay); this.populate();

Main.xml 決 定 地 圖 能 不 能 互 動 決 定 View 顯 示 方 式 需 要 與 layout_width 或 layout_height 一 起 使 用 加 入 這 段 來 切 換 地 圖 種 類

layout_weight 改 變 看 看 改 變 看 看 改 變 看 看 改 變 看 看 改 變 看 看 改 變 看 看

HelloMaps 給 定 一 個 座 標 ( 未 來 可 以 來 自 於 GPS) 坐 標 圖 示 在 給 定 座 標 上 加 圖 示 切 換 成 衛 星 圖 圖 示 按 下 時 顯 示 的 資 訊 切 換 成 標 準 地 圖

試 試 改 變 圖 示

地 址 轉 座 標 try { inputaddress=(edittext)findviewbyid(r.id.edittext1); Geocoder geocoder = new Geocoder(Maps1Activity.this, Locale.getDefault()); List<Address> georesults = geocoder.getfromlocationname(inputaddress.gettext().tostring(), 5); while (georesults.size()==0) { georesults = geocoder.getfromlocationname(inputaddress.gettext().tostring(), 5); if (georesults.size()>0) { Address addr = georesults.get(0); Double latitude = addr.getlatitude() * 1E6; Double longitude = addr.getlongitude() * 1E6; tv1.settext(latitude + "/" + longitude); showlocation((int) (addr.getlatitude() * 1E6),(int) (addr.getlongitude() * 1E6)); catch (Exception e) { tv1.settext("convert error");

AVD 多 數 執 行 有 問 題, 最 好 使 用 手 機 測 試 1600 Amphitheatre Parkway, Mountain View, CA Android 2.2

輸 入 地 址 轉 換 地 址 成 座 標 座 標 顯 示 座 標 點

不 用 註 冊 Google Maps API 也 可 以 使 用 Intent

建 立 新 專 案 : IntentMaps 利 用 Intent 玩 Google Maps

顯 示 Google Maps 地 圖 要 取 消

利 用 Intent 玩 Google Maps AVD 也 要 對 應 具 備 Google APIs 功 能

利 用 Intent 玩 Google Maps 增 加 <uses-permission android:name="android.permission.internet" />

利 用 Intent 玩 Google Maps

更 多 Google Maps Google Maps URI 格 式 : geo:latitude,longitude << 沒 有 小 圖 示 geo:0,0?q=latitude,longitude << 出 現 圖 示 geo:latitude,longitude?z=zoom << 目 前 沒 作 用 geo:0,0?q=my+street+address << 出 現 有 註 冊 的 位 置 (my 已 取 消 ) geo:0,0?q=business+near+city Google Streetview URI 格 式 : google.streetview:cbll=lat,lng&cbp=1,yaw,,pitch,zoom&mz=mapzoom Uri uri=uri.parse("google.streetview:cbll=46.813812,-71.207378&cbp=1,99.56,,1,- 5.27&mz=21"); 只 支 援 美 加 地 區

更 多 Google Maps 顯 示 地 圖 Uri uri = Uri.parse("geo:38.899533,-77.036476"); Intent it = new Intent(Intent.ACTION_VIEW, uri); startactivity(it); 路 徑 規 劃 Uri uri = Uri.parse("http://maps.google.com/maps? f=d&saddr=startlat%20startlng&daddr=endlat%20endlng&hl=en"); Intent it = new Intent(Intent.ACTION_VIEW, uri); startactivity(it); //where startlat, startlng, endlat, endlng are a long with 6 decimals like: 50.123456

GPS

AndroidManiFest.xml 建 立 一 個 新 專 案 HelloGPS 需 要 開 放 以 下 權 限 <uses-permission android:name="android.permission.access_coarse_location" ></uses-permission> <uses-permission android:name="android.permission.access_fine_location"></u ses-permission>

偵 測 是 否 開 啟 GPS // 如 果 沒 有 開 啟 GPS--------------------- LocationManager status=(locationmanager)(this.getsystemservice(context.location_s ERVICE)); if(status.isproviderenabled(locationmanager.gps_provider) status.isproviderenabled(locationmanager.network_provider)){ else{ // 到 系 統 開 啟 GPS 與 WIFI 服 務 的 畫 面 startactivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)); //-------------------- 如 果 沒 有 開 啟 GPS

Android GPS 運 作 方 式 取 得 LocationManager: 判 定 是 否 有 提 供 定 位 服 務 ( 硬 體 GPS 或 WIFI) 建 立 LocationProvider, 設 定 定 位 參 數, 並 同 時 透 過 LocationManager 取 得 座 標 ( 硬 體 軟 體,GPS 或 是 WiFi) 設 定 LocationManager 的 Listener 事 件, 偵 測 事 件 的 改 變 MapController 負 責 控 制 Google Maps

GPS 訊 號 抓 取 主 體 宣 告 GPS 訊 號 擷 取 主 體 沒 有 GPS 時 觸 發

mlocationmanager =(LocationManager)(this.getSystemService(Context.LOCATION_SERVICE)); if(mlocationmanager.isproviderenabled(locationmanager.gps_provider) mlocationmanager.isproviderenabled(locationmanager.network_provider)){ else{ // 到 達 系 統 開 啟 GPS 與 WIFI 服 務 的 畫 面 startactivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)); //-------------------- 如 果 沒 有 開 啟 GPS 啟 動 GPS 如 果 沒 有 啟 動 使 用 GPS 服 務, 將 跳 至 設 定 畫 面 /* Provider 初 始 化 */ getlocationprivider(); 要 求 GPS 提 供 服 務 /* 設 定 事 件 的 Listener */ mlocationmanager.requestlocationupdates(mlocationprivider, 2000, 0, mlocationlistener); 設 定 GPS 監 聽 服 務 if(mlocation!=null) // 第 一 次 顯 示 { // 取 得 速 度 double speed=mlocation.getspeed()/1000*60*60; // 原 單 位 是 m/s double altitude = mlocation.getaltitude(); tv_show_gps.settext(" 緯 度 :" + formatgeo(mlocation.getlatitude()) + " 經 度 :" + formatgeo(mlocation.getlongitude()) + " 海 拔 :" + altitude + " m 速 度 :" + formatspeed(speed) + "km/h"); 如 果 有 GPS 訊 號, 顯 示 到 畫 面 上 TextView tv_show_gps; private ProgressDialog MyDialog; private LocationManager mlocationmanager; private String mlocationprivider=""; private Location mlocation; 宣 告 物 件

// 取 得 LocationProvider public void getlocationprivider() { Criteria mcriteria01 = new Criteria(); mcriteria01.setaccuracy(criteria.accuracy_fine); mcriteria01.setaltituderequired(true); // 需 要 高 度 mcriteria01.setbearingrequired(false); mcriteria01.setcostallowed(true); mcriteria01.setpowerrequirement(criteria.power_low); mlocationprivider = mlocationmanager.getbestprovider(mcriteria01, true); mlocation = mlocationmanager.getlastknownlocation(mlocationprivider);

// 偵 測 位 置 改 變 public final LocationListener mlocationlistener = new LocationListener() { public void onlocationchanged(location location) { // 如 果 記 錄 進 行 中, 就 畫 路 線 並 更 新 移 動 距 離 // 取 得 速 度 double speed=location.getspeed()/1000*60*60; // 原 單 位 是 m/s double altitude = location.getaltitude(); tv_show_gps.settext(" 緯 度 :" + formatgeo(location.getlatitude()) + " 經 度 :" + formatgeo(location.getlongitude()) + " 海 拔 :" + altitude + " m 速 度 :" + formatspeed(speed) + "km/h"); MyDialog.dismiss(); // 結 束 進 度 public void onproviderdisabled(string provider) { public void onproviderenabled(string provider) { public void onstatuschanged(string provider,int status,bundle extras) { ; //----------------- 偵 測 位 置 改 變

// 按 BACK 按 鍵 時 關 閉 程 式 @Override public void onbackpressed() { android.os.process.killprocess(android.os.process.mypid()); HelloGPSActivity.this.finish(); // 產 生 定 位 中 視 窗 private void createcancelprogressdialog(string title, String message, String buttontext) { MyDialog = new ProgressDialog(this); MyDialog.setTitle(title); MyDialog.setMessage(message); MyDialog.setButton(buttonText, new DialogInterface.OnClickListener(){ public void onclick(dialoginterface dialog, int which){ // Use either finish() or return() to either close the activity or just the dialog android.os.process.killprocess(android.os.process.mypid()); HelloGPSActivity.this.finish(); return; ); MyDialog.show(); // 顯 示 進 度

// format GPS 座 標 的 方 法 public String formatgeo(double num) { NumberFormat formatter = new DecimalFormat("###.####"); String s=formatter.format(num); return s; // format speed 的 方 法 public String formatspeed(double num) { NumberFormat formatter = new DecimalFormat("###.##"); String s=formatter.format(num); return s;

透 過 ddms 送 出 模 擬 GPS 座 標 到 AVD <uses-permission android:name="android.permission.access_mock_location"/>

GPS 取 得 GPS 訊 號 後, 將 其 顯 示 到 Google Maps 上, 移 動 時, 該 點 會 移 動 抹 除 舊 圖 層, 放 上 新 的 點 顯 示 成 一 個 動 態 路 徑 將 新 的 點 加 入 原 有 圖 層 中, 保 留 所 有 的 點 將 GPS 座 標 記 錄 到 SQLite 資 料 庫, 之 後 可 以 重 新 取 回

取 得 GPS 訊 號 後, 將 其 顯 示 到 Google Maps 上

oncreate 與 宣 告 MapView 物 件 與 圖 層 MapView 對 應 到 圖 層 清 除 圖 層 顯 示 座 標 點

gpsonmaps.xml 來 自 於 Google Maps 認 證 頁

LocationListener 清 除 圖 層 顯 示 座 標 點

showmaps 函 數 負 責 在 圖 層 上 顯 示 GPS 座 標 點

private void showmaps(location location) { Drawable drawable=this.getresources().getdrawable(r.drawable.ic_launcher); MapsOverlay itemizedoverlay=new MapsOverlay(drawable,this); double geolatitude = location.getlatitude()*1e6; double geolongitude = location.getlongitude()*1e6; GeoPoint point=new GeoPoint((int) geolatitude, (int) geolongitude); OverlayItem overlayitem=new OverlayItem(point,"Hello","I'm in Athens, Greece!"); itemizedoverlay.addoverlay(overlayitem); mapoverlays.add(itemizedoverlay); MapController mapcontroller=mapview.getcontroller(); mapcontroller.animateto(point); mapcontroller.setzoom(18); 最 後! 記 得 Activity 要 改 成 MapActivity

取 得 GPS 訊 號 後, 將 其 顯 示 到 Google Maps 上 並 畫 出 軌 跡 從 前 個 範 例 修 改

產 生 MyOverLay 類 別 import android.graphics.canvas; import android.graphics.color; import android.graphics.paint; import android.graphics.point; import android.graphics.rectf; import com.google.android.maps.geopoint; import com.google.android.maps.mapview; import com.google.android.maps.overlay; import com.google.android.maps.projection; public class MyOverLay extends Overlay { private GeoPoint gp1; private GeoPoint gp2; private int mradius=10; private int mode=0; /* 建 構 子, 傳 入 起 點 與 終 點 的 GeoPoint 與 mode */ public MyOverLay(GeoPoint gp1,geopoint gp2,int mode) { this.gp1 = gp1; this.gp2 = gp2; this.mode = mode; @Override public boolean draw (Canvas canvas, MapView mapview, boolean shadow, long when) { Projection projection = mapview.getprojection(); if (shadow == false) { /* 設 定 筆 刷 */ Paint paint = new Paint(); paint.setantialias(true); paint.setcolor(color.blue); // 點 的 顏 色 Point point = new Point(); projection.topixels(gp1, point);

/* mode=1: 建 立 起 點 */ if(mode==1) { /* 定 義 RectF 物 件 */ RectF oval=new RectF(point.x - mradius, point.y - mradius, point.x + mradius, point.y + mradius); /* 繪 製 起 點 的 圓 形 */ canvas.drawoval(oval, paint); /* mode=2: 畫 路 線 */ else if(mode==2) { Point point2 = new Point(); projection.topixels(gp2, point2); paint.setcolor(color.black); // 中 間 路 徑 的 顏 色 paint.setstrokewidth(5); paint.setalpha(120); /* 畫 線 */ canvas.drawline(point.x, point.y, point2.x,point2.y, paint); /* mode=3: 建 立 終 點 */ else if(mode==3) { /* 避 免 誤 差, 先 畫 最 後 一 段 的 路 線 */ Point point2 = new Point(); projection.topixels(gp2, point2); paint.setcolor(color.red); // 結 束 點 的 顏 色 paint.setstrokewidth(5); paint.setalpha(120); canvas.drawline(point.x, point.y, point2.x,point2.y, paint); /* 定 義 RectF 物 件 */ RectF oval=new RectF(point2.x - mradius,point2.y - mradius, point2.x + mradius,point2.y + mradius); /* 繪 製 終 點 的 圓 形 */ paint.setalpha(255); canvas.drawoval(oval, paint); return super.draw(canvas, mapview, shadow, when);

// GPS 座 標 前 後 點 GeoPoint gp1; GeoPoint gp2; MapController mapcontroller; boolean _run; 變 數

修 改 oncreate

btn_streetview.setonclicklistener(new Button.OnClickListener() //strat { @Override public void onclick(view arg0) { // TODO Auto-generated method stub try{ gp1=gp2; resetoverlay(); _run = true; refreshmapview(); setroute(1); // 起 點 catch(exception e){ ); btn_satellitetview.setonclicklistener(new Button.OnClickListener() //stop { @Override public void onclick(view arg0) { // TODO Auto-generated method stub _run = false; setroute(3); // 終 點 refreshmapview(); );

/* 取 得 GeoPoint 的 方 法 */ private GeoPoint getgeobylocation(location location) { GeoPoint gp = null; try { if (location!= null) { double geolatitude = location.getlatitude()*1e6; double geolongitude = location.getlongitude()*1e6; gp = new GeoPoint((int) geolatitude, (int) geolongitude); catch(exception e){ e.printstacktrace(); return gp;

/* 更 新 MapView 的 方 法 */ public void refreshmapview() { mapview.displayzoomcontrols(true); MapController mymc = mapview.getcontroller(); mymc.animateto(gp2); mymc.setzoom(18); mapview.setsatellite(false); // 不 用 衛 星 地 圖 mapview.setclickable(true); // 設 定 地 圖 可 以 被 選 取 移 動 /* 重 設 Overlay 的 方 法 */ private void resetoverlay() { List<Overlay> overlays = mapview.getoverlays(); overlays.clear();

/* 設 定 路 線 的 方 法 */ private void setroute(int mode) { MyOverLay moverlay = new MyOverLay(gp1,gp2,mode); List<Overlay> overlays = mapview.getoverlays(); overlays.add(moverlay);

修 改 LocationListener

修 改 LocationListener if(_run && iflocated){ gp2=getgeobylocation(location);; setroute(2); // 畫 線 refreshmapview(); gp1=gp2; else if(iflocated==false) { new AlertDialog.Builder(GPSLine.this).setTitle(" 定 位 ").setmessage(" 定 位 完 成, 可 以 開 始 使 用!").setPositiveButton(" 確 認 ",new DialogInterface.OnClickListener() { public void onclick(dialoginterface dialog, int which) { // TODO Auto-generated method stub ).show(); iflocated=true; MyDialog.dismiss();

補 充 沒 有 手 機 硬 體 時 怎 麼 測 試 一 些 硬 體 相 關 程 式?

Sensor Simulator http://code.google.com/p/openintents/wiki/sensorsimulator