CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: 4eyes81 con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: elmegio con ben 7 Thanks ricevuti negli ultimi sette giorni
Utente del mese: bluemask con ben 43 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 3 su 3
Discussione:

Problema Google Maps Android API v2

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
    Baby Droid


    Registrato dal
    Jan 2012
    Messaggi
    23

    Ringraziamenti
    0
    Ringraziato 1 volta in 1 Post
    Predefinito

    Problema Google Maps Android API v2

    Ciao ragazzi,
    chiedo il vostro aiuto. sto realizzando un'app che visualizza la mappa di google (com.google.android.maps.v2).
    Ho la necessità di reperire la latitudine e longitudine della mia posizione sull'onLocationChanged.
    Questa è la classe che utilizzo:

    codice:
    import android.app.AlertDialog;
    import android.app.Service;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.location.Location;
    import android.location.LocationListener;
    import android.location.LocationManager;
    import android.os.Bundle;
    import android.os.IBinder;
    import android.provider.Settings;
    import android.util.Log;
    
    public class GPSTracker implements LocationListener {
     
        private final Context mContext;
        boolean isGPSEnabled = false;
        boolean isNetworkEnabled = false;
        boolean canGetLocation = false;
     
        Location location; 
        double latitude; 
        double longitude; 
        private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 1;
        private static final long MIN_TIME_BW_UPDATES = 100; 
        protected LocationManager locationManager;
     
        public GPSTracker(Context context) {
            this.mContext = context;
            getLocation();
        }
     
        public Location getLocation() {
            try {
                locationManager = (LocationManager) mContext
                        .getSystemService(Context.LOCATION_SERVICE);
     
                isGPSEnabled = locationManager
                        .isProviderEnabled(LocationManager.GPS_PROVIDER);
     
                isNetworkEnabled = locationManager
                        .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
     
                if (!isGPSEnabled && !isNetworkEnabled) {
                    // no network provider is enabled
                } else 
                {
                    this.canGetLocation = true;
    
                    if (isNetworkEnabled) 
                    {
                           locationManager.requestLocationUpdates(
                                   LocationManager.NETWORK_PROVIDER,
                                   MIN_TIME_BW_UPDATES,
                                   MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                           Log.d("Network", "Network");
                           if (locationManager != null) {
                               location = locationManager
                                       .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                               if (location != null) {
                                   latitude = location.getLatitude();
                                   longitude = location.getLongitude();
                                   this.onLocationChanged(location);
                               }
                           }
                    	}
    	            
    	            if (isGPSEnabled) {
    	                if (location == null) {
    	                	Log.d("GPS Enabled", "GPS Enabled");
    	                	locationManager.requestLocationUpdates(
    	                            LocationManager.GPS_PROVIDER,
    	                            MIN_TIME_BW_UPDATES,
    	                            MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
    	                	if (locationManager != null) {
    	                        location = locationManager
    	                                .getLastKnownLocation(LocationManager.GPS_PROVIDER);
    	                        if (location != null) {
    	                            latitude = location.getLatitude();
    	                            longitude = location.getLongitude();
    	                            this.onLocationChanged(location);
    	                        }
    	                    }
    	                    
    	                }
    	            }
    	            
    	         
                    
                }
     
            } catch (Exception e) {
                e.printStackTrace();
            }
     
            return location;
        }
         
        public void stopUsingGPS(){
            if(locationManager != null){
                locationManager.removeUpdates(GPSTracker.this);
            }       
        }
    
        public double getLatitude(){
            if(location != null){
                latitude = location.getLatitude();
            }
            return latitude;
        }
         
        public double getLongitude(){
            if(location != null){
                longitude = location.getLongitude();
            }
            return longitude;
        }
    
        public boolean canGetLocation() {
            return this.canGetLocation;
        }
    
        public void showSettingsAlert(){
            AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);
            alertDialog.setTitle("GPS is settings");
            alertDialog.setMessage("GPS is not enabled. Do you want to go to settings menu?");
            alertDialog.setPositiveButton("Settings", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog,int which) {
                    Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                    mContext.startActivity(intent);
                }
            });
            alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();
                }
            });
            alertDialog.show();
        }
     
        @Override
        public void onLocationChanged(Location _location) {
        	location = _location;
        	if (location != null) {
                latitude = location.getLatitude();
                longitude = location.getLongitude();
            }
        }
     
        @Override
        public void onProviderDisabled(String provider) {
        }
     
        @Override
        public void onProviderEnabled(String provider) {
        }
     
        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {
        }
       
        public Location getLastLocation()
        {
        	return location;
        }
    }
    quando provo ad utilizzarla (sia utilizzando la wifi che la connessione dati con gps attivo) effettuo questa chiamata

    codice:
    GPSTracker gps = new GPSTracker(this);
    Location location = gps.getLastLocation();
    la location non è quella attuale, ma ritorna una posizione vecchia.
    Dove sbaglio? come posso risolvere questo problema?
    Grazie del vostro aiuto

  2.  
  3. #2
    Administrator L'avatar di Varioflex


    Registrato dal
    Dec 2012
    Località
    Zêna - Pianeta Genoa
    Messaggi
    26,729
    Smartphone
    Mate 20 Pro

    Ringraziamenti
    2,184
    Ringraziato 7,369 volte in 5,942 Posts
    Predefinito

    ...mah...
    Posterei in sezione SVILUPPARE PER ANDROID.
    Mi sembra più adatta. ..

    Inviato dal mio Galaxy S3..... che usa il Thanks !!!!
    ___________________





    Belin...se ti sono stato di aiuto...clicca sul THANKS!

    In omnia pericula....tasta testicula!!!!

  4. #3
    Administrator L'avatar di Anna


    Registrato dal
    Jun 2011
    Messaggi
    36,924

    Ringraziamenti
    1,959
    Ringraziato 14,518 volte in 9,621 Posts
    Predefinito

    Quote Originariamente inviato da Varioflex Visualizza il messaggio
    ...mah...
    Posterei in sezione SVILUPPARE PER ANDROID.
    Mi sembra più adatta. ..

    Inviato dal mio Galaxy S3..... che usa il Thanks !!!!
    quoto e chiudo
    Sono un clown, e faccio collezione di attimi ....


    Sto guidando. (cit. DIEGUCCIO)

Tag per questa discussione

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