每次重置LastKnownLocation

时间:2018-07-06 23:32:20

标签: android openstreetmap osmdroid android-gps

我以为,请求“ lastKnownLocation”将返回一个保存的坐标(GeoPoint),该坐标指向设备的最后一个已知位置(从设备上次访问GPS功能时开始)。

根据某些测试(在OSMDroid的GpsMyLocationProvider上进行的测试),似乎要求该位置返回一个NullPointer

    GpsMyLocationProvider provider = new GpsMyLocationProvider(MainActivity.mainActivity);
    provider.addLocationSource(LocationManager.NETWORK_PROVIDER);
    locationOverlay = new MyLocationNewOverlay(provider, map);

我一直在尝试设置默认的GeoPoint,以便在首次启动地图时将其居中,然后将其重新定位到GPS现在已确定位置的位置。

问题是provider.getLastKnownLocation()返回NullPointer异常,除非给了时间从GPS实际获取当前位置。

我在这里出了什么问题?除非手机从未访问过GPS定位,否则“最后知道的位置”应该不是保存在手机内存中并始终在其中存储的GeoPoint吗?

1 个答案:

答案 0 :(得分:0)

请参阅https://developer.android.com/training/location/retrieve-current

您还必须正确设置权限。请注意,它们在底部描述了为什么位置可能为空的原因,请参阅以下内容进行故障排除。

如果您使用的是模拟器,请参见How to emulate GPS location in the Android Emulator?