我有一部扎根的手机Samsung N7100(kitkat 4.4.2)。在2019年4月6日之后,我开始获取日期为1999年的位置。
有时位置的日期为2019年,但之后设备停止接收任何位置。
只有adb指令可以提供帮助,但是一段时间后,设备将停止接收任何位置。
settings put secure location_providers_allowed -gps
settings put secure location_providers_allowed +gps
我尝试将固件更新为android 6和7。没有任何帮助。
mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 5000, 0, this);
....
public void onLocationChanged(Location location) {
Log.d(TAG, (new Date(location.getTime())).toLocaleString());
}
答案 0 :(得分:0)
这与某些类型的GPS芯片上出现的GPS Week Number Rollover问题有关。
一种解决方法是,检测到location.getTime()
返回的值太旧(例如,在2019年之前),如果是,则将其相差(1024周)。
此代码应在接下来的20年内起作用:
long gpsTime = location.getTime();
// Adding 1024 weeks for chips with GPS Week Number Rollover issue
// 1024 * 7 * 24 * 60 * 60 * 1000 = 619315200000L
if ((gpsTime > 0) && (gpsTime < 1546300800000L))
gpsTime += 619315200000L;