2011年6月6日 星期一

Android小品_史上最弱路徑紀錄程式

俗話說的好:學程式的第一件事情就是抄,接下來是拼,然後用更高深的功力Review舊的程式碼,最後就可以想咪什麼就咪什麼。

奉行著這句古老流傳下來的箴言,仗著端午節媽媽愛心粽的加持,吃了一顆NZT,花了約莫36小時,終於不會當機!

功能:
1. 取得目前位置,並移動地圖至該位置。
2. 記載目前位置,並存進SQLite中。
3. 點擊[歷史]轉移至另一個Activity。

4. 列出記載過的路徑,點擊[刪除]可清除歷史資料。
5. 點擊[列表]將返回地圖頁面並將歷史資料重繪出來。

*. 認真騎車測試。

**. 認真騎車測試二。

自認為效果不錯,ㄎㄎ....

19 則留言:

阿槌 提到...

我想請問 你這支程式他有持續定位嗎 ? !
我是想要做GPS可以跟著我的移動定位的

ola的家 提到...

分為兩個部分:
1. 持續接收GPS資料。
2. 依照接收到的坐標移動地圖。

所以,一邊定位的確地圖是一邊跟著移動,只是這是兩件事情就是了。

阿槌 提到...

那要如何持續接收GPS資料呢 ? !
我現在可以正確地接收到第一次的GPS資料
是否有類似的文獻@@? 感謝

ola的家 提到...

第一次GPS資料是用LocationManager.getLastKnownLocation()來收到的嗎?

如果要持續接收就是監聽位置改變的事件。(LocationListener內複寫onLocationChanged事件,然後利用LocationManager.requestLocationUpdates(LocationPrivider,minTime,minDis,LocationListener)來註冊給LocationManager。

至於參考資料,在google關鍵字下requestLocationUpdates,會找到很多相關的內容。
重點就是上面講的那兩個:
1. 利用requestLocationUpdates註冊監聽。
2. 複寫位置監聽的onLocationChanged事件,把要處理的內容寫在裡面。

不知道這樣有幫到你嗎? @.@

阿槌 提到...

我似乎不是用LocationManager.getLastKnownLocation()
不過我大約懂你再說甚麼
那是requestLocationUpdates是放在onResume() 這裡面註冊嗎
然後再想把做的function 放進去onLocationChanged()裡面
是吧@@?

ola的家 提到...

要在哪一個階段監聽,應該是要看你程式的用途,如果說你是要在使用者在觀看這隻程式的時候才進行定位這些動作,那或許就放在onResume,然後在OnPause時停止監聽;但如果你的應用是路徑紀錄了話,那可能就是在按鈕事件裡面註冊,讓使用者決定要開始紀錄的時間。

我比較好奇的是,不是用getLastKnownLocation()取位置,那是用甚麼?

阿槌 提到...

我是利用這一篇來抓取第一次GPS資料的位置
http://www.dotblogs.com.tw/alonstar/archive/2011/05/26/26282.aspx

阿槌 提到...

不好意思 大哥
我最近在研究反向地理編碼
不知道你聽過這東西嗎 ? !

ola的家 提到...

聽過,但是沒有實際做過 @.@

應該是有點類似點坐標,回資料庫環域查詢以後,返回地址或地名的方式吧?(不怎麼確定)

匿名 提到...

是呀 就像你說的
不過我在書上找到相關的程式
直接在模擬器上執行
他卻這麼都跑不出來= =

笨笨貍貓 提到...

你好,我想請教一下你的座標是用哪種方式儲存的?
是存成檔案還是SQLite呢?

ola的家 提到...

你好,我是存在SQLite裡面,跟坐標有關的有兩張表,一張是紀錄一次行程的基本資料,另一張是存X、Y坐標與時間,反正就是一個單純的一對多關聯表格。

匿名 提到...

OLA 您好
請問每個點的紀錄是要自己點選"取得"
他才會將兩點連起來嗎
還是他能自動取得位子(過幾分幾秒發送)
感謝

ola的家 提到...

利用requestLocationUpdates設定minTime與minDistance兩個參數,則會在GPS資料更新時,觸發LocationListener的onLocationChanged事件。

於上述事件可以取得location參數來計算相關資訊。

所以是一邊移動,一邊取得資訊,不需要操作。

匿名 提到...

OlA您好

謝謝您的回覆^^

YUMA 提到...

請問大大:
要如何將手機讀取到的資料(例如座標節點)
,自動 傳輸到sqlite儲存,意思是能自己存儲而不是自己輸入資料儲存

ola的家 提到...

你所謂的"自動",意思是邊移動就邊儲存嗎?

就把將坐標點儲存至SQLite的function在onLocationChanged裡面呼叫就可以了。

這個事件是當位置改變時系統會呼叫的。

YUMA 提到...

恩恩對,我是要當移動時能顯示座標與節點在手機上,且能存進SQLite中;感謝大大的回覆,我再研究看看!

peom Wang 提到...
作者已經移除這則留言。

張貼留言