1

我想按特定的时间间隔(例如每 30 秒获取一次)获取用户的当前位置,我编写了一个管理此调用操作的服务。按特定时间间隔调用 getLastKnownLocation 是可以的,但每次它都会给我相同的位置信息。我运行应用程序并开始开车,但没有任何改变。

如果我实现 LocationListener 并使用 onLocationChanged,那么即使我将位置管理器设置如下,这次特定的时间间隔也不起作用。

_locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, (1 * 20 * 1000), 1, this); // recall in every 20 seconds or distance between 200 meters

为什么即使我改变了我的位置,我总是得到相同的位置?

4

1 回答 1

0

也许您没有设置任何标准或有一个糟糕的提供者。您是否记得在清单中设置必要的权限?

您可以使用它来请求位置更新:

// Get best providers and set criteria
LocationManager lm;
Criteria crit = new Criteria();
crit.setAccuracy(Criteria.ACCURACY_FINE);
String towers = lm.getBestProvider(crit, false);

// Set provider and update interval
lm.requestLocationUpdates(towers, 5000, 20, this); // minimum 5 seconds, 20 meters

请记住,在 requestLocationUpdates 中设置的时间间隔是最小的,并且不准确。

要获取最后一个已知位置:

LocationManager locationManager = ((LocationManager) getSystemService(Context.LOCATION_SERVICE));
Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

获取经度和纬度:

location.getLatitude();
location.getLongitude(); 

这对我有用。

于 2012-11-14T09:07:56.483 回答