I've been playing around with the 8800 for a couple of days now and am having issues with getting a valid GPS position. Currently, I just made a LocationListener class which I setup with my LocationProvider object to run every 60 seconds. The psuedocode for what happens in the locationUpdated function of my class is as follows (based on gpsdemo):

Everything there works, so I haven't got caught up on detail. The problem is that the location.isValid() returns false about 50% of the time. I've got the BB outside on the dash of my car now, screen facing the sky, and I'm getting real data about 25% of the time. Changing the frequency locationUpdate runs to 120 seconds didn't fix anything.

Does anyone have any idea why I can never get a fix? Even if I stand in an open area holding the device in my hand? Should I kill the LocationListener instance each time I am done and use something else for my timing? Should I use the Criteria class instead?

if the gps chip is cold (i.e. not connected to satellites) it can take two or three minutes to acquire a fix. you're interval value+timeout value doesn't accomodate this situation.

one trick you can do to keep the gps chip hot is to drop the interval value to something under 10 seconds. if the gps chip is inactive for 9 seconds, it will disconnect from the satellites. well, at least that was the case for the older 7520s.

your locationprovider implementation will basically ask for cold fixes every minute. either lower the interval to keep the gps chip hot or raise it to allow for cold fixes.