LocationManager locationManager = (LocationManager)getApp().getSystemService(Context.LOCATION_SERVICE); //getApp() returns my Application object
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER , 1, 1, this);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1, 1, this);
这是我用来监听的代码。启用GPS后,一切工作正常。但是,如果我禁用GPS并依赖于网络位置,它会给出过时的结果--在本例中,是两天前的结果。我无法让它更新。调用getLastKnownLocation会返回相同的陈旧结果。
Google Maps更新很好,所以我知道这不是硬件/系统配置问题。
我用谷歌搜索了一下,发现有一些人有类似的问题,但没有答案。我尝试将我的项目定位到API level 8 (2.2)和15 (4.0.3)。同样的结果。我的手机运行的是ICS。
我还尝试删除对GPS_PROVIDER的请求,以及在getAllProviders()中包含对所有内容的请求。同样的交易。
你知道为什么NETWORK_PROVIDER没有更新吗?任何帮助都将不胜感激。
(附注:不,我通常使用"1,1“作为我的时间/距离参数;我只是在调试时更改了它。)
编辑:我忘了提一下,是的,isProviderEnabled()返回true。
发布于 2013-05-16 01:52:00
我目前怀疑这是由于在应用程序关闭或活动时未使用removeUpdates(listener)
造成的。我已经确保实现了这一点,并希望它能修复它。我想不出其他的东西了。
--edit--不幸的是,这并没有修复它。
发布于 2013-08-09 20:27:51
如果你正在使用新手机,你必须检查你是否已经接受了谷歌地图应用程序中的所有协议-否则你将不会收到来自NETWORK_PROVIDER的任何更新。
发布于 2013-07-27 22:10:00
1)首先检查您是否拥有上面建议的权限。2)您必须确保您的手机中的互联网工作正常。3)请查找以下代码。
public void getLocationByNetworkProvider()
{
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10000, 10, new LocationListener() {
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
public void onLocationChanged(Location location) {
location.getLatitude(); location.getLongitude();
}
});
}`
https://stackoverflow.com/questions/13594932
复制相似问题