我使用location.getTime()来获取onLocationChanged方法的实际时间。对于测试,我已将系统日期从09.11更改为09.08。当我启动应用程序时,在前60-70个结果中,location.getTime()返回系统日期。之后,它返回正确的日期。是否有任何策略来验证位置的时间?
对于日志记录,我使用以下代码:
@Override
public void onLocationChanged(Location location) {
Calendar gpsCalendar = Calendar.getInstance();
gpsCalendar.setTimeInMillis(location.getTime());
int gpsYear = gpsCalendar.get(Calendar.YEAR);
int gpsMonth = gpsCalendar.get(Calendar.MONTH);
int gpsDay = gpsCalendar.get(Calendar.DAY_OF_MONTH);
Calendar sysCalendar = Calendar.getInstance();
sysCalendar.setTimeInMillis(System.currentTimeMillis());
int sysYear = sysCalendar.get(Calendar.YEAR);
int sysMonth = sysCalendar.get(Calendar.MONTH);
int sysDay = sysCalendar.get(Calendar.DAY_OF_MONTH);
mLocationCounter++;
Log.i("GPSTimeCheck",
"Counter: " + mLocationCounter +
" | Provider: " + location.getProvider() +
" | Accuracy: " + location.getAccuracy() +
" | GPS: " + gpsYear + "/" + gpsMonth + "/" + gpsDay +
" | System: " + sysYear + "/" + sysMonth + "/" + sysDay
);
//Other cool stuff here
}
使用GPSTimeCheck标记的logcat结果:
计数器:1 |提供者:融合|准确度:20.0 | GPS:2017/8/8 |系统:2017/8/8
计数器:2 |提供者:融合|准确度:20.0 | GPS:2017/8/8 |系统:2017/8/8
计数器:3 |提供者:融合|准确度:20.0 | GPS:2017/8/8 |系统:2017/8/8
计数器:4 |提供者:融合|准确度:14.142 | GPS:2017/8/8 |系统:2017/8/8
计数器:5 |提供者:融合|准确度:11.547 | GPS:2017/8/8 |系统:2017/8/8
专柜:6 |提供者:融合|准确度:10.0 | GPS:2017/8/8 |系统:2017/8/8
使用准确度:10.0 并使用 GPS:2017/8/8 和系统:2017/8/8 日期更改70个位置后它使用location.getTime()
返回正确的日期专柜:73 |提供者:融合|准确度:10.0 | GPS:2017/8/11 |系统:2017/8/8