package citation.query;
import javax.microedition.location.Criteria;
import javax.microedition.location.Location;
import javax.microedition.location.LocationException;
import javax.microedition.location.LocationListener;
import javax.microedition.location.LocationProvider;
import javax.microedition.location.QualifiedCoordinates;
public class GPSLocation {
private Location currentLocation;
private static int UPDATE_INTERVAL = 5;
private static int LOCATION_TIMEOUT = 1;
private static int MAX_AGE = 3;
public GPSLocation(){
}
public void startGPSListener()
{
Criteria cr = new Criteria();
cr.setAddressInfoRequired(false);
cr.setAltitudeRequired(false);
cr.setPreferredResponseTime(Criteria.NO_REQUIREMENT);
cr.setSpeedAndCourseRequired(false);
cr.setCostAllowed(false);
cr.setHorizontalAccuracy(Criteria.NO_REQUIREMENT);
cr.setPreferredPowerConsumption(Criteria.NO_REQUIREMENT);
cr.setVerticalAccuracy(Criteria.NO_REQUIREMENT);
// get provider
LocationProvider provider = null;
try {
provider = LocationProvider.getInstance(cr);
} catch (LocationException e) {
System.out.println("GPSLocation.getLocation Exception: " + e.toString());
return;
}
if (provider != null)
{
provider.setLocationListener(new LocationListenerImpl(), UPDATE_INTERVAL, LOCATION_TIMEOUT, MAX_AGE);
}
}
public boolean isValid()
{
return (currentLocation != null && currentLocation.isValid());
}
public QualifiedCoordinates getCoordinates() {
if (isValid()) {
return currentLocation.getQualifiedCoordinates();
}
return null;
}
/**
* Implementation of the LocationListener interface.
*/
private class LocationListenerImpl implements LocationListener
{
public void locationUpdated(LocationProvider _provider, Location _location)
{
if( _location.isValid() )
{
// update our location position
currentLocation = _location;
}
}
public void providerStateChanged(LocationProvider provider, int newState) {
// TODO Auto-generated method stub
}
}
}