2013-01-17 104 views
1

我正在使我的學期項目車輛跟蹤使用Android地圖。我正在尋求一些幫助。我通過短信接收車輛的位置,我想要的是顯示位置或更新地圖,當我得到新的短信。車輛跟蹤使用Android地圖

我想問一下如何在一段時間之後或在新的短信接收後更新地圖。

例如 12.3245678,52.3333333 12.3245689,52.3333334 12.3245680,52.3333335 12.3245682,52.3333336

我知道location.getlangitude()和位置聽者約我認爲它只是使用getlanitude()和getlantitude()的GPS升級地圖trancker和網絡提供商。

但如何手動設置GeoPoint並更新位置偵聽器。或把它作爲如何更新地圖我們有位置數據庫中的數據庫,這也可以幫助我

回答

1
public class SMSNotificationListener extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
    // Here you can extract the intent extra (lat , longs) 
    // Even you can check some message code to identify valid message 
    // Can call some different MapDisplayActivity with lat , longs 
    // in Intent.putExtra(...) 
    } 

} 

添加接收機AndroidManifest -

<receiver android:name=".SMSNotificationListener"> 
    <action android:name="android.provider.Telephony.SMS_RECEIVED"/> 
</receiver> 

現在MapDisplayActivity ---

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_map); 
    mapView = (MapView) findViewById(R.id.mapview); 
    setMaptoProvidedLocation(); 
} 

/** 
* Setting Google Map to provided location 
*/ 
private void setMaptoProvidedLocation() { 
    Intent intent = getIntent(); 
    LAT = intent.getIntExtra(DisplayActivity.LAT, DisplayActivity.DEF_LAT); 
    LNG = intent.getIntExtra(DisplayActivity.LNG, DisplayActivity.DEF_LNG); 

    mapView.setBuiltInZoomControls(true); 
    mapView.setSatellite(true); 
    mapController = mapView.getController(); 


    mapController.setZoom(ZOOM_LEVEL - ZOOM_LEVEL/2); 
    GeoPoint vehicleLocation = new GeoPoint(LAT, LNG); 
    mapController.animateTo(vehicleLocation); 
    // You can also add map overlays ... 

} 

//If MapDisplayActivity is in forground and we want to update the new location 

    @Override 
    public void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 
    setIntent(intent); 
    Log.d("MapActivity","Got new Data again"); 
    setMaptoProvidedLocation(false); 
    } 
+0

@Jain如何每次調用setMaptoProvidedLocation()以在有新消息時動畫地圖?或者它會自己做,因爲我們不使用locationUpdate監聽器。我認爲有些事情可以在onReciver上指導我多一點。 – Nomi

+0

是的,每次需要從MapDisplayActivity中的onnewIntent(Intent intent)函數調用setMaptoProvidedLoction()時。 – Jambaaz

+0

@Jain你能告訴我如何打電話我嘗試過但沒有成功,直到現在..我用Intent服務=新的意圖(上下文,Main.class); context.startService(service); – Nomi

0

好吧,所以你在這裏做了很多事情。

  1. 要攔截短信,您需要聽取這些信息。請參閱:Android – Listen For Incoming SMS Messages

  2. 要使用基於位置數據的標記製作地圖,請使用Google Maps API v.2。請參閱:Google Maps Android API v2這將告訴你所有你需要知道的有關使用位置數據製作標記的地圖。

  3. 如果要以固定的時間間隔從數據庫更新映射,我建議製作一個asynctask或Timer,以期望的固定時間間隔檢查數據庫中的更新。

+0

我做第一2任務只被困在最後一個。我沒有得到我應該如何更新每個。位置監聽器是否正確?或者可以用其他方法完成。如果我檢測到更新如何更新地圖,因爲我現在用control.animateTo(geoPoint)顯示默認點; – Nomi