Autore Topic: Richiesta consigli sulla geolocation.  (Letto 1305 volte)

Offline Mr.Donut

  • Utente junior
  • **
  • Post: 67
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Nexus One, Lg Optimus Chat
  • Sistema operativo:
    Ubuntu 11.04
Richiesta consigli sulla geolocation.
« il: 27 Febbraio 2012, 22:23:08 CET »
0
Salve a tutti, nella mia app vorrei implementare un meccanismo per il quale all'apertura della app venga visualizzata una mappa e un puntatore nel luogo dove si trova l'utente che la sta utilizzando.

[facile] Tutorial GPS e MapView - Android Developers Italia Credo che questo tutorial sia abbastanza vicino al mio scopo, ma volevo sapere le seguenti cose:

1) Posso implementare la stessa cosa in modo che venga rilevata una volta sola la posizione per tutto l'utilizzo della app?

2) Vorrei alcuni chiarimenti su come vengano trovate la latitudine e longitudine.

3) Sull'emulatore si possono inviare latitudine e longitudine solo facendo (Eclipse) open perspective > DDMS > ecc ? C'è un modo migliore per testare la propria app?

Grazie =)

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:Richiesta consigli sulla geolocation.
« Risposta #1 il: 29 Febbraio 2012, 15:04:29 CET »
0
Il modo migliore è sicuramente testarlo su un device fisico. Ovviamente la puoi implementare come vuoi, se vuoi prendere la posizione una sola volta nel location listener una volta avuta la posizione lo invalidi semplicemente

Offline Mr.Donut

  • Utente junior
  • **
  • Post: 67
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Nexus One, Lg Optimus Chat
  • Sistema operativo:
    Ubuntu 11.04
Re:Richiesta consigli sulla geolocation.
« Risposta #2 il: 29 Febbraio 2012, 16:04:29 CET »
0
Il modo migliore è sicuramente testarlo su un device fisico. Ovviamente la puoi implementare come vuoi, se vuoi prendere la posizione una sola volta nel location listener una volta avuta la posizione lo invalidi semplicemente

Ci sto provando anche se non mi è ben chiaro questo argomento... Grazie per la risposta

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:Richiesta consigli sulla geolocation.
« Risposta #3 il: 29 Febbraio 2012, 17:07:28 CET »
0
Guarda semplicemente tu al LocationManager assegnerai un LocationListener dove tu implementerai il metodo onLocationChanged. Quel metodo viene richiamato quando avviene il fix della posizione. Alla fine di quel metodo basta scrivere tuoLocationManager.removeUpdates(this) dove con this si intende il listener appunto. Il nome del metodo è abbastanza chiaro rimuove il listener del gps e quindi non ti aggiorna più la posizione

Offline Mr.Donut

  • Utente junior
  • **
  • Post: 67
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Nexus One, Lg Optimus Chat
  • Sistema operativo:
    Ubuntu 11.04
Re:Richiesta consigli sulla geolocation.
« Risposta #4 il: 29 Febbraio 2012, 17:50:45 CET »
0
Guarda semplicemente tu al LocationManager assegnerai un LocationListener dove tu implementerai il metodo onLocationChanged. Quel metodo viene richiamato quando avviene il fix della posizione. Alla fine di quel metodo basta scrivere tuoLocationManager.removeUpdates(this) dove con this si intende il listener appunto. Il nome del metodo è abbastanza chiaro rimuove il listener del gps e quindi non ti aggiorna più la posizione

Ok ci sono! Grazie =)

Tra l'altro ho un problema che non riesco a risolvere... Quando lancio la app (quella del tutorial) sull'emulatore compaiono solo quadrettini bianchi e nessuna mappa. Se la lancio con la debug key invece funziona correttamente.
Quando provo a lanciarla sul device continuano a comparire solo quadretti bianchi sia con la key che ho creato, sia con la key per il debug. Sapreste spiegarmi il motivo? o.o
Questo modo di rivelare le coordinate avviene solo tramite gps oppure basta avere una connessione wifi attiva?

Grazie


(il log cat)
Codice (Java): [Seleziona]
02-29 16:46:13.760: W/System.err(2118): java.io.IOException: Server returned: 3
02-29 16:46:13.760: W/System.err(2118):         at android_maps_conflict_avoidance.com.google.googlenav.map.BaseTileRequest.readResponseData(BaseTileRequest.java:115)
02-29 16:46:13.770: W/System.err(2118):         at android_maps_conflict_avoidance.com.google.googlenav.map.MapService$MapTileRequest.readResponseData(MapService.java:1473)
02-29 16:46:13.770: W/System.err(2118):         at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.processDataRequest(DataRequestDispatcher.java:1117)
02-29 16:46:13.770: W/System.err(2118):         at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.serviceRequests(DataRequestDispatcher.java:994)
02-29 16:46:13.770: W/System.err(2118):         at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher$DispatcherServer.run(DataRequestDispatcher.java:1702)
02-29 16:46:13.770: W/System.err(2118):         at java.lang.Thread.run(Thread.java:1019)
02-29 16:46:14.040: W/System.err(2118): IOException processing: 26
02-29 16:46:14.040: W/System.err(2118): java.io.IOException: Server returned: 3
02-29 16:46:14.040: W/System.err(2118):         at android_maps_conflict_avoidance.com.google.googlenav.map.BaseTileRequest.readResponseData(BaseTileRequest.java:115)
02-29 16:46:14.040: W/System.err(2118):         at android_maps_conflict_avoidance.com.google.googlenav.map.MapService$MapTileRequest.readResponseData(MapService.java:1473)
02-29 16:46:14.040: W/System.err(2118):         at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.processDataRequest(DataRequestDispatcher.java:1117)
02-29 16:46:14.040: W/System.err(2118):         at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.serviceRequests(DataRequestDispatcher.java:994)
02-29 16:46:14.040: W/System.err(2118):         at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher$DispatcherServer.run(DataRequestDispatcher.java:1702)
02-29 16:46:14.040: W/System.err(2118):         at java.lang.Thread.run(Thread.java:1019)
02-29 16:46:16.120: W/System.err(2118): IOException processing: 26
02-29 16:46:16.120: W/System.err(2118): java.io.IOException: Server returned: 3
02-29 16:46:16.120: W/System.err(2118):         at android_maps_conflict_avoidance.com.google.googlenav.map.BaseTileRequest.readResponseData(BaseTileRequest.java:115)
02-29 16:46:16.120: W/System.err(2118):         at android_maps_conflict_avoidance.com.google.googlenav.map.MapService$MapTileRequest.readResponseData(MapService.java:1473)
02-29 16:46:16.130: W/System.err(2118):         at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.processDataRequest(DataRequestDispatcher.java:1117)
02-29 16:46:16.130: W/System.err(2118):         at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.serviceRequests(DataRequestDispatcher.java:994)
02-29 16:46:16.130: W/System.err(2118):         at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher$DispatcherServer.run(DataRequestDispatcher.java:1702)
02-29 16:46:16.130: W/System.err(2118):         at java.lang.Thread.run(Thread.java:1019)
02-29 16:46:17.590: W/KeyCharacterMap(2118): No keyboard for id 131074
02-29 16:46:17.590: W/KeyCharacterMap(2118): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
02-29 16:46:18.640: W/System.err(2118): java.lang.IllegalStateException: Connection pool shut down.
02-29 16:46:18.650: W/System.err(2118):         at org.apache.http.impl.conn.tsccm.ConnPoolByRoute.getEntryBlocking(ConnPoolByRoute.java:284)
02-29 16:46:18.650: W/System.err(2118):         at org.apache.http.impl.conn.tsccm.ConnPoolByRoute$1.getPoolEntry(ConnPoolByRoute.java:238)
02-29 16:46:18.650: W/System.err(2118):         at org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager$1.getConnection(ThreadSafeClientConnManager.java:175)
02-29 16:46:18.650: W/System.err(2118):         at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:325)
02-29 16:46:18.650: W/System.err(2118):         at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
02-29 16:46:18.650: W/System.err(2118):         at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
02-29 16:46:18.650: W/System.err(2118):         at android_maps_conflict_avoidance.com.google.common.io.android.AndroidHttpClient.execute(AndroidHttpClient.java:246)
02-29 16:46:18.650: W/System.err(2118):         at android_maps_conflict_avoidance.com.google.common.io.android.GoogleHttpClient.executeWithoutRewriting(GoogleHttpClient.java:129)
02-29 16:46:18.660: W/System.err(2118):         at android_maps_conflict_avoidance.com.google.common.io.android.GoogleHttpClient.execute(GoogleHttpClient.java:189)
02-29 16:46:18.660: W/System.err(2118):         at android_maps_conflict_avoidance.com.google.common.io.android.GoogleHttpClient.execute(GoogleHttpClient.java:242)
02-29 16:46:18.660: W/System.err(2118):         at android_maps_conflict_avoidance.com.google.common.io.android.AndroidHttpConnectionFactory$AndroidGoogleHttpConnection.getResponse(AndroidHttpConnectionFactory.java:132)
02-29 16:46:18.660: W/System.err(2118):         at android_maps_conflict_avoidance.com.google.common.io.android.AndroidHttpConnectionFactory$AndroidGoogleHttpConnection.openDataInputStream(AndroidHttpConnectionFactory.java:153)
02-29 16:46:18.660: W/System.err(2118):         at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.serviceRequests(DataRequestDispatcher.java:922)
02-29 16:46:18.660: W/System.err(2118):         at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher$DispatcherServer.run(DataRequestDispatcher.java:1702)
02-29 16:46:18.660: W/System.err(2118):         at java.lang.Thread.run(Thread.java:1019)


Per generare la mia key ho usato i seguenti comandi:
keytool -genkey -v -keystore "nomeApp".keystore -alias "mioNome" -keyalg RSA -keysize 2048 -validity 10000

e per l'md5:
keytool -list -alias "mioNome" -keystore "nomeApp".keystore
« Ultima modifica: 29 Febbraio 2012, 17:53:25 CET da Mr.Donut »

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:Richiesta consigli sulla geolocation.
« Risposta #5 il: 29 Febbraio 2012, 17:59:08 CET »
0
Se ti escono i quadratini bianchi e non la mappa la api key non è corretta, devi calcolarla sia per il tuo certificato che per quello di debug e cambiarlo all'occorrenza. La key deve essere registrata su google anche altrimenti non ti funziona

Offline Mr.Donut

  • Utente junior
  • **
  • Post: 67
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Nexus One, Lg Optimus Chat
  • Sistema operativo:
    Ubuntu 11.04
Re:Richiesta consigli sulla geolocation.
« Risposta #6 il: 29 Febbraio 2012, 18:02:31 CET »
0
Se ti escono i quadratini bianchi e non la mappa la api key non è corretta, devi calcolarla sia per il tuo certificato che per quello di debug e cambiarlo all'occorrenza. La key deve essere registrata su google anche altrimenti non ti funziona

Registrarla su google? Non basta eseguire questi due comandi e poi andare a richiedere la api-key qua Sign Up for the Android Maps API - Android Maps API - Google Code ?

Codice (Java): [Seleziona]
Per generare la mia key ho usato i seguenti comandi:
keytool -genkey -v -keystore "nomeApp".keystore -alias "mioNome" -keyalg RSA -keysize 2048 -validity 10000

e per l'md5:
keytool -list -alias "mioNome" -keystore "nomeApp".keystore

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:Richiesta consigli sulla geolocation.
« Risposta #7 il: 29 Febbraio 2012, 18:03:42 CET »
0
Appunto in quel modo la registri a google :)

Offline Mr.Donut

  • Utente junior
  • **
  • Post: 67
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Nexus One, Lg Optimus Chat
  • Sistema operativo:
    Ubuntu 11.04
Re:Richiesta consigli sulla geolocation.
« Risposta #8 il: 29 Febbraio 2012, 18:07:05 CET »
0
Appunto in quel modo la registri a google :)

Eh però continuano a comparire solo i quadretti e non la mappa :S


EDIT:
Non c'è niente da fare e non ne capisco il motivo! Con la debug key funziona a meraviglia, con tutte le altre che ho provato a generare non funziona per niente! T_T
« Ultima modifica: 29 Febbraio 2012, 18:23:39 CET da Mr.Donut »

Offline qato

  • Nuovo arrivato
  • *
  • Post: 46
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus 5
Re:Richiesta consigli sulla geolocation.
« Risposta #9 il: 07 Marzo 2012, 08:17:49 CET »
0
Se utilizzi il keystore di debug e la relativa chiave che ti ha dato il sito, non devi firmare l'applicazione (anche se non credo te lo faccia fare).
Se invece vuoi firmare l'apk, allora devi usare la key che hai ottenuto dal sito di google

Ciao
PS - Non so se mi sono espresso bene, spero sia comprensibile quello che ho scritto!  :D

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:Richiesta consigli sulla geolocation.
« Risposta #10 il: 07 Marzo 2012, 10:10:45 CET »
0
Il keystore di debug serve per firmare l'app in debug infatti. Lo fa eclipse in automatico

Offline Mr.Donut

  • Utente junior
  • **
  • Post: 67
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Nexus One, Lg Optimus Chat
  • Sistema operativo:
    Ubuntu 11.04
Re:Richiesta consigli sulla geolocation.
« Risposta #11 il: 07 Marzo 2012, 16:38:08 CET »
0
Non so per quale assurdo motivo, ma generando 6 key diverse alla fine ha funzionato... Non ha assolutamente senso, però è andata così...  :-\