I am currently writing an application that receives location data every minute (or other specified amount of time) and thes send it to server.
The problem that I have noticed is: When I use my application connected to power source it works perfectly - sends updates with defined interval. When I use it on battery it sends updates randomly.
For my application I use timer to specify interval of update. This timer runs in Background service. I request updates in timer and remove updates when I receive location. Fragment of my code:
private class mainTask extends TimerTask
{
public void run()
{
toastHandler.sendEmptyMessage(0);
}
}
private final Handler toastHandler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
date = date.getInstance(); //used to set time of update.
if(!GPSupdating)
{
locationManager.requestLocationUpdates("gps", 0, 0, locationListenerGPS);
GPSupdating = true;
}
}
};
My location listener:
LocationListener locationListenerGPS = new LocationListener()
{
public void onLocationChanged(Location updatedLocation)
{
myGPSLocation = updatedLocation;
haveLocationGPS = true;
locationManager.removeUpdates(locationListenerGPS);
GPSupdating = false;
}
public void onStatusChanged(String provider, int status, Bundle extras) {}
public void onProviderEnabled(String provider) {}
public void onProviderDisabled(String provider) {}
};
Do you have any idea why this is not working correctly?