Gal*_*mov 5 gps android android-gps
我有一部已 root 的手机 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
Run Code Online (Sandbox Code Playgroud)
我已经尝试将固件更新到 android 6 和 7。没有任何帮助。
mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 5000, 0, this);
....
public void onLocationChanged(Location location) {
Log.d(TAG, (new Date(location.getTime())).toLocaleString());
}
Run Code Online (Sandbox Code Playgroud)
这与某些类型的 GPS 芯片上出现的GPS 周数翻转问题有关。
解决此问题的一种方法是检测返回的值location.getTime()是否太旧(例如,2019 年之前),如果是,则添加差值(1024 周)。
这段代码应该可以在接下来的 20 年内发挥作用:
long gpsTime = location.getTime();
// Adding 1024 weeks to fix Week Number Rollover issue for old GPS chips
// 619315200000L = 1024 * 7 * 24 * 60 * 60 * 1000 -> means 1024 weeks
// Note: This fix works for next 20 years since provided timestamp below
// See: /sf/ask/3930332451/
// See: https://www.cisa.gov/gps-week-number-roll-over
if ((gpsTime > 0) && (gpsTime < 1673000000000L))
gpsTime += 619315200000L;
Run Code Online (Sandbox Code Playgroud)