Autore Topic: Problema da latitudine e longitudine a indirizzo  (Letto 1491 volte)

Offline mary2501

  • Utente junior
  • **
  • Post: 70
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc desire hd
  • Sistema operativo:
    mac , windows xp
Problema da latitudine e longitudine a indirizzo
« il: 09 Dicembre 2011, 16:55:14 CET »
0
Ciao!! Sono che ci sono mille altri post su questo argomento.. ma le ho tentate tutte... e non mi funzionano!  :'( ...
Come dice il titolo io ho delle coordinate e devo sapere in che via mi trovo.. vi posto il codice.. :
Codice (Java): [Seleziona]
         static double altitudine=0; //li metto static perchè creo un metodo che li rende ad altre classi
         static double longitudine=0;
public class Principale extends Activity{
        /** Called when the activity is first created. */
       

         
    public void onCreate(Bundle savedInstanceState) {
       
        super.onCreate(savedInstanceState);
        [....]    
 
        locationManager = (LocationManager) this.getSystemService(LOCATION_SERVICE);

        locationManager.addGpsStatusListener(gpsListener);
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1 , 0, myLocListener  );
                                       
                }
     
    private Listener gpsListener= new Listener () {

                 

                public void onGpsStatusChanged(int status) {

                        switch (status) {

                        case GpsStatus.GPS_EVENT_FIRST_FIX:

                                Log.i(TAG, "onGpsStatusChanged First Fix");

                                break;

                        case GpsStatus.GPS_EVENT_SATELLITE_STATUS:

                                Log.i(TAG, "onGpsStatusChanged Satellite");

                                break;

                        case GpsStatus.GPS_EVENT_STARTED:

                                Log.i(TAG, "onGpsStatusChanged Started");

                                break;

                        case GpsStatus.GPS_EVENT_STOPPED:

                                Log.i(TAG, "onGpsStatusChanged Stopped");

                                break;

       

                        }

        }
    };


   


    public LocationListener myLocListener = new LocationListener(){


        public void onLocationChanged(Location location) {
               
                Log.i(TAG, "onLocationChanged");
                altitudine=location.getLatitude();
                longitudine=location.getLongitude();
               
                contatore_minuti++; //incremento il contatore
               
                // CONVERTO LAT E LONG IN INDIRIZZO
                Geocoder gc = new Geocoder(getApplicationContext(), Locale.getDefault());
                try {
                add = "";
                 List<Address> addresses = gc.getFromLocation(altitudine, longitudine, 2);
         Log.i("PRINCIPALE", " address è uguale a " + addresses);

               

            if (addresses.size() > 0)
            {
                  Address address = addresses.get(0);
                  StringBuilder sb = new StringBuilder();
                     sb.append(address.getAddressLine(0) + ", ");
                     sb.append(address.getAddressLine(1));
                     add = sb.toString(); //indirizzo finale
            }
            else
                 add="NON TROVATO ";
           
        } catch (Exception ioe) {
         Log.i("---", "eccez" + ioe.getMessage() );
         ioe.printStackTrace();
       
        }
        }
       
       



        public void onProviderDisabled(String provider) {

                Log.i(TAG, "onProviderDisabled");

               

        }



        public void onProviderEnabled(String provider) {

                Log.i(TAG, "onProviderEnabled");

               

        }



        public void onStatusChanged(String provider, int status, Bundle extras) {

                Log.i(TAG, "onStatusChanged");

               

               

        }

       

};

       

}

Con il log cat noto che addresses mi rende sempre [] ....
Qualcuno sa come risolvere questo problema?

Ecco anche un pezzo del manifest con i permessi
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
     android:versionCode="1"
     android:versionName="1.0">
        <uses-permission android:name="android.permission.INTERNET"></uses-permission>
        <uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
    <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_GPS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
   
Grazie mille
« Ultima modifica: 09 Dicembre 2011, 17:41:13 CET da mary2501 »

Offline Verandi

  • Moderatore
  • Utente normale
  • *****
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Problema da latitudine e longitudine a indirizzo
« Risposta #1 il: 09 Dicembre 2011, 17:37:31 CET »
0
Ciao! Nel codice vedo che un double viene chiamato laltitudine e nel geocoder passi un double di nome altitudine. E' un errore di modifica del codice per incollarlo qui nel forum o sono diversi anche nel codice originale?
Poi io cambierei questo:    Log.i("PRINCIPALE", " address è uguale a " + addresses.size()); in modo da vedere chiaramente quanti ne ritorna.
Lo stai testando nell'emulatore?

Offline mary2501

  • Utente junior
  • **
  • Post: 70
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc desire hd
  • Sistema operativo:
    mac , windows xp
Re:Problema da latitudine e longitudine a indirizzo
« Risposta #2 il: 09 Dicembre 2011, 17:39:33 CET »
0
C'è un errore di copia incolla!! si l ho testa... e prende bene la latitudine e la longitudine... ma poi con addresses da sempre [] (quelle che imposta dal ddms!!) p.s. ora corrego sopra!

Offline mary2501

  • Utente junior
  • **
  • Post: 70
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc desire hd
  • Sistema operativo:
    mac , windows xp
Re:Problema da latitudine e longitudine a indirizzo
« Risposta #3 il: 09 Dicembre 2011, 17:43:23 CET »
0
la dimensione è zero!

Offline Verandi

  • Moderatore
  • Utente normale
  • *****
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Problema da latitudine e longitudine a indirizzo
« Risposta #4 il: 09 Dicembre 2011, 17:46:22 CET »
0
Prova a testarlo su un dispositivo reale, perché mi pare che qualcuno abbia avuto problemi ad usare il geocoder nell'emulatore.
In più, prova a inserire, subito dopo la creazione del Geocoder, un log del valore di gc.isPresent(), così vedi se è un problema di Geocoder non presente o altro.  ;-)

Offline mary2501

  • Utente junior
  • **
  • Post: 70
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc desire hd
  • Sistema operativo:
    mac , windows xp
Re:Problema da latitudine e longitudine a indirizzo
« Risposta #5 il: 09 Dicembre 2011, 17:49:57 CET »
0
Potrei provarlo sul dispositivo reale ma sono a casa e non prende il gps ... C'è qualche modo per dargli le coordinate come per l'emulatore? Comunque ho provato a mettere gc.isPresent() nel log ma mi scrive : Link all references for a local rename (does not
 change references in other files) ... :/


Offline Verandi

  • Moderatore
  • Utente normale
  • *****
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Problema da latitudine e longitudine a indirizzo
« Risposta #6 il: 09 Dicembre 2011, 17:52:42 CET »
0
Intendo:     Log.i("hhh", " Geocoder presente " + gc.isPresent());  ;-)
Puoi sempre testarlo nel dispositivo reale passando nel requestUpdates il NETWORK_PROVIDER.  :)

Offline mary2501

  • Utente junior
  • **
  • Post: 70
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc desire hd
  • Sistema operativo:
    mac , windows xp
Re:Problema da latitudine e longitudine a indirizzo
« Risposta #7 il: 09 Dicembre 2011, 18:01:18 CET »
0
guarda un po :

Offline Verandi

  • Moderatore
  • Utente normale
  • *****
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Problema da latitudine e longitudine a indirizzo
« Risposta #8 il: 09 Dicembre 2011, 18:03:39 CET »
0
Ok, è perché è stato aggiunto nell'api 9, quindi non lo puoi usare. :)

Offline mary2501

  • Utente junior
  • **
  • Post: 70
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc desire hd
  • Sistema operativo:
    mac , windows xp
Re:Problema da latitudine e longitudine a indirizzo
« Risposta #9 il: 09 Dicembre 2011, 18:07:22 CET »
0
Grazie mille!! ho provato mettendo la parte NETWORK_PROVIDER e funziona!! :) volev chiederti un info..a me serve sapere la posizione più precisa possibile.. uso il NETWORK_PROVIDER o il gps?! p.s. l ho provato adesso e questo è molto preciso.. però adesso sono connessa a un wi-fi!

Offline Verandi

  • Moderatore
  • Utente normale
  • *****
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Problema da latitudine e longitudine a indirizzo
« Risposta #10 il: 09 Dicembre 2011, 19:24:07 CET »
0
La posizione del gps è più precisa e veloce, ma ho la svantaggio di dover essere all'aperto per utilizzarlo. Il network provider è meno preciso, soprattutto nelle aree extraurbane, ma sicuramente più veloce e può essere usato anche al chiuso.
Il metodo che consigliano di usare è:
- Richiedere la posizione da entrambi i provider  (richiami due volte il metodo requestLocationUpdates: una per il gps e una per il network).
- Nel metodo onLocationChanged() controlli la precisione del fix usando location.getAccuracy(). Se è minore di un certo limite la utilizzi (e magari disattivi le richieste da entrambi i provider), sennò la tralasci e aspetti la prossima che ti viene passata. ;-)