Android gps getlastknownlocation返回空指针异常

时间:2014-07-03 18:54:38

标签: android networking gps geolocation latitude-longitude

在我的活动中,我需要使用gps获取手机的当前位置。我使用了以下代码:

Location gpslocation;
LocationManager lmanager=(LocationManager)getSystemService(Context.LOCATION_SERVICE);
gpslocation= lmanager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

//error in the next line as follows java.lang.nullpointerexception

gpslatitude=gpslocation.getLatitude();
gpslongitude=gpslocation.getLongitude();

我知道getlastknownlocation将获取修复gps的最后位置。在这种情况下,getlastknownlocation返回一个空指针。这就是为什么异常出现并且我的app力量关闭的原因。另外我知道还有另一种使用onlocationchanged来获取gps坐标的方法。但为了使其工作,设备必须处于移动状态一段距离。因为在我的应用程序中我想以固定的方式获取gps坐标,有没有其他方法可以在android中使用gps获取gps坐标。

我不想使用网络提供商,因为它只会提供与我当前位置的实际位置相距约5公里的地方坐标。因此,我不鼓励在我的应用中使用网络位置。因为5公里的距离对我来说不是一个可接受的范围。有没有其他方法可以使用代码修复gps坐标。当使用lastknownlocation时,会向我提取我的应用程序的解决方案。

1 个答案:

答案 0 :(得分:1)

有些设备不支持getLastKnownLocation(例如我的Motorola XT720)。您必须实现LocationListener并将onLocationChanged中的位置更新保存到数据库或共享首选项中。当getLastKnownLocation为null时,使用该保存的位置。

编辑: 这种方法的主要问题是,当用户移动很多时,它并不准确。另一个解决方案是写一个服务女巫火灾,例如每小时一次的位置管理员,保存结果,然后您将拥有您的最后位置"在旧设备上每小时更新一次。