LastKnownLocation 每次都会重置

LastKnownLocation is reset everytime

我原以为请求 "lastKnownLocation" 会 return 一个保存的坐标 (GeoPoint),它指向设备的最后一个已知位置(从它最后一次访问 GPS 功能时起) ).

根据一些测试(在 OSMDroid 的 GpsMyLocationProvider 上进行),似乎请求该位置 returns a NullPointer.

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

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

问题是 provider.getLastKnownLocation() return 是 NullPointer 异常,除非它有时间从 GPS 实际获取当前位置。

我在这里弄错了什么? "last known location" 不应该是保存在 phone 内存中的 GeoPoint 并且总是在那里有东西,除非 phone 从未访问过 GPS 定位吗?

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

您也必须正确设置权限。请注意,在底部他们描述了为什么该位置可能为空,因此请参阅这些以进行故障排除。

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