[Tilt, TyTN II, MDA Vario III Android Development] zenity:
The way GPS works is as follows.

In order to know your position on a 2 dimensional plane, you need 2 coordinates, X and Y, however in order to know your position on a 3 dimensional object, you need 3 coordinates, X, Y and Z, what we need to know is our position in a 4 dimensional space, which requires not only X, Y Z and V, so that's a lot of data right there, and to further complicate things, the satellites themselves are in motion, also in 4 dimensions.

Ok if that hasn't messed with your head, consider this, your phone only receives GPS data from the satellites, it does not transmit anything, so how does your phone know where the satellites are? simple, the satellites transmit their position, the time, their velocity and heading, ( actually it's slightly more complicated, but I'm not getting into orbital mechanics, lol).

So in order to be able to fix a position, your phone must download this data from each satellite in view, process and compare it with all the other data in order to get an initial fix.

As if this was not complicated enough, you must also realise that the satellite data is continually transmitting in an updating loop, so if the receiver gets bad data from one sat, it must discard that set and start again.

Once the initial fix is made, it's a simple matter to continually update the devices position, but once the gps is turned off, it may take some time to resynchronise, especially if the user has moved to another location before restarting gps.

To operate with reasonable accuracy, (within a few tens of metres), you must have a good signal from at least 4 satellites, more just refines the accuracy.

So why ten minutes? Well there are a number of factors, weather does play a part, but not as much as some think, typically you will lose lock on the weaker satellites, giving less accuracy.

Surrounding buildings and trees are actually great at blocking GPS signals, so in wooded or built up areas, expect slower fixes, less accuracy, and dropped locks.

Movement, this is actually the biggest problem, if you are in motion during the initial fix period, there is a high probability that your own motion will cause problems, since the gps data may be changing too fast for the device to cope with, which will cause it to continually discard data that may be valid.

All in all, the best practice is to find somewhere stationary, away from buildings and trees, turn on GPS, and just wait for it to lock, it will usually take 5 minutes from cold start, perhaps up to 10 minutes in some cases.

Once the initial fix is established, it takes less time to refix after gps is turned off, since the last data is kept in the device for future reference, (which is why it can take more time to fix if you turn off gps and then move 10K or so before turning it on again).

Winmo has a few advantages over Android for gps, since on WM you can download a 'snapshot' of the satellite data in order to 'jump start' the gps to get a faster fix, that plus cell location and agps make it much faster to get up and running compared to Android on our hardware, which lacks cell location and agps.

What GPS Test does is simply show you a lot more data than you would normally see, satellite positions, signal strengths, number of sats visible, number in use by you. Basically it lets you see that some data is actually being received by your device, how strong the signal is, and if the device has locked to a satellite. I highly recommend getting GPS Test from market if you use gps, used it on WM, and the Android port is just as good, ( I got the paid version, but the free one is excellent too).

Any questions? :D