如何检测location.getTime()是不是正确的时间?

时间:2017-09-11 10:57:13

标签: android date gps timestamp location

我使用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

0 个答案:

没有答案