使用服务手动调用getLastKnownLocation

时间:2012-11-14 08:55:20

标签: android gps location locationmanager

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

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

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

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

1 个答案:

答案 0 :(得分: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(); 

这适合我。