2012-01-29 55 views
0

我想知道是否可以創建一個android應用程序,每150個應用程序獲取移動位置並更新我的java web服務器。在Android應用程序獲取位置更新

我想讓android應用程序做的每一步都是爲了更新每個150 mts的詳細信息,而且它並不期待我們服務器的任何響應或確認。

這可以通過與jsp或servlert或任何其他技術進行通信來完成。

甚至在移動車輛時獲取位置詳細信息以及將詳細信息更新到我的Web服務器以維護數據庫中的詳細信息的最佳方法是什麼?

任何人都可以提供任何樣品,並建議最有效的方法做同樣的方法。

回答

1

最好的方法是註冊一個服務,定義一個自定義位置監聽器。在實現中,重載onLocationChanged()並且你可以獲得位置(lat,long)元組,你可以用GET/POST請求更新服務器。看看參考代碼。

@Override 
public void onLocationChanged(Location loc) { 
    loc.getLatitude(); 
    loc.getLongitude(); 
    String Text = "Location : (" + loc.getLatitude() +","+ loc.getLongitude() + ")"; 
} 

隨意問你是否有任何疑問。您可以調整更新請求的頻率。

由於

+0

在位置與服務器的通信中使用Web服務(REST)還是普通的jsp/servlet有什麼區別。如何設置一個對此有幫助的web服務。以及如何調整Web服務的頻率更新。 – 2012-01-29 10:46:11

+0

就是這樣,你在服務器端使用什麼來請求「設備位置改變的事件」,告訴服務器更新設備的位置。我對JSP/Servlet一無所知。要調整頻率,您應該使用算法來查找變化是否顯着。如果您有興趣,我會將該代碼也作爲參考。通過「服務」這個詞,我提到了android服務,而不是一個web服務:http://developer.android.com/reference/android/app/Service.html – 2012-01-29 11:11:50

+0

是please.Can您可以發佈代碼檢查是否與先前記錄的位置相比有重大變化。 – 2012-01-29 11:35:24

0

抓取位置與該頻率可能會耗盡電池的用戶。但無論如何。

編寫foursquare客戶端的Joe Lapenna提供了一個位置類,它提供了理智的邏輯來抓取最準確的位置,給出不同的來源和參數。

http://code.google.com/p/foursquared/source/browse/main/src/com/joelapenna/foursquared/location/BestLocationListener.java

谷歌和Android開發者寫了關於最有效的方式來獲取在這篇博客的位置更新:

http://android-developers.blogspot.com/2011/06/deep-dive-into-location.html

+0

如果電池問題無法解決問題,但無論如何都應該採購每150mts的新位置。那麼我可以採用哪種方法。通常,在Android應用程序中採購手機自己的位置所需的平均最短時間是多少。 – 2012-01-29 10:58:54

0

谷歌提供了完整的源代碼,以便在這樣的應用http://code.google.com/p/mytracks/。該應用程序的主頁位於http://mytracks.appspot.com/。這是開發此類應用程序的一個很好的起點。

該應用程序將您的曲目完整地存儲在您的設備上,並允許導出到SD卡或Google文檔或Google地圖。您可以輕鬆擴展應用程序以將曲目發送到您自己的服務器應用程序。

不要將每一個位置都發送到服務器,因爲這會花費很多資源。當你在服務器上使用Java時,它總是一個servlet。我建議使用REST和其中一個可用的庫。

+0

mytracks專注於獲取手機周圍的地方。如果我可以獲取手機本身的位置並將其傳輸到我的網絡服務器,那就會很有幫助,而且它可以與位置數據一起工作,如測試它是否接收到的位置離預先記錄的位置更近或更遠。我該如何解決這個問題。 – 2012-01-29 11:04:31

+0

不,mytracks會記錄您的曲目並使您能夠上傳或查看曲目。此應用程序包括您所要求的所有技術,並且是學習爲您自己開發基於位置的應用程序的良好起點。 – ChrLipp 2012-01-29 11:40:17