Auto-gps implementation on ODK Collect

Super excited for this feature!

1 Like

Was looking for something like this.

Hi @AlexKaranja

it's not ready yet but it should be added in v1.19 which we want to release at the end of this month.


Hi and thanks for the update. Looking forward to.

How much will we have to wait this feature?

The implementation itself is ready but we are waiting for xforms-spec. @yanokwa will we be able to do that in the upcoming release?

There are different ways to take on this auto-gps problem: in the audit log and in the form itself.

Background GPS in the audit log feature is finished and we are now waiting for changes in pyxform to be merged and released. I'm expecting we'll finish that and the docs for the next release of Collect (ETA Feb 24th).

Background GPS in the form is something we are going to do, but it takes time to do well. I'll update this issue when we have all the pieces in place.

With ODK Collect v1.20 Beta, you can now you track enumerator locations in the audit log. Please try it and offer your feedback in the beta topic.


Collecting the GPS coordinates in the background would be a fantastic feature added to ODK. Thanks for the work on adding the GPS capture to the audit log. Looking forward to the next release!


Thanks to all who have shared their ideas and needs on this thread and particularly to @Raghu_Mittal for the initial feature description.

ODK Collect v1.23 beta 1 was just released and includes a beta implementation of the feature. Please help us improve it by trying it! You can join the beta as described in this post and there is a test form available from the default server. This form will collect your location in the background and ask you about the properties of your location (indoors, city, etc).

As @Raghu_Mittal described, there are tradeoffs between location accuracy and battery consumption to consider. The current implementation leverages Android's fused location provider to balance the two. For each point that is collected, there is a 20 second timeout period. The data you collect with the sample form will guide whether changes need to be made to those decisions.

It is possible to collect background location not only when a form is opened but also when a particular value in the form changes. XLSForm support is not yet available but will be soon (see XLSForm spec proposal: auto-location type for background location capture with setlocation action).


Great Feature
Working very well
I am thankful to anyone who has done this thing


@LN tested auto GPS capturing features and it's working fine.


Hi all,
just a short follow-up: I saw hat this great feature is now implemented in v1.23 .
Unfortunately, even after reading all the previous threads/posts about it, I can't find any documentation about how to implement it (question type and other parameters to set). Are the docs still pending? Can we have any hint?
thanks in advance for the great job you're doing!

1 Like


Thank you so much for the nudge, @spono, and for sharing the documentation, @aurdipas! XLSForm Online was recently updated to add support so it is now possible to automatically collect a single point in the background when a form is first launched!

There is also XML support for capturing location in the background on value change or when a repeat is added. Hopefully we can bring this to XLSForm in the future.

Thanks to everyone who tried the feature during the beta period. We've done our best to configure the location capture to balance battery use and accuracy in lots of different environments. As a reminder, if the device is unable to capture location for any reason at all, the location value will be left blank.

Please try it out and let us know how it performs for your use case. It would be very helpful to get feedback on the following:

  • What kind of environment are you in (dense urban, suburban, rural, wifi available, cell available...)
  • What kinds of accuracy radius readings you are getting
  • How frequently you are getting blank readings

many thanks @LN and @aurdipas!

Just few noob questions but I need some clarifications:

  1. to change the behaviour of start-geopoint shall I use a parameter setting like for audit (e.g. location-priority=balanced location-min-interval=60 location-max-age=120)? or maybe couple it adding audit first as well? or am I completely missing the point?
  2. geopoint stops recording when a certain accuracy is reached (and this could save time in case the location is superquick). How does this apply to start-geopoint? It seems it is based more on time than accuracy.
  3. couldn't it be an idea that, if I set the required field to yes, the GPS turn-off time is automatically switched to a higher value (obviously at battery expenses)?

BTW, in the next months I'll be able to test it in different areas (from suburban to mountainous areas) mostly covered by cell only: I'll let you know how it works.

start-geopoint is not currently configurable. The hope is to make it as easy to use as possible. In our testing in different environments, attempting for 20 seconds and using the highest-accuracy point available gave a good balance between getting points with a high accuracy radius and limiting battery usage. Please do try it in different environments and report back on your experience.

The audit location tracking is on during an entire form-filling session which is why it provides more configurability. Since geopoint blocks the enumerator, it offers the possibility to automatically select a point once a particular accuracy radius is reached to limit user error and the length of time the enumerator is blocked.

Is it posible to include in Collect v1.24 Beta an alert when GPS is off? similar we currently have with geopoint widget?

Currently start-geopoint does not prevent if GPS sensor is off.

@Alexander_Torrado could you please say more about your scenario? Is location off because the enumerator has deliberately turned it off from settings? Why did they turn it off? What kind of alert do you expect?

Because this is a background feature, we want to minimize how disruptive it is to the form-filling flow. For that reason, I don't think it would be appropriate to display a dialog that blocks form entry. Additionally, when designing this feature, we got the feedback that there are legitimate reasons that an enumerator may need to turn off location including low battery and safety in certain contested geographic locations.

As described in the documentation, if location is available and is requested, a location icon will appear in the device status bar for 20s. That icon will not appear if location is turned off in settings. Could you perhaps train your enumerators to look for that icon and know that if they don't see it, they need to change their settings?

Hi @LN.

Simple scenario: Enumerator forgot to turn on GPS, so all work could be lost.

An alert (warning) that would be as a "poka yoke".

Using comment about feedback that "there are legitimate reasons that an enumerator may need to turn off location including low battery and safety in certain contested geographic locations"..It could happen that enumerator got battery full but still forget to turn on GPS.