First of all, I'm a developer of SpeedView, a GPS speedometer for Android, so you can trust me when I say that we tried every possible solution to this problem, all with the same negative result. Let's start by reiterating what doesn work:
1.onStatusChanged() doesn't get called on Eclair and Froyo. It does get called on 1.6 though.
2.Simply counting all available satellites is, of course, useless.
3.Checking if any of the satellites returns true for usedInFix() isn't very helpful also. The system apparently loses the fix but still continue to report that there are several sats that are used in it.
So, the only working solution wet have, and the one we actuall use in our application, is the following
....