I am after a pointer to some information explaining all this. I have a GPS utilising app (being tested on a couple of old HTC Desire phones and a Google Nexus 7), and I notice that - in common with some other apps - GPS location updates can get 'sluggish'. What seems to happen is that the updates (1/sec - this app needs good up to date information) come through OK, but often the lat/long values do not change (when moving around). Interestingly, alt usually does.
After some reading of Stack Overflow, I find 'resetting GPS' with the following code (using permission android.permission.ACCESS_LOCATION_EXTRA_COMMANDS):
Bundle extras = new Bundle();
extras.putBoolean("all", true);
locManager.sendExtraCommand("gps", "delete_aiding_data", extras);
seems to help: there's an initial hiatus in locations, then true updates seem to come through a lot more usefully - until it happens again.
I also read that the following code
Bundle bundle = new Bundle();
locManager.sendExtraCommand("gps", "force_xtra_injection", bundle);
locManager.sendExtraCommand("gps", "force_time_injection", bundle);
may be used to update the A-GPS cached information to get a faster lock (for a short time), but needs a network connection to perform a download. I haven't tried this yet.
The problem I have is that I cannot find anywhere good detailed information on what these commands are, what they do, when they should and should not be used, why it all happens at all etc. There is some, but it is all a bit anecdotal.
What I am really after is being pointed to somewhere that I can read about the background to it all. I would be perfectly happy if it look slightly longer to lock, providing it didn't degrade over time.