How to get REAL start time

1. What is the problem? Be very detailed.
Some interviewers change the device time so the default start time option is getting the wrong time.

2. What app or server are you using and on what device and operating system? Include version numbers.
I am using up to date versions on android and the new aggregate version as server

3. What you have you tried to fix the problem?
Searching on forums but no success

4. What steps can we take to reproduce the problem?
There may be different solutions, one may be to get the gps time, or log the time kn the background all the time when dhe device is ON, so you can see when there are time jumps.
5. Anything else we should know or have? If you have a test form or screenshots or logs, attach below.

Welcome to the forum, @Elvi_Web! When you get a chance, please introduce yourself here. I'd also encourage you to add a real picture as your avatar because it helps build community.

We get time from the device clock, so if that clock is wrong, then yes, your start time will be wrong. It sounds like you are interested in catching poorly trained or malicious enumerators?

The best way to do that is with the form audit log. In the audit log, we only use device time for the form start timestamp. All subsequent event timestamps are the result of elapsed time, which users cannot change, added to the form start timestamp.

This means that while the timestamps themselves may potentially be inaccurate, the time elapsed within and between the timestamps are always accurate within one form editing session.

One caveat is that if you don't control and lock down what apps are on the device, then an enterprising enumerator can use a file browser to tamper with that log.

2 Likes

Hi @yanokwa ,
Sorry for the late reply.
Thank you for your solution but I don't think that will solve this problem. Based on my experience in the field, what malicious enumerator do is they do the interviews on paper and they fill the form later. They change the time before starting the form, and they are enough smart to turn of wifi and gps at the time of filling. Based on my knowledge, I think there are 2 ways of fixing this

  1. Get estimated time from the time that the form was downloaded, so that will be the last time that we are sure that the device was connected to the internet.
  2. Get estimated time from the time that the form file was created in android/odk/forms.

Any thoughs?

Your two suggestions are also based on device time and so are still subject to enumerator changes.

The only way to get time independent of the device at some regular frequency is to use GPS time or server time. The former requires GPS and is probably not great for battery life. The latter needs an Internet connection which we don't like requiring because ODK has a lot of offline users.

In my opinion, the simplest solution is to turn on form audit log and tell enumerators you will not pay for submissions that don't have any GPS information. This way, you can compare elapsed time independent of start time across enumerators to look for malicious behavior and you can also check to see where the enumerator was.

1 Like

You may also be interested in an approach to getting satellite time that @jwrozelle shared in Satellite time updater app for ODK. As @yanokwa suggests, you can make it clear in your form design that this value must be included for the submission to be accepted.

If you are interested in the app, I would be happy to give any support that might be helpful. While it does require GPS, and GPS affects battery - it seems not to require as many satellites and can get a sufficient lock for time zone more quickly than an accurate location in my experience.

1 Like

Thank you guys for the answers.
@LN , @jwrozelle Unfortunately in my case it's a bit complicated. The thing is that I don't have full control over tables because they are company property, I don't have permission to install third-party softwares since they are used to collect data, so privacy issues.
So, I would love to find a solution within ODK.
@yanokwa In the meantime, I will try the GPS time version, hopefully I will find a way to active GPS if it's turned off by the enumerator.

Hello @Elvi_Web , did you find a solution for this? I will be very happy to know how you went around. I am facing this same issue where field staff phones are wrongly configured. In the meantime, I think I will go audit as suggested by @yanokwa.

I've just filed a feature request at Add support for GPS-based time. @Derrick_Demeveng could you add more about your specific use-case?