我正在開發一個android手機應用程序,它與json/rest web服務進行通信。我需要定期對服務器進行某些類型的調用以檢查某些信息。 在這種情況下,我可能還需要查詢GPS當前位置。我很難決定使用本地服務,因爲我不太清楚如何處理它們,實際上我需要定期檢索這些數據並相應刷新MapView。 我聽說我可以在服務中使用PendingIntents,將這些數據作爲有效載荷並將它們發送給解包數據並刷新UI的廣播接收器,我還聽說這是一種糟糕的設計方法,因爲廣播接收器旨在用於。 有沒有人有一些有用的提示?設計方法:android和web服務
回答
首先你必須處理谷歌地圖,因爲你會顯示一個地圖視圖。看看這個 Using Google Maps in Android on mobiForge。
其次你需要一個提供gps數據的類。使用消息處理程序獲取位置數據和更新UI非常簡單。這裏有一個例子:
public MyGPS implements LocationListener{
public LocationManager lm = null;
private MainActivity SystemService = null;
//lat, lng
private double mLongitude = 0;
private double mLatitude = 0;
public MyGPS(MainActivity sservice){
this.SystemService = sservice;
this.startLocationService();
}
public void startLocationService(){
this.lm = (LocationManager) this.SystemService.getSystemService(Context.LOCATION_SERVICE);
this.lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 5, this);
}
public void onLocationChanged(Location location) {
location = this.lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
try {
this.mLongitude = location.getLongitude();
this.mLatitude = location.getLatitude();
} catch (NullPointerException e) {
Log.i("Null pointer exception " + mLongitude + "," + mLatitude, null);
}
}
}
在你onCreate方法使這個類的一個實例和LocationListener的開始聽的GPS更新。但是你不能訪問lng和lat,因爲你不知道你的活動是否被設置或爲空。因此,你需要將消息發送到您的主活動時,緯度和經度設定的處理程序:
修改下面的方法:
public void onLocationChanged(Location location) {
location = this.lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
try {
this.mLongitude = location.getLongitude();
this.mLatitude = location.getLatitude();
Message msg = Message.obtain();
msg.what = UPDATE_LOCATION;
this.SystemService.myViewUpdateHandler.sendMessage(msg);
} catch (NullPointerException e) {
Log.i("Null pointer exception " + mLongitude + "," + mLatitude, null);
}
}
在您的主要活動補充一點:
Handler myViewUpdateHandler = new Handler(){
public void handleMessage(Message msg) {
switch (msg.what) {
case UPDATE_LOCATION:
//access lat and lng
}));
}
super.handleMessage(msg);
}
};
由於處理程序處於您的mapactivity中,因此您可以輕鬆地在處理程序本身中更新您的UI。每次gps數據都是可用的,處理程序觸發並接收消息。
開發REST API是一件非常有趣的事情。一個簡單的方法是在Web服務器上有一個php腳本,根據請求返回一些json數據。如果你想開發這樣的服務,這個教程可能會幫助你,link。
謝謝。這有幫助!我所指的數據是其他用戶(不同標準)與WS的位置的json表示。所以我只是想知道在哪裏放置代碼來創建http請求,這可能在這裏,因爲這是一個服務本身或者在一個不同的線程中。通過這種方式,只要我收到位置更新並且同時檢索其他人(使用不同的處理程序進行UI更新),我就可以更新服務器上的位置。否則,這兩個任務將在不同的線程中工作,但我不知道複雜程度。 – urobo 2010-09-23 14:58:16
我找到了一個名爲friend finder的應用程序,這裏是教程,可能對你很有趣,http://www.anddev.org/viewtopic.php?t=93 – 2010-09-23 16:07:45
- 1. Web服務設計
- 2. MVVM服務方法設計
- 3. Wcf服務方法設計
- 4. Web服務 - Web方法和數據庫
- 5. SOA設計,Web服務和OOP
- 6. CXF Web服務設計qestion
- 7. 設計複合web服務
- 8. Android和web服務
- 9. Eclipse Web服務和Android設備
- 10. 從傳統服務WCF:設計方法
- 11. 文件服務器設計方法
- 12. Windows服務 - 高可用性方案和設計方法
- 13. Web服務器和REST方法
- 14. Android和HTTPS Web服務(XmlPullParserException)
- 15. Xampp Web服務器和Android
- 16. Web服務方法參數
- 17. Web服務asp.net POST方法
- 18. 共享Web服務方法
- 19. Web服務主要方法
- 20. 從.NET Web服務方法
- 21. 調試Web服務方法
- 22. Web服務檢索方法
- 23. 設計Web服務由iPhone和Web客戶端
- 24. Web服務調用的Web方法
- 25. 在Web服務中調用Web方法
- 26. ASP.NET設計問題 - Web服務
- 27. ASP.NET與Web服務,NHibernate會話設計
- 28. Web服務控制器設計問題
- 29. 設計建議JMS或Web服務
- 30. web服務認證的設計模式
我會用這個服務。 – fredley 2010-09-23 13:13:48