我以为,请求“ 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吗?
答案 0 :(得分:0)
请参阅https://developer.android.com/training/location/retrieve-current
您还必须正确设置权限。请注意,它们在底部描述了为什么位置可能为空的原因,请参阅以下内容进行故障排除。
如果您使用的是模拟器,请参见How to emulate GPS location in the Android Emulator?