Measuring GNSS accuracy on Android devices

Remember the Simpsons episode where Homer can’t find his Uber because of poor GNSS accuracy?

What is “estimated accuracy”?

Popular GNSS utility apps GPSTest (left), GPS Test (center), and GPS Status & Toolbox (right) all show “accuracy” or “error” values
“Estimated horizontal accuracy” is radius of the transparent circle you see in Google Maps
A visual definition of “estimated horizontal accuracy”
  1. The estimated accuracy (thick black line) isn’t equal to true accuracy (red dashed lines)
  2. By design, about 32% of the time the true accuracy (error) is greater than the estimated accuracy — in other words, the device is underestimating the error

A better way to measure accuracy

The new “Accuracy” feature in GPSTest compares your real position against GNSS-calculated position
A graph is included for both horizontal and vertical error, including estimated accuracy values

Tips, tricks, and caveats

  • Don’t move during the test — your device should remain completely stationary during static accuracy tests for optimal results (See this paper for a methodology for “dynamic” accuracy when the device is moving — maybe a future feature in GPSTest?)
  • Choose your ground truth location carefully — There can be errors in aerial imagery that affect results if you choose your location by tapping on the map. Ideally, you’d go to a surveyed location marker and manually enter the latitude and longitude for that marker (converting to the WGS84 datum first if needed). If you’re in the U.S., see the National Geodetic Survey Survey Marks and Datasheets page for more details on finding a survey marker near you.
  • Altitude must be entered in meters above the WGS84 ellipsoid, NOT meters above mean sea level. Here is a good article describing the difference between these values. See this issue for more details.
  • Horizontal error is measured using the Android Location.distanceTo() function. If you look at the Android source code, this function uses the Vincenty Inverse Formula to calculate the distance between two points (observed and ground truth locations) on the surface of the WGS84 ellipsoid. Vertical error is the simple difference between the observed and ground truth altitude values, and can be positive or negative.
  • “Estimated vertical accuracy” is only available on Android 8.0 and higher. The exact definition is available in the Location.getVerticalAccuracyMeters() documentation.
A survey marker used to precisely identify a location (Source: Wikipedia)





Improving the world, one byte at a time. @sjbarbeau,, I work @CUTRUSF. Posts are my own.

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Sonos users can now double the boom in any room by adding a second Sonos Sub subwoofer

The Pixelbook is a Missed Opportunity for Chrome OS

Asus ROG Zephyrus G14 review: AMD has set the new benchmark for notebook computing

Zuljana 15” Medical All-in-One Used with Lung Ventilation Machine

Re-defining Human in Human-Centred Design

This Tiny Island Is A Global Chipmaking Powerhouse. And it’s Not Taiwan.

The launch of the first marketplace for DNA-powered Apps: Helix

Is this the life, the one you imagined?

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Sean Barbeau

Sean Barbeau

Improving the world, one byte at a time. @sjbarbeau,, I work @CUTRUSF. Posts are my own.

More from Medium

Writing Custom Rules for Android Lint

Realm Relationships: From Mobile to MongoDB Atlas

Let’s do ChromeCast Videos with Android. — Part 4

Notes on Android Dev — Lecture 1 — Why/What/How Android