After re-reading the summaries for the various dev groups, re-posting
this to android-developers because it's probably a better fit...
I'm encountering what appears to be inconsistencies with how the
distance and time filter settings for the LocationManager are
currently working when I attempt to log the current GPS location in
an
application that I'm writing. The phone that I'm using to log is a
G1
(non-dev phone).
Basically, I'm trying to run a GPS logger as a background service
that
starts when the phone is booted up. The code that loads the Service
seems to work properly so I'm going to provide a snippet of the
actual
GPS logger itself.
---------------------------------------------------------------------------
--------------------------
public class LocationLoggerService extends Service {
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
// setup logging
long maxTime = 360000;
int maxDist = 3;
startLocationUpdates(maxTime, maxDist);
}
public void startLocationUpdates(long maxTime, int maxDist) {
// start location updates
LocationManager lm = (LocationManager)getSystemService
(Service.LOCATION_SERVICE);
LocationListener mLocationListener = new
LocationListener() {
@Override
public void onLocationChanged(Location loc) {
float speed = loc.getSpeed();
double longitude = loc.getLongitude
();
double latitude = loc.getLatitude();
long time = loc.getTime();
time = time / 1000;
try {
*submit stuff goes here*
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onProviderDisabled(String arg0) {
}
@Override
public void onProviderEnabled(String arg0) {
}
@Override
public void onStatusChanged(String arg0, int
arg1, Bundle arg2) {
}
};
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
lm.requestLocationUpdates(lm.getBestProvider(criteria,
true), maxTime, maxDist, mLocationListener);
}
}
---------------------------------------------------------------------------
--------------------------
What I'm expecting to happen with this code is that the
LocationManager either 1) logs a fine (no wi-fi location) location
every half hour or 2) logs a fine location every time the device
moves
2m. This code should only register a point every 30 minutes unless
the device is in motion.
However, I'm finding that it actually does the following:
1) on startup, logs about five points while the device is stationary
and then proceeds to log about every 30 seconds.
2) when the device is in motion, logs sporadically - basically a trip
of around 10-15 kilometers only logged around 72 points, many with
incorrect speed
I think what I'd like is if I could utilize the maxTime and maxDist
settings without the second case occuring (it seems to be constantly
dropping the GPS fix and then trying to re-acquire it, introducing a
lot of error in the process).
Any suggestions on how to solve these issues would be greatly
appreciated.
Thanks!
-b
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---