Autore Topic: Non Cattura Coordinate GPS  (Letto 1213 volte)

Offline mist3r0

  • Nuovo arrivato
  • *
  • Post: 48
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire
Non Cattura Coordinate GPS
« il: 28 Ottobre 2010, 15:26:33 CEST »
0
Ciao Ragazzi, ho un problema con il GPS, praticamente non mi vengono catturate le coordinate (Lat. e Long.)

vi posto il mio codice:

Codice: [Seleziona]
public void onClick(DialogInterface dialog, int which) {
                               
                                LocationManager locmanager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
                                MyLocationListener listener = new MyLocationListener();
                                locmanager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, listener);

                                print( listener.getLatitude() , listener.getLongitude());
}
});

private class MyLocationListener implements LocationListener {
               
                protected double latitude;
                protected double longitude;

                public void onLocationChanged(Location location) {
                       
                        try {
                                if (location != null) {
                                       
                                        latitude= location.getLatitude()*1E6;
                                        longitude = location.getLongitude()*1E6;
                                        ExistLocation(String.valueOf(location.getLatitude()), String.valueOf(location.getLongitude()));

                                }
                        } catch (Exception e) {
                                e.printStackTrace();
                        }

                }
               
               

                public String getLatitude() {
                        return String.valueOf(latitude);
                }



                public String getLongitude() {
                        return String.valueOf(longitude);
                }



                public void onProviderDisabled(String provider) {

                }

                public void onProviderEnabled(String provider) {
                       
                }

                public void onStatusChanged(String provider, int status, Bundle extras) {
                        // TODO Auto-generated method stub
                }
        }


Nel metodo print viene alciato un Toast con qesta stringa "Lat.:"+ latitude + "\n" + "Long.:"+ longitude;

le coordinate sono sempre 0 sia per latitudine che per longitudine!!!

Ho provato anche a far girare il codice sul cellulare, ma il risultato è uguale!!   :'( :'( :'(

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Non Cattura Coordinate GPS
« Risposta #1 il: 28 Ottobre 2010, 16:41:15 CEST »
0
nel punto in cui fai il print non è devvo che abbia già ottenuto la locazione. Il print devi metterlo dentro l'onLocationChange e aspettare un pochino.

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Non Cattura Coordinate GPS
« Risposta #2 il: 28 Ottobre 2010, 17:03:59 CEST »
0
Quoto Ricky`...
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline mist3r0

  • Nuovo arrivato
  • *
  • Post: 48
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire
Re:Non Cattura Coordinate GPS
« Risposta #3 il: 28 Ottobre 2010, 18:19:30 CEST »
0
Il mio problema non è tanto di stampre le coordinate all'interno del metodo onLocationChanged, ma quando di prendere le coordinate che ottendo all'interno di tale medoto per utilizzare dove ho provato a fare la stampa!!

come posso fare? Ho provato in tutti i modi, mettendo dei metodi GET all'interno della classe MyLocationListener per poterli prendere. Ho provato a mettere dei metodi SET dell'altra classe poter settare le coordinate quando le ho, ma niente...  :'(
« Ultima modifica: 28 Ottobre 2010, 18:24:22 CEST da mist3r0 »

Offline teskio

  • Moderatore globale
  • Utente normale
  • *****
  • Post: 387
  • Respect: +118
    • Github
    • Google+
    • Mostra profilo
    • Skullab
  • Dispositivo Android:
    Cubot GT99 / SurfTab Ventos 10.1
  • Play Store ID:
    Skullab Software
  • Sistema operativo:
    windows 7 / ubuntu 12.04
Re:Non Cattura Coordinate GPS
« Risposta #4 il: 28 Ottobre 2010, 19:49:28 CEST »
0
Citazione
Il mio problema non è tanto di stampre le coordinate all'interno del metodo onLocationChanged

Il consiglio di Ricky`era quello di provare a stampare a video le coordinate all'interno dell'onLocationChanged, per testare se effettivamente le coordinate sono state prese dal listener della location e quindi aggiornate. Nel caso risultassero 0 e 0 anche in questo caso, il problema è a monte.

Con location.getProvider() (l'oggetto che riceve il metodo onLocationChanged) ottieni il nome del provider o null ?
Credo che il problema sia proprio che tu stia ricevendo un oggetto location vuoto. Oltretutto il controllo che fai : if (location != null)... non risolve granchè, perchè l'oggetto location viene ricevuto effettivamente, ma il fatto che sia vuoto(con tutti i parametri a 0) non significa che sia nullo !
« Ultima modifica: 28 Ottobre 2010, 19:59:27 CEST da teskio »

Offline ScarfaceIII

  • Utente junior
  • **
  • Post: 112
  • Respect: +13
    • raferalston12
    • Mostra profilo
  • Dispositivo Android:
    Nexus One
  • Sistema operativo:
    GNU/Linux, Ubuntu 10.04 / Windows 7
Re:Non Cattura Coordinate GPS
« Risposta #5 il: 28 Ottobre 2010, 20:18:42 CEST »
0
ciao mistero, non ho capito bene cosa intendessi con l'ultimo post, ma mi accodo a Ricky e JD: la tua print ti da 0 perché le variabili latitude e longitude del listener non sono ancora state istanziate. Non è che appena fai requestLocationUpdates, parte il listener e riceve subito una nuova location. Deve prendere il segnale ecc ecc. Se provassi ad esempio all'interno del listener a dichiararle con inizializzazione: protected double latitude = 15; (per esempio), vedresti il valore con cui hai inizializzato la variabile, eseguendo "print" dove lo esegui tu ora.

Passando a quello che vorresti fare, provo a interpretare il tuo secondo post, se vuoi che al Click di un oggetto vengano utilizzate le coordinate di latitudine e longitudine devi fare un requestLocationUpdate() precedentemente rispetto a dove lo chiami ora, ad esempio in onCreate(), così poi, quando viene clickato l'oggetto, le variabili del listener sono state correttamente settate e vengono stampate (o più in generale sono disponibili per l'uso che ne vuoi fare).
Vorrei aggiungere un suggerimento: non abusare del LocationUpdate e cerca di temporizzarlo in qualche modo per evitare un eccessivo utilizzo della batteria del cellulare.

spero di essere stato utile! ^^

Offline mist3r0

  • Nuovo arrivato
  • *
  • Post: 48
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire
Re:Non Cattura Coordinate GPS
« Risposta #6 il: 28 Ottobre 2010, 20:52:26 CEST »
0
Ciao Scarface, quello che volgio fare io è: dato un bottone, quando si clicca su di esso voglio poter avere le coordite gps della posizione corrente e poterle memorizzare 2 variabili (Latitudine e Longitudine per poterle poi usare all'interno della mia applicazione).

Purtroppo se faccio come dici tu, cioè chiamre requestLocationUpdate() nel metodo create, forse potrebbe andar bene, ma c'è un problema, l'utente potrebbe aprire l'applicazione ora, e cliccare sul bottone tra 2 ore...in quel caso come faccio a temporizzare il requestLocationUpdate()??

Se faccio come dici tu all'interno del metodo onCreate() ho paura di prendere dello coordinate vecchie rispetto ad ora, giusto??...mi pare rischiosa come scelta...


Offline ScarfaceIII

  • Utente junior
  • **
  • Post: 112
  • Respect: +13
    • raferalston12
    • Mostra profilo
  • Dispositivo Android:
    Nexus One
  • Sistema operativo:
    GNU/Linux, Ubuntu 10.04 / Windows 7
Re:Non Cattura Coordinate GPS
« Risposta #7 il: 29 Ottobre 2010, 00:29:47 CEST »
+1
Da quanto leggo, non hai chiaro il funzionamento del Listener: quando tu crei un listener e gli "dici di ascoltare il GPS" con requestLocationUpdate(), esso resterà in ascolto delle notifiche del sensore GPS e automaticamente ti avviserà di cambiamenti nella location riscontrata dal sensore, attraverso il metodo onLocationChanged(). Questa chiamata viene effettuata dal sistema, è intrinseca nell'essenza del Listener: quando "sente" qualcosa, avvisa.
Quindi quello che ti ho suggerito io funziona così:
- creazione listener
- iscrizione listener al GPS
- da ora in poi quando il GPS rileva un cambiamento di località, il listener sarà avvisato e aggiornerà i valori di latitude e longitude che hai messo tu nel listener
- se l'utente clicka il pulsante ed esegui print(), verrano stampate le coordinate più recenti
- se l'utente clicka tra due ore, il listener sarà restato in funzionamento inutilmente per 2 ore, ma al momento del click verranno stampate le coordinate più recenti

per questo ti ho suggerito di "temporizzare" il listener, per settarlo alla corretta precisione, ed evitare sprechi di batteria: più il listener resta acceso, più consuma batteria. Ma per quanto riguarda la tua preoccupazione di coordinate troppo vecchie...no, non sono troppo vecchie, probabilmente sono vecchie di 30 millisecondi, nel caso peggiore, dato che hai messo 0,0 come parametri al requestLocationUpdate.
Per capire meglio quello che intendo, prova a dare un'occhiata qui: Obtaining User Location | Android Developers

Buon nerding!  ;-)
« Ultima modifica: 29 Ottobre 2010, 00:34:23 CEST da ScarfaceIII »