2

I use the location.getTime() to get the actual time in the onLocationChanged method. For a test, I have changed the system date from 09.11 to 09.08. When I start the application, in the first 60-70 results the location.getTime() returns the system date. After that, it returns the correct date. Is there any strategy to validate the location 's time?

For logging I use the following code:

@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
}

The results in logcat with GPSTimeCheck tag:

Counter: 1 | Provider: fused | Accuracy: 20.0 | GPS: 2017/8/8 | System: 2017/8/8

Counter: 2 | Provider: fused | Accuracy: 20.0 | GPS: 2017/8/8 | System: 2017/8/8

Counter: 3 | Provider: fused | Accuracy: 20.0 | GPS: 2017/8/8 | System: 2017/8/8

Counter: 4 | Provider: fused | Accuracy: 14.142 | GPS: 2017/8/8 | System: 2017/8/8

Counter: 5 | Provider: fused | Accuracy: 11.547 | GPS: 2017/8/8 | System: 2017/8/8

Counter: 6 | Provider: fused | Accuracy: 10.0 | GPS: 2017/8/8 | System: 2017/8/8

After 70 location changes with Accuracy: 10.0 and with GPS: 2017/8/8 and System: 2017/8/8 dates it returns the correct date with location.getTime()

Counter: 73 | Provider: fused | Accuracy: 10.0 | GPS: 2017/8/11 | System: 2017/8/8

Szilárd
  • 71
  • 3
  • Check [this](https://stackoverflow.com/questions/6181704/good-way-of-getting-the-users-location-in-android) and [How do I get the current GPS location programmatically in Android?](https://stackoverflow.com/questions/1513485/how-do-i-get-the-current-gps-location-programmatically-in-android?rq=1) – StackUseR Sep 11 '17 at 11:05
  • Thanks! I checked them but I get the manipulated date from all location provider, unfortunately. – Szilárd Sep 11 '17 at 11:58

0 Answers0