[G2 and Desire Z Android Development] darkrift2012:
Nearing perfection except for odd GPS behavior

First, I'm very pleased with the fit and finish of the current 10.1 bld 03 - much faster and stable than the 10 test builds in my experience.

However, since jumping to the flinnycm101_vision_02 and flinnycm101_vision_03 builds, several of my GPS-based applications have been reporting erroneous data. While some of the applications correctly report the current speed any variable that is calculated by the application (e.g. avg speed, m/s, ft/s, distance, pace, etc.) is reported at either 8.5x or 10.15x of actual.

I was previously testing the JellyBelly1-beta build and noticed some GPS anomolies however they were on the order of 1.2x - 1.5x which I attributed to some T-Mobile network issues that were occurring at the time. (both GPS and network location services were active at the time leading me to believe some of the drift was caused by the local network problems)

Q: did Google change the GPS libraries in 4.2.x in such a way that would cause a wide range of apps to miscalculate?

Background:

I superwiped and nullified the device between installing jellybelly1, flinnycm101_vision_02 and flinnycm101_vision_03. I also went through the flash dance cycle again and re-flashed flinnycm101_vision_03 to assure that the problem isn't due to a bad flash. Everything else works smoothly.

Over the past 2 days I've run several iterations with each of the listed applications within "GPS + network", "GPS-only" and "network-only" location service scenarios with both Imperial and ISO/metric settings to isolate the root cause.

All applications are the latest versions available from Google Play Store. The apps are broken into two groups;

- Group One correctly reported the current speed while all other variables were shown as 8.5x or 10.15x actual

- Group Two incorrectly displayed all variables including current speed --- current speed was shown as 10.15x of actual

Group One

- Google My Tracks (was the single outlier reporting 8.5x of actual vs 10.15x of all others)

- Waze

- Glympse

Group Two

- Endomondo Pro

- CardioTrainer Pro

- GPS Logger Pro

- Zombies, Run!

**An app that does not directly record GPS data,

GPS Status Pro

, was used as a control app. GPS Status Pro consistently displayed accurate actual speed.

*** A control platform, my son's rooted G2 flashed with CM7.2-stable running the same applications and location service scenarios was used to validate assumptions. All applications reported all variables accurately within a +/-3% margin of error.

**** Some tests were performed by driving a short, known distance route using the built-in BMW GPS unit for baseline reference.

Group One and GPS Status Pro (control app) consistently displayed the correct actual speed (incident) and appear to be using the raw NMEA field for current speed rather than computing it programmatically.

I've captured multiple log files and have begun parsing them however the NMEA sentences appear correct in all logged formats; txt, KML, and GPX. I plan on regression testing the issue using the same debug scenarios used with flinnycm101_vision_03 to further isolate root cause.

As just two examples, on 2012.12.12 our run was recorded by CardioTrainer Pro as covering 56 miles in 38 minutes and a separate run on 2012.12.13 was recorded by Endomondo Pro as covering 57 miles in 42 minutes --- I doubt we were exceeding 40 mph on base runs! Actual distances were 5.6 miles in 38 minutes (6:47/ml @ 8.8 mph) and 5.7 miles in 42 minutes (7:22/ml @ 8.1 mph) respectively.