package citation.query; import javax.microedition.location.AddressInfo; import javax.microedition.location.Criteria; import javax.microedition.location.Location; import javax.microedition.location.LocationException; import javax.microedition.location.LocationProvider; import javax.microedition.location.QualifiedCoordinates; public class GPSLocation { private Location currentLocation; private static int LOCATION_TIMEOUT = 60; public GPSLocation(){ } public void fixCurrentLocation() { Criteria cr = new Criteria(); cr.setAddressInfoRequired(false); cr.setAltitudeRequired(false); cr.setPreferredResponseTime(Criteria.NO_REQUIREMENT); cr.setSpeedAndCourseRequired(false); cr.setCostAllowed(true); 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) { // TODO re throw exception e.printStackTrace(); return; } if (provider != null) { // get and store Location try { currentLocation = provider.getLocation(LOCATION_TIMEOUT); } catch (LocationException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } } public boolean isValid() { return (currentLocation != null && currentLocation.isValid()); } public QualifiedCoordinates getCoordinates() { if (isValid()) { return currentLocation.getQualifiedCoordinates(); } return null; } /** * Get a text based address. * TODO RIM documentation states that textual address info is not yet implemented * Need to backfill with a external lookup (aka google maps api) * * @return null */ public AddressInfo getAddress() { if (isValid()) { return currentLocation.getAddressInfo(); } return null; } }