Autore Topic: Come ottenere latitudine e longitudine dal GPS e/o dalla rete?  (Letto 377 volte)

Offline sismouse

  • Utente junior
  • **
  • Post: 70
  • Respect: 0
    • Mostra profilo
Come ottenere latitudine e longitudine dal GPS e/o dalla rete?
« il: 12 Ottobre 2014, 16:08:50 CEST »
0
Salve, sto sviluppando la mia prima app e ho bisogno di ricavare latitudine e longitudine dalla posizione dell'utente.
Ho creato il seguente metodo all'interno della mia classe, ma non sono sicuro di aver scritto tutto correttamente. Potreste darci uno sguardo e eventualmente correggerlo o darmi qualche suggerimento?

Codice: [Seleziona]
private LocationManager lManager;
private LocationListener lListener;
private Location location;

private void getCoordinates() {
    getCurrentLocation();

    boolean gpsEnabled = lManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
    boolean netEnabled = lManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

    if (!gpsEnabled && !netEnabled && location != null) {
        Builder alarm = new AlertDialog.Builder(this);
        alarm.setTitle("Error");
        alarm.setMessage("Localization OFF").create().show();
    } else if (location != null && (gpsEnabled || netEnabled)) {
        lManager.removeUpdates(lListener);
        lat = String.valueOf(location.getLatitude());
        lon = String.valueOf(location.getLongitude());
    } else {
        Builder alarm = new AlertDialog.Builder(this);
        alarm.setTitle("Error");
        alarm.setMessage("Localization OFF").create().show();
    }
}

private void getCurrentLocation() {     
    lManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);   
    lListener = new LocationListener() {
        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {
        }

        @Override
        public void onProviderEnabled(String provider) {
        }

        @Override
        public void onProviderDisabled(String provider) {
        }

        @Override
        public void onLocationChanged(Location loc) {
            location = loc;
        }
    };

    LocationProvider gpsProvider = lManager.getProvider(LocationManager.GPS_PROVIDER);
    if (gpsProvider != null) {
        boolean gpsEnabled = lManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
        boolean netEnabled = lManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
        if (!gpsEnabled && netEnabled) {
            lManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, lListener);
            location = lManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
        } else if (gpsEnabled) {
            lManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, lListener);
            location = lManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        }   
    } else {
        Builder alarm = new AlertDialog.Builder(this);
        alarm.setTitle("Error");
        alarm.setMessage("GPS provider not supported").create().show();
    }
}