我正在制作我的学期项目使用Android地图进行车辆跟踪。我正在寻求帮助。我通过短信从车辆接收位置我想要的是显示位置或更新地图,当我得到新的短信。
我想问一下如何在一段时间后或在收到新的短信时更新地图。
例如,12.3245678,52.3333333 12.3245689,52.3333334 12.3245680,52.3333335 12.3245682,52.3333336
我知道location.getlangitude()
和位置列表器,我认为它只使用getlanitude()和getlantitude()为GPS传输器和网络提供商更新地图。
但是如何手动设置GeoPoint并更新位置监听器。或者把它作为如何在地图上更新,我们在数据库中有位置数据,也可以帮助我
答案 0 :(得分: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);
}
答案 1 :(得分:0)
好的,所以你在这里做了很多事情。
要拦截短信,您需要侦听这些内容。见:Android – Listen For Incoming SMS Messages
要根据位置数据制作带有标记的地图,请使用google maps api V.2。请参阅:Google Maps Android API v2这将告诉您需要了解的有关使用位置数据制作标记的地图。
如果您想以固定的时间间隔从数据库更新地图,我建议制作一个asynctask或Timer,以所需的固定间隔检查数据库中的更新。