我有一部植根的手机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());
}

最佳答案

这与某些类型的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;

关于android - 2019年4月6日之后从Location.getTime返回的日期错误(周转期),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56147606/

10-09 07:23