In the recent months we all saw kind of breakthrough in Android Smartphone GNSS receivers: GNSS raw measurements are now accessible, and this is significant since those are the most common form of widely used GNSS receivers.



After reading the materials, there is one important thing that is still unclear for me: We all know that really precise location can be obtained only by using various differential techniques.

My question is about whether or not the raw data capturing relevant fields used for DGPS (I'm not so familiar with what fields exactly in the GNSS raw data usually used for DGPS):

Does those Android devices can receive real time DGPS messages from existing sources?

And if not, is it possible to construct such service?

For example a simple solution: Place a transportable DGPS reference station near the users, and transmit correction messages as a web service/radio to dedicated client application on Android?

Also, does the raw measurement data available on Android, can be stored for later post processing (offline) DGPS correction?

This is relevant in case different raw measurements used for real time/offline, and maybe the available fields in the raw data on Android are only those used in offline.


In short, yes - differential GNSS is now possible on Android, and, as of Android P (on supported devices), real-time kinematic (RTK), or carrier-phase measurements, are also possible.

The May 2018 Google I/O video "How to get one-meter location-accuracy from Android devices (Google I/O '18)" has a really good high-level explanation of the current state on Android as of Oreo, and what's coming that's new in Android P.

The GPS World article Positioning with Android: GNSS observables has a good overview of this topic as well.

The various pieces of data you get from the Android APIs are discussed at 30 min 38 sec: https://youtu.be/vywGgSrGODU?t=30m58s

They are also detailed in the Android GnssMeasurement documentation: https://developer.android.com/reference/android/location/GnssMeasurement.html


The discussion of using reference networks for carrier frequency positioning setup starts at 32 min 31 sec: https://youtu.be/vywGgSrGODU?t=32m31s

The article version of this presentation can be see in the GPS World July 3, 2018 article "How to achieve 1-meter accuracy in Android": http://gpsworld.com/how-to-achieve-1-meter-accuracy-in-android/

If you want a super-deep dive, check out the EU GSA Whitepaper "Using GNSS Raw Measurements on Android Devices" Section 3.4 "Taking It Beyond The Phone - Differential Observations".

All this is possible with single frequency GNSS, although dual-frequency GNSS is now emerging on commercial devices.

And yes, all the necessary data can be save and processed offline. Here are two apps that allow you to log this type of data:

  • Thanks you for the very detailed answer, this is very helpful. However I'm still struggling to understand what is the exact field from the meta data that used for live/offline differential correction. Thanks,
    – michael
    Jun 4 '18 at 18:42
  • 1
    @michael I just added a few more links for pseudorange and accumuldated delta range. Jun 5 '18 at 16:57

So after conducting some research, it seems that besides some common headers, the actual data from the RINEX format that used for post processing DGPS correction is essentially 4 figures per satellite per epoch:

  1. Pseudorange
  2. Carrier phase
  3. Doppler
  4. SNR number

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.