Autore Topic: recuperare posizione attraverso internet  (Letto 677 volte)

Offline giupardeb

  • Utente junior
  • **
  • Post: 115
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Glaxy Note 4
recuperare posizione attraverso internet
« il: 25 Agosto 2015, 16:22:11 CEST »
0
Buon pomeriggio ragazzi, ho un grosso problema sul recupero delle coordinate attraverso il provider network. Utilizzo queste due istruzioni per controllare il provider:

Codice: [Seleziona]
LocationManager locationManager = (LocationManager) mContext.getSystemService(LOCATION_SERVICE);
flag = locationManager.isProviderEnabled(locationManager.NETWORK_PROVIDER);

la cosa incredibile è che flag è false anche se ho internet acceso. Come è possibile ciò? Spero di risolvere.. grazie mille !

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 596
  • Respect: +133
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:recuperare posizione attraverso internet
« Risposta #1 il: 25 Agosto 2015, 16:41:58 CEST »
0
locationManager.NETWORK_PROVIDER non trova la posizione attraverso internet, ma in base alla rete cellulare (posizione della cella) e/o alla posizione di access-point WiFi (qualora la loro posizione sia nota).
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline giupardeb

  • Utente junior
  • **
  • Post: 115
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Glaxy Note 4
Re:recuperare posizione attraverso internet
« Risposta #2 il: 25 Agosto 2015, 16:51:50 CEST »
0
Ok, ma se accendo il gps, anche se sono al chiuso, riesco successivamente a determinare la.posizione..come mai?

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 596
  • Respect: +133
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:recuperare posizione attraverso internet
« Risposta #3 il: 25 Agosto 2015, 17:08:54 CEST »
0
Dipende da cosa intendi per "accendo il GPS" e da quale applicazione "determina la posizione".

LocationManager.isProviderEnabled indica se il provider specificato (nel tuo caso NETWORK_PROVIDER) è abilitato o no nelle impostazioni del dispositivo.

Citazione
Returns the current enabled/disabled status of the given provider.

If the user has enabled this provider in the Settings menu, true is returned otherwise false is returned

Posso solo supporre che nello "spegnere il GPS" hai disabilitato qualsiasi provider.
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline giupardeb

  • Utente junior
  • **
  • Post: 115
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Glaxy Note 4
Re:recuperare posizione attraverso internet
« Risposta #4 il: 25 Agosto 2015, 17:18:06 CEST »
0
Bene..allora cercherò ancora meglio di chiarire la situazione.  Ho questo listener applicato ad un bottone:

Codice: [Seleziona]
OnClickListener captureListener = new OnClickListener() {
        @Override
        public void onClick(View v) {

            Location location = null;

            if (isOnline() || isGpsConnect()) {
                if (isOnline()) {

                    location = gps.getLocation(LocationManager.NETWORK_PROVIDER);
                }
                else {
                    if (isGpsConnect() && gps.getStatusGps() == 1)
                        location = gps.getLocation(LocationManager.GPS_PROVIDER);
                }

                if (location != null) mCamera.takePicture(shutterCallback, null, mPicture);

                else
                    Toast.makeText(mContext, "Attendi che la posizione sia determinata", Toast.LENGTH_LONG).show();
            } else
                Toast.makeText(mContext, "Devi attendere che lo smartphone sia collegato almeno a internet o che il gps si colleghi.", Toast.LENGTH_LONG).show();
        }
    };

i primi due if vengono soddisfatti.. quindi riesco ad arrivare a questa istruzione:

Codice: [Seleziona]
location = gps.getLocation(LocationManager.NETWORK_PROVIDER);

gps è un oggetto di tipo GpsTracker:

Codice: [Seleziona]
public class GpsTracker extends Service implements LocationListener {

    protected LocationManager locationManager;
    Location location = null;
    private int statusGps = -1;

    private static final long MIN_DISTANCE_FOR_UPDATE = 30;
    private long MIN_TIME_FOR_UPDATE = 1000 * 60 ;

    public GpsTracker(Context context) {
        locationManager = (LocationManager) context
                .getSystemService(LOCATION_SERVICE);
    }

    public Location getLocation(String provider) {

        if (locationManager.isProviderEnabled(provider)) {
            locationManager.requestLocationUpdates(provider,MIN_TIME_FOR_UPDATE, MIN_DISTANCE_FOR_UPDATE, this);
            if (locationManager != null) {
                location = locationManager.getLastKnownLocation(provider);
            }
        }
        return location;
    }

    @Override
    public void onLocationChanged(Location location) {
    }

    @Override
    public void onProviderDisabled(String provider) {
    }

    @Override
    public void onProviderEnabled(String provider) {
    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {

        /* This is called when the GPS status alters */
        switch (status) {
            case LocationProvider.OUT_OF_SERVICE:
                setStatusGps(-1);
                break;

            case LocationProvider.TEMPORARILY_UNAVAILABLE:
                setStatusGps(0);

                break;

            case LocationProvider.AVAILABLE:

                setStatusGps(1);
                MIN_TIME_FOR_UPDATE = 1000 * 60 * 2;
                break;
        }
    }

    @Override
    public IBinder onBind(Intent arg0) {
        return null;
    }

    private void setStatusGps(int status) {
        statusGps = status;
    }

    public int getStatusGps() {
        return statusGps;
    }

}

questo è quello che succede quando premo il bottone. Ora lo spegnimento del gps avviene in maniera manuale dall'utente. Quindi non riesco a capire dove posso aver disabilitato qualsiasi provider. Spero che il codice sia chiaro..

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 596
  • Respect: +133
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:recuperare posizione attraverso internet
« Risposta #5 il: 25 Agosto 2015, 17:33:23 CEST »
0
Ok, ma se accendo il gps, anche se sono al chiuso, riesco successivamente a determinare la.posizione..come mai?

Come dicevo, dipende da cosa intendi "se accendo il GPS", dato che spesso si confonde GPS con geolocalizzazione.

Se hai disattivato la geolocalizzazione, con tutta probabilità hai disabilitato _qualsiasi tipo_ di geolocalizzazione, sia quella GPS che quella tramite Wi-Fi e reti mobili.

Se sei sicuro di aver disabilitato solo l'uso del GPS (di solito la cosa è associata alla _modalità di geolocalizzazione a basso consumo_ ) allora il provider dovrebbe essere disponibile.
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline giupardeb

  • Utente junior
  • **
  • Post: 115
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Glaxy Note 4
Re:recuperare posizione attraverso internet
« Risposta #6 il: 25 Agosto 2015, 18:17:48 CEST »
0

Se sei sicuro di aver disabilitato solo l'uso del GPS (di solito la cosa è associata alla _modalità di geolocalizzazione a basso consumo_ ) allora il provider dovrebbe essere disponibile.

a questo punto non lo so..Cosa potrei fare per capirlo? Ti servono altre informazioni per aiutarmi ?

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 596
  • Respect: +133
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:recuperare posizione attraverso internet
« Risposta #7 il: 25 Agosto 2015, 21:27:40 CEST »
0
Va sulle impostazioni avanzate della geolocalizzazione.

Dovrebbero essere possibili 3 modalità:
  • Alta precizione (GPS + Rete)
  • Basso consumo (Solo rete)
  • Solo dispositivo (Solo GPS)

Scegli quella che vuoi testare.
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline giupardeb

  • Utente junior
  • **
  • Post: 115
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Glaxy Note 4
Re:recuperare posizione attraverso internet
« Risposta #8 il: 25 Agosto 2015, 21:36:07 CEST »
0
okay..però sono obbligato ad attivare il gps, e in tal caso la mia applicazione funziona in tutte e tre le modalità. Se stacco il gps la mia app smette di funzionare.

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 596
  • Respect: +133
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:recuperare posizione attraverso internet
« Risposta #9 il: 25 Agosto 2015, 22:00:51 CEST »
+1
Mi sa che stai di nuovo confondendo geolocalizzazione con GPS.

Guarda gli allegati.
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline giupardeb

  • Utente junior
  • **
  • Post: 115
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Glaxy Note 4
Re:recuperare posizione attraverso internet
« Risposta #10 il: 25 Agosto 2015, 22:11:10 CEST »
0
okay adesso ho capito la differenza..Grazie mille!!!