GPSTest uses the GPS_PROVIDER from the original Location API (https://developer.android.com/reference/android/location/LocationManager#GPS_PROVIDER), which will give you a location based on GNSS satellites. The NETWORK_PROVIDER (https://developer.android.com/reference/android/location/LocationManager#NETWORK_PROVIDER) gives you a location based on Wi-Fi or cellular network. Those two sources are available on all Android devices.

For devices with Google Play Services installed, you can also use the "fused" location provider (https://developers.google.com/location-context/fused-location-provider), which uses Google magic to create a new location from the above two sources, plus other sensors like accelerometer and gyroscope. In theory this is the best approach as it's supposed to give you the best accuracy balanced with power consumption, although I haven't recently done analysis on this. Here's a 2019 Google I/O presentation on the fused location provider - https://www.youtube.com/watch?v=MEjFW_tLrFQ.

Finally, you can access raw measurements here and calculate the location yourself, including doing carrier phase measurements:

https://developer.android.com/reference/android/location/GnssMeasurement

Here's some documentation from EU GSA that describes this in detail:

https://www.gsa.europa.eu/system/files/reports/gnss_raw_measurement_web_0.pdf

Improving the world, one byte at a time. @sjbarbeau, https://github.com/barbeau, https://www.linkedin.com/in/seanbarbeau/. I work @CUTRUSF. Posts are my own.

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