Autore Topic: Posizione indicativa e nome indirizzo  (Letto 928 volte)

Offline ciso

  • Utente junior
  • **
  • Post: 71
  • Respect: +4
    • Mostra profilo
    • AndroidWorld.it
  • Dispositivo Android:
    Motorola Milestone
  • Sistema operativo:
    Ubuntu 10.04
Posizione indicativa e nome indirizzo
« il: 09 Ottobre 2010, 18:20:15 CEST »
0
Ho fatto un piccolo programmino (del tutto incompleto) che dovrebbe restituirmi l'indirizzo della mia posizione.
Ho due problemi.

  • Vorrei che mi restituisse l'indirizzo e non la posizione in lat/long. (non è un bug, ma solo che non so come fare)
  • Il software prima di funzionare (mostra la posizione alla pressione di un tasto) aspetta il fix completo del GPS. Io vorrei invece che comunque nell'attesa del fix restituisse la posizione approssimativa.

Ecco il codice
Codice (Java): [Seleziona]
package com.ciso.sms.project;

import android.app.Activity;
import android.content.Context;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class SMSProject extends Activity {
    /** Called when the activity is first created. */

    private String posizione;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button bottone = (Button)findViewById(R.id.invio);
//        final EditText editor = (EditText)findViewById(R.id.editor);
        final TextView outputView = (TextView)findViewById(R.id.testo);
        // OTTIENI POSIZIONE:
        LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        Criteria c = new Criteria();
        c.setAccuracy(Criteria.ACCURACY_FINE);
        String provider = manager.getBestProvider(c, true);
        MyLocationListener listener = new MyLocationListener();
        manager.requestLocationUpdates(provider, 10000L, 10.0f, listener);
        // MOSTRA POSIZIONE AL CLICK:
        bottone.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v) {
                    outputView.setText(posizione);
//                    if (manager.getLastKnownLocation("gps")==null)
//                        Log.d("gps", "null");  
            }
           
        });
       
    }
   
    private class MyLocationListener implements LocationListener {

        public void onLocationChanged(Location location) {
                try {
                        if (location != null) {
                                posizione = "La tua posizione attuale è:" +"\nLat.: " + location.getLatitude() + "\n"+"Long.: " + location.getLongitude();
                        }
                } catch (Exception e) {
                        e.printStackTrace();
                }

        }

        @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
           
        }
}
}

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Benvenuto. Premi Pos. per ottenere la tua posizione!</string>
    <string name="app_name">SMS Project</string>
    <string name="pos_button">Pos.</string>
</resources>

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical" android:layout_width="fill_parent"
   android:layout_height="fill_parent">
    <TextView android:layout_width="fill_parent" android:id="@+id/testo"
       android:layout_height="wrap_content" android:text="@string/hello" />
    <LinearLayout android:orientation="horizontal" android:id="@+id/LinearLayout01"
       android:layout_height="wrap_content" android:layout_width="fill_parent">
        <EditText android:text="Dove sei?" android:id="@+id/editor"
           android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="2"></EditText>
        <Button android:text="@string/pos_button" android:id="@+id/invio"
           android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="5"></Button>
    </LinearLayout>
</LinearLayout>

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Posizione indicativa e nome indirizzo
« Risposta #1 il: 10 Ottobre 2010, 06:33:43 CEST »
0
Ciao ciso, per quanto riguarda il punto 1 dai uno sguardo a questo snippet: Reverse geocoding: informazioni relative all'area partendo dalle coordinate gps - Android Developers Italia
e a questo thread: Reverse geocoding: informazioni relative all'area partendo dalle coordinate gps - Android Developers Italia

Riguardo al punto 2, ti suggerisco di crearti due listener, uno Coarse e uno Fine. Per il primo utilizzi la localizzazione NETWORK, o il Criteria.ACCURACY_COARSE, per l'altro quella GPS, o il Criteria.ACCURACY_FINE).

Trovi un'implementazione funzionante della cosa nella bozza dei sorgenti del nuovo tutorial sul GPS: MainActivity.java -
 anddevit-tutorials -
 
 Project Hosting on Google Code
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !