CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: Steamblade con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: carotix con ben 5 Thanks ricevuti negli ultimi sette giorni
Utente del mese: megthebest con ben 19 Thanks ricevuti nell'ultimo mese

Pagina 1 di 2 12 ultimoultimo
Ultima pagina
Visualizzazione dei risultati da 1 a 10 su 12
Discussione:

GPS Listener

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Senior Droid L'avatar di Cecco


    Registrato dal
    May 2009
    Messaggi
    478
    Smartphone
    Samsung Galaxy Nexus

    Ringraziamenti
    6
    Ringraziato 77 volte in 43 Posts
    Predefinito

    GPS Listener

    Salve ragazzi,
    non so se a qualcuno di voi è mai capitato di affrontare l'utilizzo delle coordinate GPS, ma io ho un problema dal quale non riesco ad uscirne.

    Ho bisogno di tener traccia degli spostamenti di un Android, seguendo le coordinate GPS.
    Inizialmente vedo se il gps è attivato, con:

    codice:
    boolean gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
    Tuttavia, può esserci anche l'eventualità che le coordinate non sia ancora pronte ed allora avrò come Lat/Long i valori Null.
    Mi chiedevo se esiste una sorta di Listener, ad esempio OnGPSCoordinateChanged() che mi consenta di essere "avvisato" ogni qual volta le coordinate siano cambiate.

    Qualcuno ne sa qualcosa a riguardo?
    GynLemon....m'hai fatto venì sete

  2.  
  3. #2
    Senior Droid L'avatar di monossido


    Registrato dal
    Jul 2009
    Località
    Padova
    Messaggi
    332

    Ringraziamenti
    11
    Ringraziato 17 volte in 14 Posts
    Predefinito

    spero di ricordami bene
    hai bisogno di creare un nuovo LocationListener dentro al quale creerai il metodo onLocationChanged che viene chiamato ogni volta che le coordinate gps cambiano
    ma le coordinate gps le tiri fuori proprio da dentro quel metodo non credo abbia senso prenderle da un altra parte

    LocationListener | Android Developers

    il primo esempio che ho trovato ora

    How to get location data (with code samples!) - Droid Forum - Verizon Droid & the Motorola Droid Forum
    www.lorenzobraghetto.com <-blog
    monossido at lorenzobraghetto.com <- jabber/mail
    http://twitter.com/monossido <-twitter

  4. #3
    Senior Droid L'avatar di Cecco


    Registrato dal
    May 2009
    Messaggi
    478
    Smartphone
    Samsung Galaxy Nexus

    Ringraziamenti
    6
    Ringraziato 77 volte in 43 Posts
    Predefinito

    Riesumo questo thread.

    Esiste un modo per "ascoltare" quando il gps viene abilitato dalle impostazioni? Sto scrivendo un programma che parte ogni qual volta il gps viene attivato.
    Per attivato intendo "acceso" anche senza coordinate.

    Chi mi sa aiutare?
    GynLemon....m'hai fatto venì sete

  5. #4
    Senior Droid L'avatar di Azatoth


    Registrato dal
    Apr 2009
    Località
    Misinto (MI)
    Messaggi
    568

    Ringraziamenti
    1
    Ringraziato 38 volte in 28 Posts
    Predefinito

    Quote Originariamente inviato da Cecco Visualizza il messaggio
    Riesumo questo thread.

    Esiste un modo per "ascoltare" quando il gps viene abilitato dalle impostazioni? Sto scrivendo un programma che parte ogni qual volta il gps viene attivato.
    Per attivato intendo "acceso" anche senza coordinate.

    Chi mi sa aiutare?
    prova a guardare questo evento:

    public abstract void onProviderEnabled (String provider)

    del tuo LocationListener.

    Vado ad intuito ma secondo me dovrebbe funzionare se fai una cosa tipo: un servizio che parte al boot che registra il LocationListener del GPS e sta in ascolto sull'evento onProviderEnabled(). In quell'evento chiami startService() del servizio che ascolta OnLocationChanged() e killi il servizio dell'OnProviderEnabler .

    Riferimento:
    LocationManager | Android Developers
    Ultima modifica di Azatoth; 17-05-10 alle 17:48


    Google Nexus One USA
    ROM: CyanogenMod 6.1.1 - Android 2.2.1
    Radio: 5.12.00.08
    Recovery: Clockwork

    Sviluppatore di: Swapper per utenti root | Modus Operandi

    Ecco le mie app Android

  6. #5
    Senior Droid L'avatar di Cecco


    Registrato dal
    May 2009
    Messaggi
    478
    Smartphone
    Samsung Galaxy Nexus

    Ringraziamenti
    6
    Ringraziato 77 volte in 43 Posts
    Predefinito

    Ciao Azatoth, innanzitutto grazie per la tua tempestiva risposta.
    Dunque...
    anche io pensavo quel metodo onProviderEnabled. Infatti appena la mia applicazione è già un service che quando parte istanzia un listener che "ascolta" e mi aspettavo che, attivando il gps manualmente, questa funzione venisse invocata....e invece nisba!
    Allora ho pensato ad un broadcast receiver, del tipo ACTION_PROVIDER_CHANGED, ma anche ascoltando quell'intent non si hanno risultati....

    Mi chiedo come sia possibile....
    GynLemon....m'hai fatto venì sete

  7. #6
    Senior Droid L'avatar di Azatoth


    Registrato dal
    Apr 2009
    Località
    Misinto (MI)
    Messaggi
    568

    Ringraziamenti
    1
    Ringraziato 38 volte in 28 Posts
    Predefinito

    Quote Originariamente inviato da Cecco Visualizza il messaggio
    Mi chiedo come sia possibile....
    Facciamo un'analisi un po' più deep.

    Il LocationListener è stato registrato con il "location manager service" usando il metodo requestLocationUpdates(String, long, float, LocationListener)?

    A questo punto e solo dopo la chiamata a quel metodo, se è disabilitato il GPS viene chiamato "onProviderDisabled" immediatamente.
    Poi appena viene abilitato allora viene chiamato "onProviderEnabled" e nel caso in cui cambia lo stato del GPS viene chiamato "onStatusChange": questo è il caso per esempio in cui entri in una galleria e 'perdi' il segnale... ergo cambia lo stato, oppure potrebbe scattare anche quando cambia il numero di satelliti con cui fai il fix e quindi migliora o peggiora l'accuratezza nel determinare la posizione.

    Puoi metter qui qualche riga del tuo codice in modo da poter capire meglio dov'è il potenziale errore?


    Google Nexus One USA
    ROM: CyanogenMod 6.1.1 - Android 2.2.1
    Radio: 5.12.00.08
    Recovery: Clockwork

    Sviluppatore di: Swapper per utenti root | Modus Operandi

    Ecco le mie app Android

  8. #7
    Senior Droid L'avatar di Cecco


    Registrato dal
    May 2009
    Messaggi
    478
    Smartphone
    Samsung Galaxy Nexus

    Ringraziamenti
    6
    Ringraziato 77 volte in 43 Posts
    Predefinito

    Ma certamente!
    Dunque, alla dichiarazione delle mie variabili ho:

    codice:
    private static LocationManager loc;
    private Listener gpsListener= new Listener () {
    		 
    		public void onGpsStatusChanged(int status) {
    			switch (status) {
    			case GpsStatus.GPS_EVENT_FIRST_FIX:
    				Log.d(TAG, "onGpsStatusChanged First Fix");
    				break;
    			case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
    				Log.d(TAG, "onGpsStatusChanged Satellite");
    				break;
    			case GpsStatus.GPS_EVENT_STARTED:
    				Log.d(TAG, "onGpsStatusChanged Started");
    				break;
    			case GpsStatus.GPS_EVENT_STOPPED:
    				Log.d(TAG, "onGpsStatusChanged Stopped");
    				break;
    	
    			}
    		}
    	};
    
    
        private static LocationListener onLocationChange=new LocationListener() {
            public void onLocationChanged(Location loc) {
                //sets and displays the lat/long when a location is provided
            }
             
            public void onProviderDisabled(String provider) {
            	Log.v(TAG, "onProviderDisabled");
            }
             
            public void onProviderEnabled(String provider) {
            	Log.v(TAG, "onProviderEnabled");
            }
             
            public void onStatusChanged(String provider, int status, Bundle extras) {
            // required for interface, not used
            }
        };
    Successivamente, ho definito:

    codice:
    loc = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);				loc.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,onLocationChange);
    loc.addGpsStatusListener(gpsListener);
    Il problema è che non entra nè in onGpsStatusChanged nè nel LocationListener....dove sbaglio?

    Grazie
    GynLemon....m'hai fatto venì sete

  9. #8
    Senior Droid L'avatar di Azatoth


    Registrato dal
    Apr 2009
    Località
    Misinto (MI)
    Messaggi
    568

    Ringraziamenti
    1
    Ringraziato 38 volte in 28 Posts
    Predefinito

    Ovviamente hai la user-permission nel manifest, vero ?

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCAT ION"/>

    Così a occhio credo che sia tutto corretto, forse i parametri "0" che potrebbero essere impostati ad un valore più umano: metterei 1000 (è in millisecondi) il primo e 1 il secondo.

    Prova a vedere se rileva i cambi di posizione.
    Se li rileva... credo che debba necessariamente rilevare anche gli altri 2 eventi legati ad Enabled e Disabled.

    Faccio qualche prova anche io, ma stasera perchè in ufficio comunque il GPS non prederebbe


    Google Nexus One USA
    ROM: CyanogenMod 6.1.1 - Android 2.2.1
    Radio: 5.12.00.08
    Recovery: Clockwork

    Sviluppatore di: Swapper per utenti root | Modus Operandi

    Ecco le mie app Android

  10. #9
    Baby Droid


    Registrato dal
    Aug 2009
    Messaggi
    45

    Ringraziamenti
    0
    Ringraziato 4 volte in 3 Posts
    Predefinito

    Dopo un po' di tentativi di compra / vendi, provo a dare una mano anche io.

    Qua src/fede/geotagger/LocationUpdater.java at master from fedepaol's geotagger - GitHub c'e' il codice di un wrapperino che ho fatto per la mia applicazioncina (quasi pronta, a breve spero di farla uscire allo scoperto).

    Magari ti puo' essere utile. Sul mio hero funziona.

    Federico

  11. #10
    Senior Droid L'avatar di Azatoth


    Registrato dal
    Apr 2009
    Località
    Misinto (MI)
    Messaggi
    568

    Ringraziamenti
    1
    Ringraziato 38 volte in 28 Posts
    Predefinito

    Quote Originariamente inviato da fedepaol Visualizza il messaggio
    Dopo un po' di tentativi di compra / vendi, provo a dare una mano anche io.

    Qua src/fede/geotagger/LocationUpdater.java at master from fedepaol's geotagger - GitHub c'e' il codice di un wrapperino che ho fatto per la mia applicazioncina (quasi pronta, a breve spero di farla uscire allo scoperto).

    Magari ti puo' essere utile. Sul mio hero funziona.

    Federico
    è probabile che a Cecco manchi la chiamata al getLastKnowLocation(...)


    Google Nexus One USA
    ROM: CyanogenMod 6.1.1 - Android 2.2.1
    Radio: 5.12.00.08
    Recovery: Clockwork

    Sviluppatore di: Swapper per utenti root | Modus Operandi

    Ecco le mie app Android

Pagina 1 di 2 12 ultimoultimo
Ultima pagina

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy