Autore Topic: Miglior modo per ottenere la propria posizione  (Letto 559 volte)

Offline felasandroid

  • Utente normale
  • ***
  • Post: 345
  • Respect: +10
    • Github
    • balduzziantonio
    • balduzziantonio.unifi
    • Mostra profilo
  • Dispositivo Android:
    Huawei P8 Lite
  • Play Store ID:
    FelasTech
  • Sistema operativo:
    Windows 10
Miglior modo per ottenere la propria posizione
« il: 27 Maggio 2015, 17:45:14 CEST »
0
Ciao a tutti

Ho seguito questa guida per poter ottenere la posizione dell'utente (http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/) ma presenta parecchie lacune e in molte volte non funziona.

Ho letto anche che si può usare direttamente Google Play Services..ora la mia domanda è questa, conviene? e quale è il miglior approccio? creo una classe ad hoc? faccio tutto dentro il Fragment?




Offline arlabs

  • Utente normale
  • ***
  • Post: 434
  • Respect: +49
    • Mostra profilo
  • Dispositivo Android:
    GalaxyS6, Nexus5
  • Play Store ID:
    AR Labs
  • Sistema operativo:
    Windows 10
Re:Miglior modo per ottenere la propria posizione
« Risposta #1 il: 28 Maggio 2015, 09:50:11 CEST »
0
Giusto un confronto a parer mio:

Google Play Services:
PRO
    Posizione ottenuta "fondendo" tutti i dati, non ti devi preoccupare tu di cosa usare (GPS, Wifi, Cella)
    Localizzazione condivisa con tutte le App sul dispositivo (quindi anche con GoogleNow, che la aggiorna periodicamente), quindi:
        - consumi meno batteria
        - Se chiedi la LastPosition è probabilmente abbastanza aggiornata (se ti interessa la posizione approssimata, probabilmente non devi attendere il fixing)
        - Puoi usare il metodo "NoPower", che significa: "io non ho bisogno della posizione, ma se l'aggiorni per qualcun'altro, dillo anche a me"
    Per lo stesso motivo puoi registrarti ad un aggiornamento con un Intent, di modo che la tua App venga "svegliata" e aggiornata con la posizione anche se non è attiva.
    Dagli ultimi PlayServices (7 e qualche cosa), c'è un meccanismo (da implementare) per risolvere i problemi di posizionamento (del tipo, "o pirla di utente, accendi il GPS!"). Vedi SettinsApi e LocationAvailability
CONTRO
    Un minimo di lavoro per verificare che i PlayServices siano aggioranti e per risolvere i problemi.
    Funziona solo sui dispositivi certificati "Google", ti perdi la fetta di mercato degli Android "derivati" come Kindle, NokiaX (RIP), e cellulari cinesi.

Google, ma ovviamente ha interesse a farlo, spinge per i GooglePlayServices.

Ciao

Offline felasandroid

  • Utente normale
  • ***
  • Post: 345
  • Respect: +10
    • Github
    • balduzziantonio
    • balduzziantonio.unifi
    • Mostra profilo
  • Dispositivo Android:
    Huawei P8 Lite
  • Play Store ID:
    FelasTech
  • Sistema operativo:
    Windows 10
Re:Miglior modo per ottenere la propria posizione
« Risposta #2 il: 28 Maggio 2015, 14:58:53 CEST »
0
Giusto un confronto a parer mio:

Google Play Services:
PRO
    Posizione ottenuta "fondendo" tutti i dati, non ti devi preoccupare tu di cosa usare (GPS, Wifi, Cella)
    Localizzazione condivisa con tutte le App sul dispositivo (quindi anche con GoogleNow, che la aggiorna periodicamente), quindi:
        - consumi meno batteria
        - Se chiedi la LastPosition è probabilmente abbastanza aggiornata (se ti interessa la posizione approssimata, probabilmente non devi attendere il fixing)
        - Puoi usare il metodo "NoPower", che significa: "io non ho bisogno della posizione, ma se l'aggiorni per qualcun'altro, dillo anche a me"
    Per lo stesso motivo puoi registrarti ad un aggiornamento con un Intent, di modo che la tua App venga "svegliata" e aggiornata con la posizione anche se non è attiva.
    Dagli ultimi PlayServices (7 e qualche cosa), c'è un meccanismo (da implementare) per risolvere i problemi di posizionamento (del tipo, "o pirla di utente, accendi il GPS!"). Vedi SettinsApi e LocationAvailability
CONTRO
    Un minimo di lavoro per verificare che i PlayServices siano aggioranti e per risolvere i problemi.
    Funziona solo sui dispositivi certificati "Google", ti perdi la fetta di mercato degli Android "derivati" come Kindle, NokiaX (RIP), e cellulari cinesi.

Google, ma ovviamente ha interesse a farlo, spinge per i GooglePlayServices.

Ciao

Grazie sei stati molto chiaro. Una cosa; il miglior modo per utilizzarlo? Fare una classe apposta? Un service?

Offline arlabs

  • Utente normale
  • ***
  • Post: 434
  • Respect: +49
    • Mostra profilo
  • Dispositivo Android:
    GalaxyS6, Nexus5
  • Play Store ID:
    AR Labs
  • Sistema operativo:
    Windows 10
Re:Miglior modo per ottenere la propria posizione
« Risposta #3 il: 28 Maggio 2015, 15:09:50 CEST »
0
Come lo usi dipende da cosa ti serve.
Se ti serve in un Activity mettilo in un Activity.

Metterlo in un Service per contro ti complica la vita perché, per risolvere i problemi serve un activity (per visualizzare dialog all'utente)

Offline felasandroid

  • Utente normale
  • ***
  • Post: 345
  • Respect: +10
    • Github
    • balduzziantonio
    • balduzziantonio.unifi
    • Mostra profilo
  • Dispositivo Android:
    Huawei P8 Lite
  • Play Store ID:
    FelasTech
  • Sistema operativo:
    Windows 10
Re:Miglior modo per ottenere la propria posizione
« Risposta #4 il: 28 Maggio 2015, 16:05:47 CEST »
0
Come lo usi dipende da cosa ti serve.
Se ti serve in un Activity mettilo in un Activity.

Metterlo in un Service per contro ti complica la vita perché, per risolvere i problemi serve un activity (per visualizzare dialog all'utente)

Visto che è la prima vokta che mi cimento in questo se voglio usare il gps in un fragment devo fare delle callback con l activity? E hai qualche guida o tutorial fatto bene?grazie gentilissimo

Offline arlabs

  • Utente normale
  • ***
  • Post: 434
  • Respect: +49
    • Mostra profilo
  • Dispositivo Android:
    GalaxyS6, Nexus5
  • Play Store ID:
    AR Labs
  • Sistema operativo:
    Windows 10
Re:Miglior modo per ottenere la propria posizione
« Risposta #5 il: 28 Maggio 2015, 16:12:33 CEST »
0
Io mi sono accontentato di quello di Google: http://developer.android.com/training/location/index.html

C'è il codice di esempio che funziona. Se cerchi qualcosa di più non saprei aiutarti.
Puoi mettere il tutto tranquillamente in un fragment.