Autore Topic: Codice per ricavare le coordinate GPS  (Letto 1271 volte)

Offline Semola

  • Utente junior
  • **
  • Post: 55
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Nexus 6P
  • Sistema operativo:
    Ubuntu 13.04 on Dell XPS 14
Codice per ricavare le coordinate GPS
« il: 31 Maggio 2013, 20:16:00 CEST »
0
Salve
ho scritto questo codice (grazie anche all'aiuto di google), innanzitutto vorrei sapere se ho usato correttamente in tutto o se ho commesso errori
ecco il codice
Codice (Java): [Seleziona]
private void _getLocation() {
                // Get the location manager
                LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
                Criteria criteria = new Criteria();
                criteria.setAccuracy(Criteria.ACCURACY_FINE);
                String bestProvider = locationManager.getBestProvider(criteria, true);
                location = locationManager.getLastKnownLocation(bestProvider);
                LocationListener loc_listener = new LocationListener() {

                        public void onLocationChanged(Location l) {
                                try {
                                        lat = location.getLatitude();
                                        lon = location.getLongitude();
                                } catch (NullPointerException e) {
                                        lat = -1.0;
                                        lon = -1.0;
                                }
                                Toast.makeText(ActivityDistressNotPersonal.this, lat+";"+lon ,Toast.LENGTH_LONG).show();
                        }

                        public void onProviderEnabled(String p) {}

                        public void onProviderDisabled(String p) {}

                        public void onStatusChanged(String p, int status, Bundle extras) {
                                Toast.makeText(ActivityDistressNotPersonal.this, lat+";"+lon ,Toast.LENGTH_SHORT).show();
                        }
                };
                locationManager.requestLocationUpdates(bestProvider, 0, 0, loc_listener);
                location = locationManager.getLastKnownLocation(bestProvider);
                try {
                        lat = location.getLatitude();
                        lon = location.getLongitude();
                } catch (NullPointerException e) {
                        lat = -1.0;
                        lon = -1.0;
                }
                Log.e(ERROR_LOG, lat+";"+lon);
                Toast.makeText(this, lat+";"+lon ,Toast.LENGTH_SHORT).show();
        }

poi altra cosa, quando esco dall'applicazione non termina la localizzazione ma continuo a vedere i toast che escono e mi cominucano gli spostamenti, mentre vorrei che quando si chiude l'activity smetta di localizzarmi, come si fa questa cosa?
grazie mille a tutti

Offline Garese

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Windows 7
Re:Codice per ricavare le coordinate GPS
« Risposta #1 il: 01 Giugno 2013, 13:24:23 CEST »
0
Alla chiusura dell'activity dovresti "unregistrare" il locationlistener

Inviato dal mio GT-P7500 con Tapatalk 2


Offline Semola

  • Utente junior
  • **
  • Post: 55
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Nexus 6P
  • Sistema operativo:
    Ubuntu 13.04 on Dell XPS 14
Re:Codice per ricavare le coordinate GPS
« Risposta #2 il: 01 Giugno 2013, 14:49:51 CEST »
0
ok un'altra cosa, con il listener si aggiorna continuamente
io invece vorrei che appena trovate le coordinate precise si fermi e me le restituisca ma non ho capito come fare, cioè come capisco che il gps ha agganciato il segnale e le coordinate sono precise?
grazie

Offline Garese

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Windows 7
Re:Codice per ricavare le coordinate GPS
« Risposta #3 il: 02 Giugno 2013, 20:58:08 CEST »
0
Quando la posiziokw viene ottenuta, la prima volta e le seuccessive, viene invocato onLocationChanged.
Potresti provare a terminare la rilevazione all'interno di quel metodo...

Inviato dal mio GT-P7500 con Tapatalk 2


Offline Semola

  • Utente junior
  • **
  • Post: 55
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Nexus 6P
  • Sistema operativo:
    Ubuntu 13.04 on Dell XPS 14
Re:Codice per ricavare le coordinate GPS
« Risposta #4 il: 04 Giugno 2013, 19:58:59 CEST »
0
Quando la posiziokw viene ottenuta, la prima volta e le seuccessive, viene invocato onLocationChanged.
Potresti provare a terminare la rilevazione all'interno di quel metodo...

Inviato dal mio GT-P7500 con Tapatalk 2

ok questa cosa funziona ma
se voglio che quando l'app viene ripresa quando è in pausa, mi faccia di nuovo la localizzazione?

Offline NanoAndroide

  • Utente junior
  • **
  • Post: 63
  • Respect: +3
    • Google+
    • Mostra profilo
    • MeToo
  • Dispositivo Android:
    GT-S5570
  • Play Store ID:
    MeToo
  • Sistema operativo:
    Windows 7
Re:Codice per ricavare le coordinate GPS
« Risposta #5 il: 05 Giugno 2013, 03:46:59 CEST »
0
ok questa cosa funziona ma
se voglio che quando l'app viene ripresa quando è in pausa, mi faccia di nuovo la localizzazione?

Esegui nuovamente _getLocation() in onResume()...  ;-)

Offline Semola

  • Utente junior
  • **
  • Post: 55
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Nexus 6P
  • Sistema operativo:
    Ubuntu 13.04 on Dell XPS 14
Re:Codice per ricavare le coordinate GPS
« Risposta #6 il: 05 Giugno 2013, 07:07:10 CEST »
0
Sì ma la mia schermata estende fragment e non activity
Pke sto usando il pager

Post unito: 05 Giugno 2013, 13:11:10 CEST
mi spiego meglio
ho usato il pager quindi questa "pagina" che ho creato estende fragments e non activity
quello che voglio spiegarmi è, voglio che inizi a localizarmi solo quando sto visualizzando quella scheda, che smetta di localizzare quando chiudo l'app con il tasto back o con la casetta
e che riprenda la localizzazione quando lo riapro
« Ultima modifica: 05 Giugno 2013, 13:11:35 CEST da Semola »

Offline Garese

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Windows 7
Re:Codice per ricavare le coordinate GPS
« Risposta #7 il: 05 Giugno 2013, 19:59:19 CEST »
0
nella onResume del Fragment potresti invocare requestLocationUpdates, riattivando così la localizzazione.

Offline Semola

  • Utente junior
  • **
  • Post: 55
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Nexus 6P
  • Sistema operativo:
    Ubuntu 13.04 on Dell XPS 14
Re:Codice per ricavare le coordinate GPS
« Risposta #8 il: 05 Giugno 2013, 20:17:34 CEST »
0
nella onResume del Fragment potresti invocare requestLocationUpdates, riattivando così la localizzazione.

Faccio un po di prove e vi faccio sapere

Inviato dal mio Nexus 4 con Tapatalk 2



Post unito: 06 Giugno 2013, 10:50:18 CEST
allora questa cosa funziona
ma c'è un inghippo e cioè, ho scritto anche il metodo onPause e OnStop entrambi che tolgono il listener per smettere di localizzare, il problema è che se già è iniziata la localizzazione non smette fin quando non becca il segnale
io invece voglio che all'istante appena viene chiusa o messa in pausa si blocchi la localizzazione un pò  come fà l'app di faccia libro
« Ultima modifica: 06 Giugno 2013, 10:50:18 CEST da Semola, Reason: Merged DoublePost »

Offline NanoAndroide

  • Utente junior
  • **
  • Post: 63
  • Respect: +3
    • Google+
    • Mostra profilo
    • MeToo
  • Dispositivo Android:
    GT-S5570
  • Play Store ID:
    MeToo
  • Sistema operativo:
    Windows 7
Re:Codice per ricavare le coordinate GPS
« Risposta #9 il: 06 Giugno 2013, 22:47:52 CEST »
0
io invece voglio che all'istante appena viene chiusa o messa in pausa si blocchi la localizzazione un pò  come fà l'app di faccia libro

Dunque, non vorrei dire una cavolata perchè è molto che non 'ripasso', ma mi pare che il location listener abbia un timeout. Se lo imposti abbastanza basso, lo cancelli quasi istantaneamente...