Autore Topic: LocationManager  (Letto 783 volte)

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
LocationManager
« il: 17 Luglio 2011, 11:59:05 CEST »
0
Avete notato che se si usa il LocationManager per la propria posizione, con il GPS ma anche con il Network provider, al momento del cariamento della MapView occorrono circa 4/5 secondi perchè si abbia la posizione ?

Per me è un problema perchè, nel momento in cui si carica la MapView c'è un pulsante che, se premuto, apre un Dialog che si autocompila scrivendo la location. Se l'utente non aspetta quei 4/5 secondi e preme subito il pulsante la location mi torna null e non solo! poi sarà sempre null fino a quando non ricarico la MapView!!

avevo pensato di far apparire il button dopo un countdown che dite ?? avete altre idee ?

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:LocationManager
« Risposta #1 il: 17 Luglio 2011, 12:46:49 CEST »
0
Dato che ci siamo integro anche con questo quesito : in pratica a volte ci vogliono ben più di 5 secondi affinchè ritorni la posizione, anzi, a volte si parla proprio di minuti ! volevo quindi implementare un sistema per far bloccare il rilevamento dopo una 10 di secondi, ma per fare questo dovrei far partire il rilevamento in un thread è bloccarlo dopo 10 secondi ma posso implementare il LocationListener nel thread ?

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:LocationManager
« Risposta #2 il: 17 Luglio 2011, 13:40:07 CEST »
0
Per "integrare" altri quesiti nel post esiste il tasto di Modifica, anche se il trucchetto dell'UP è più allettante, è bene preferire la prima soluzione.

Detto ciò ti consiglio di dare un'occhiata qui : Obtaining User Location | Dev Guide
Peraltro l'uso di locationManager.getLastKnownLocation(locationProvider), è già stato discusso se non erro, o comunque è facilmente identificabile come soluzione alla prima posizione reperibile...(agps)
Per registrare il listener si usa il metodo requestLocationUpdates, per fermare il listener si usa il metodo removeUpdates. Se dopo dieci secondi il listener non fa il suo dovere, hai tutti i mezzi per agire di conseguenza. Non evidenzio nemmeno i link alle API ufficiali di Android, perchè credo che ormai ogni sviluppatore dovrebbe sapere dove andare a cercare.
L'architettura che hai descritto è abbastanza semplice da implementare e le API Android sono più che sufficenti.

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:LocationManager
« Risposta #3 il: 17 Luglio 2011, 15:51:12 CEST »
0
Per "integrare" altri quesiti nel post esiste il tasto di Modifica, anche se il trucchetto dell'UP è più allettante, è bene preferire la prima soluzione.

Detto ciò ti consiglio di dare un'occhiata qui : Obtaining User Location | Dev Guide
Peraltro l'uso di locationManager.getLastKnownLocation(locationProvider), è già stato discusso se non erro, o comunque è facilmente identificabile come soluzione alla prima posizione reperibile...(agps)
Per registrare il listener si usa il metodo requestLocationUpdates, per fermare il listener si usa il metodo removeUpdates. Se dopo dieci secondi il listener non fa il suo dovere, hai tutti i mezzi per agire di conseguenza. Non evidenzio nemmeno i link alle API ufficiali di Android, perchè credo che ormai ogni sviluppatore dovrebbe sapere dove andare a cercare.
L'architettura che hai descritto è abbastanza semplice da implementare e le API Android sono più che sufficenti.

Ciao e grazie per la risposta, ho aggiunto il post perchè pur trattandosi dello stesso argomento sono 2 problemi separati, non per uppare anche perchè avevo appena inserito il topic.

Detto questo, ti volevo dire che getLastKnownLocation non serve ai miei scopi perchè mi darebbe l'ultima posizione rilevata da un provider ma non è detto che io mi trovi sempre in quella posizione quindi otterrei un dato sballato ed inutile.

Per quanto riguarda il LocationListener lo conosco però provandolo ho notato che quando sia la Rete mobile che il Wifi sono disabilitati anche il listener non funziona ed il programma si blocca sul recupero della location quindi ho ovviato facendogli fare anche un controllo sulla connessione oltre che sullo stato dei provider.

ciao