Autore Topic: Listener sul GPS non va  (Letto 995 volte)

Offline tonnuns

  • Utente junior
  • **
  • Post: 81
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    Windows
Listener sul GPS non va
« il: 19 Marzo 2013, 21:58:32 CET »
0
Salve a tutti,
sto tentando di effettuare una elaborazione che mi controlla continuamente in che coordinate mi trovo, ma il mio listener non mi fa mai scattare l' onLocationChanged
Io faccio così:

Codice (Java): [Seleziona]
LocationListener locationListener =new LocationListener(){
                                @Override  
                                  public void onLocationChanged(Location loc) {
                                                elabGPS(loc);
                                  }  

                                  @Override  
                                  public void onProviderDisabled(String provider) {  
                                          // TODO Auto-generated method stub  
                                  }  

                                  @Override  
                                  public void onProviderEnabled(String provider) {  
                                          // TODO Auto-generated method stub  
                                  }  

                                  @Override  
                                  public void onStatusChanged(String provider, int status,   Bundle extras)  
                                  {  
                                          // TODO Auto-generated method stub  
                                  }  
                               
                        };
                        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5, 1,  locationListener);

Ma nell'elabGPS non mi ci va mai, il GPS è attivo , l'ho provato con altri programmi e va!
Dove sbaglio?

Offline crc_error

  • Utente junior
  • **
  • Post: 85
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    LG-P500
  • Sistema operativo:
    Windows 8, Ubuntu 12
Re:Listener sul GPS non va
« Risposta #1 il: 20 Marzo 2013, 09:35:14 CET »
0
Con solo quel codice difficile dire cosa c'è che non va.. Dovresti postare anche la parte dove definisci il location manager..

Hai aggiunto i per messi nel manifest?

Offline tonnuns

  • Utente junior
  • **
  • Post: 81
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    Windows
Re:Listener sul GPS non va
« Risposta #2 il: 20 Marzo 2013, 16:37:13 CET »
0
Ok metto tutto quel che serve:

Codice (Java): [Seleziona]
protected void onCreate(Bundle savedInstanceState) {
               
                super.onCreate(savedInstanceState);
               
                requestWindowFeature(Window.FEATURE_NO_TITLE);
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
           
       
        // Otteniamo il riferimento al LocationManager
        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
       
        activateGPS();
}

protected void activateGPS() {
                if(locationManager.isProviderEnabled("gps")){
                        LocationListener locationListener =new LocationListener(){
                                @Override  
                                  public void onLocationChanged(Location loc) {
                                                elabGPS(loc);
                                  }  

                                  @Override  
                                  public void onProviderDisabled(String provider) {  
                                          // TODO Auto-generated method stub  
                                  }  

                                  @Override  
                                  public void onProviderEnabled(String provider) {  
                                          // TODO Auto-generated method stub  
                                  }  

                                  @Override  
                                  public void onStatusChanged(String provider, int status,   Bundle extras)  
                                  {  
                                          // TODO Auto-generated method stub  
                                  }  
                               
                        };
                        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5, 1,  locationListener);
        }              
}


Mentre nel manifest ho messo:

Codice (Java): [Seleziona]
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_GPS" />
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />

Preciso che nella if(locationManager.isProviderEnabled("gps") ci entra.
Secondo voi dove sbaglio?

Offline crc_error

  • Utente junior
  • **
  • Post: 85
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    LG-P500
  • Sistema operativo:
    Windows 8, Ubuntu 12
Re:Listener sul GPS non va
« Risposta #3 il: 20 Marzo 2013, 16:47:12 CET »
0
A me il tuo codice funziona..

L'app la lanci nell'emulatore o che?

Codice (Java): [Seleziona]
public class MainActivity extends Activity {

        LocationManager locationManager;
       
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
               locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
               
                activateGPS();
               
        }

        protected void activateGPS() {
            if(locationManager.isProviderEnabled("gps")){
                LocationListener locationListener =new LocationListener(){
                        @Override  
                          public void onLocationChanged(Location loc) {
                                Log.i("stato", "stato - lat: " + loc.getLatitude() + " lon: " + loc.getLongitude());
                          }  

                          @Override  
                          public void onProviderDisabled(String provider) {  
                                  // TODO Auto-generated method stub  
                          }  

                          @Override  
                          public void onProviderEnabled(String provider) {  
                                  // TODO Auto-generated method stub  
                          }  

                          @Override  
                          public void onStatusChanged(String provider, int status,   Bundle extras)  
                          {  
                                  // TODO Auto-generated method stub  
                          }  
                       
                };
                locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5, 1,  locationListener);
            }              
        }
}

Offline tonnuns

  • Utente junior
  • **
  • Post: 81
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    Windows
Re:Listener sul GPS non va
« Risposta #4 il: 20 Marzo 2013, 17:10:13 CET »
0
la lancio direttamente sul cellulare.
Cioè ti va dentro l'onLocationChanged?
se ci vai in debug ti ci va?
« Ultima modifica: 20 Marzo 2013, 17:15:18 CET da tonnuns »

Offline crc_error

  • Utente junior
  • **
  • Post: 85
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    LG-P500
  • Sistema operativo:
    Windows 8, Ubuntu 12
Re:Listener sul GPS non va
« Risposta #5 il: 20 Marzo 2013, 17:16:15 CET »
0
si certo col codice che ottengo col codice che ho postato sopra.

In pratica è il tuo con questa chiamata al log invece che al metodo elabGPS(loc ) nel onLocationChanged

Citazione
Log.i("stato", "stato - lat: " + loc.getLatitude() + " lon: " + loc.getLongitude());

questo è il log cat che ottengo quando lancio il codice.

Citazione
03-20 17:12:41.769: I/stato(19862): stato - lat: 45.69597947 lon: 9.2759871
03-20 17:12:42.769: I/stato(19862): stato - lat: 45.69586425 lon: 9.27587743
03-20 17:12:43.769: I/stato(19862): stato - lat: 45.69588716 lon: 9.27589885
03-20 17:12:46.759: I/stato(19862): stato - lat: 45.69590012 lon: 9.27592807
03-20 17:12:49.759: I/stato(19862): stato - lat: 45.69589019 lon: 9.2759187
03-20 17:13:01.779: I/stato(19862): stato - lat: 45.69587954 lon: 9.27591279
03-20 17:13:08.759: I/stato(19862): stato - lat: 45.69586727 lon: 9.27589697


Sicuro che il GPS del telefono sia ok? Hai visibilità del cielo?

Offline tonnuns

  • Utente junior
  • **
  • Post: 81
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    Windows
Re:Listener sul GPS non va
« Risposta #6 il: 20 Marzo 2013, 17:33:42 CET »
0
Ok funziona, è questo gps del cavolo che ci mette un secolo a prendere il segnale, io guardavo un programmino che c'era già installato che mi indicava la mia posizione nella mappa ma probabilmente si ricordava dell'ultima posizione rilevata, allora ho installato un programma apposito e mi sono reso conto che ero ancora senza segnale.
Grazie