Autore Topic: Problemi con la localizzazione  (Letto 1091 volte)

Offline minomic

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: +2
    • Mostra profilo
Problemi con la localizzazione
« il: 02 Agosto 2013, 21:15:09 CEST »
0
Ciao a tutti, per l'app che sto sviluppando avrei bisogno di localizzare il dispositivo. E fin qui nessun problema: si trovano molti esempi sul web.

Questo è il codice che ho usato
Codice (Java): [Seleziona]
        //Method to get the current location
        public static Location getLocation(Context ctx) {
                LocationManager lm = (LocationManager) ctx.getSystemService(Context.LOCATION_SERVICE);
                Criteria criteria = new Criteria();
                criteria.setAccuracy(Criteria.ACCURACY_COARSE);
                List<String> providers = lm.getProviders(criteria, true);
                Location location = null;

                for(int i=0; i<providers.size(); i++) {
                        location = lm.getLastKnownLocation(providers.get(i));
                        if(location != null) {
                                Log.d("Provider", providers.get(i));
                                break;
                        }
                }

                return location;
        }
Il problema è che le coordinate non sono molto accurate (parliamo di quasi 5km di scarto). Da quanto ho intuito si tratta delle coordinate rilevate tramite la cella telefonica. Se sostituisco
Codice (Java): [Seleziona]
ACCURACY_COARSEcon
Codice (Java): [Seleziona]
ACCURACY_FINErileva le coordinate solamente tramite GPS.

Invece ho notato che, con il GPS disattivato, se apro Maps e rilevo la mia posizione questa è molto precisa, probabilmente perchè localizza il punto di accesso wifi di casa mia. Come posso fare per ottenere un risultato simile nella mia app?

Grazie.

Post unito: 03 Agosto 2013, 11:21:51 CEST
Update
Ho provato a farmi stampare la lista dei provider rilevati: se il wifi e il gps sono spenti non ne rileva neanche uno, mentre mi sarei aspettato una localizzazione in base alla cella telefonica alla quale il dispositivo è connesso (sbaglio?)
Se invece attivo il wifi stampa il provider "network". Però non riesco a capire come mai la localizzazione sia così poco accurata mentre quella di Google Maps lo sia molto di più.

Ho anche pensato a un'altra cosa: per verificare la precisione delle coordinate mi faccio stampare latitudine e longitudine e poi le inserisco sulla pagina web di google maps... Può essere un problema di precisione numerica?

Grazie.
« Ultima modifica: 03 Agosto 2013, 11:21:51 CEST da minomic, Reason: Merged DoublePost »

Offline Reinhard

  • Utente junior
  • **
  • Post: 85
  • Respect: +16
    • Google+
    • rspisser
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5 Lollipop 5.1
  • Play Store ID:
    rspisser
  • Sistema operativo:
    Windows 7
Re:Problemi con la localizzazione
« Risposta #1 il: 06 Agosto 2013, 00:03:51 CEST »
0
ciao,

il getLastKnownLocation ti restituisce l'ultimo fix del GPS e questo può essere molto poco accurato (a parte che ti potrebbe rilevare il device in un posto diverso da dove ti trovi).

Per avere una locazione più precisa dovresti comunque richiedere gli aggiornamenti della location.

Ti consiglio di utilizzare le nuove  Google Play Location API (http://developer.android.com/google/play-services/location.html), le ho utilizzate per la mia app e funzionano bene.

Offline minomic

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: +2
    • Mostra profilo
Re:Problemi con la localizzazione
« Risposta #2 il: 06 Agosto 2013, 08:28:36 CEST »
0
Ciao,
sì alla fine avevo risolto: richiedo gli aggiornamenti da ogni provider e di volta in volta tengo la location più accurata (metodo getAccuracy()).