Autore Topic: Catturare Evento GPS attivato  (Letto 1013 volte)

Offline noodles

  • Utente junior
  • **
  • Post: 130
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Sistema operativo:
    Mac OS X Snow Leopard
Catturare Evento GPS attivato
« il: 25 Febbraio 2011, 12:36:25 CET »
0
Dunque vi spiego il mio dilemma...

La mia app all'avvio verifica se il GPS è abilitato, diventa il mio provider, altrimenti vado di celle. Se sono nel secondo caso e avviene che la rete cellulare cade ovviamente non ricevo più aggiornamenti dal locationlistener. L'utente a questo punto vorrebbe poter avviare il GPS va in home, settings... etc... e attiva il GPS e torna alla mia app.

Problema: c'è un evento che mi dice che il GPS è stato attivato in modo da switchare sul provider GPS?

le callback onProviderDisabled e onProviderEnabled non fanno al caso mio. Queste vengono sollevate solo sul provider sui cui eravamo in quel momento in ascolto, nel mio caso network. In più passando in modalità aereo non vengono nemmeno chiamate...  :-o


Offline noodles

  • Utente junior
  • **
  • Post: 130
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Sistema operativo:
    Mac OS X Snow Leopard
Re:Catturare Evento GPS attivato
« Risposta #1 il: 08 Marzo 2011, 17:21:49 CET »
0
nessuno?

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Catturare Evento GPS attivato
« Risposta #2 il: 08 Marzo 2011, 20:51:56 CET »
0
Non ho controllato se esiste un evento specifico, ma al limite non puoi fare un check dello stato del gps all'onResume?
Postate il LogCat LogCat LogCat LogCat LogCat

Offline noodles

  • Utente junior
  • **
  • Post: 130
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Sistema operativo:
    Mac OS X Snow Leopard
Re:Catturare Evento GPS attivato
« Risposta #3 il: 10 Marzo 2011, 17:03:22 CET »
0
Non ho controllato se esiste un evento specifico, ma al limite non puoi fare un check dello stato del gps all'onResume?

eh non al mio caso... la logica del gps è in un servizio. :-\

Offline Verandi

  • Moderatore
  • Utente normale
  • *****
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Catturare Evento GPS attivato
« Risposta #4 il: 26 Marzo 2011, 02:11:18 CET »
+1

Potresti cambiare un po' la logica dell'applicazione. Tu controlli se il gps provider è abilitato prima di richiedere gli updates, mentre potresti farne a meno.
Potresti provare a partire richiedendo gli updates da Gps.
- Se il gps provider è abilitato viene richiamato il metodo onLocationChanged(...), che è ciò che vuoi.
- Se è disabilitato viene richiamato il metodo onProviderDisabled(String provider). Controlli che la stringa sia quella del gps, a quel punto  richiedi gli updates anche dal network provider. Ti ritrovi ad avere due provider che mandano gli aggiornamenti al listener, ma in realtà il listener riceverà solo quelli del network.
- Se l'utente poi attiva il Gps, viene richiamato il metodo onProviderEnabled(...). Controlli che la stringa sia quella del gps, rimuovi gli updates, e li richiedi solo dal Gps.
E così ad libitum.    :-)

Codice (Java): [Seleziona]
       @Override
        public void onCreate() {
        (...)
        mlocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mListener);
        (...)
        }

        (...)

 LocationListener mListener = new LocationListener() {
       
        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {
        }
       
        @Override
        public void onProviderEnabled(String provider) {

          if (provider == LocationManager.GPS_PROVIDER) {
               mLocationManager.removeUpdates(mListener)
               mlocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mListener);
           }
         
        }
       
        @Override
        public void onProviderDisabled(String provider) {
 
           if (provider == LocationManager.GPS_PROVIDER) {
               mlocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, mListener);
           }

        }
       
        @Override
        public void onLocationChanged(Location location) {
        (...)
        }
    };
(...)

Offline noodles

  • Utente junior
  • **
  • Post: 130
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Sistema operativo:
    Mac OS X Snow Leopard
Re:Catturare Evento GPS attivato
« Risposta #5 il: 27 Aprile 2011, 11:20:14 CEST »
0
avevo dimenticato di segnalare il topic come RISOLTO. La soluzione proposta da Verandi è perfetta.  ;-)