2

我正在使用 Android 地图制作我的学期项目车辆跟踪。我正在寻求帮助。我通过短信从车辆接收位置,我想要的是在收到新短信时显示位置或更新地图。

我想问一下如何在一段时间后或收到新短信时更新地图。

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

我知道location.getlangitude()和位置列表器,我认为它只使用 getlanitude() 和 getlantitude() 更新地图,用于 GPS 跟踪器和网络提供商。

但是如何手动设置 GeoPoint 并更新位置监听器。或将其视为如何在地图上更新我们在数据库中有位置数据,这也可能对我有帮助

4

2 回答 2

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);
  } 
于 2013-01-17T12:33:27.263 回答
0

好的,所以你在这里做了很多事情。

  1. 要拦截 SMS 消息,您需要监听这些消息。请参阅:Android – 监听传入的 SMS 消息

  2. 要根据位置数据制作带有标记的地图,请使用 google maps api V.2。请参阅:Google Maps Android API v2这将告诉您有关使用位置数据标记制作地图的所有知识。

  3. 如果您想以固定的时间间隔从数据库更新地图,我建议制作一个异步任务或计时器,以在所需的固定时间间隔检查数据库中的更新。

于 2013-01-17T11:14:18.817 回答