Autore Topic: Coordinate e google maps  (Letto 705 volte)

Offline xixietto

Coordinate e google maps
« il: 21 Dicembre 2015, 16:21:29 CET »
0
Salve, la mia app prende la posizione tramite GPS all'avvio.
Come fare in modo da ottenere la posizione al click di un bottone?
Come collegarsi a google maps e inserire in modo automatico le coordinate trovate? o avete altri consigli?
Come ottenere le coordinate anche tramite wifi o rete cellulare?
Ci ringraziò in anticipo per l aiuto
questo è il codice attuale
Codice (Java): [Seleziona]
public class MainActivity extends AppCompatActivity {
        private String providerId = LocationManager.GPS_PROVIDER;
        private Geocoder geo = null;
        private LocationManager locationManager=null;
        private static final int MIN_DIST=10;
        private static final int MIN_PERIOD=20000;



    private LocationListener locationListener = new LocationListener()
    {
        @Override
        public void onStatusChanged(String provider, int status, Bundle extras)
        {

        }
        @Override
        public void onProviderEnabled(String provider)
        {
            // attivo GPS su dispositivo
            updateText(R.id.enabled, "Attivo");
        }
        @Override
        public void onProviderDisabled(String provider)
        {
            // disattivo GPS su dispositivo
            updateText(R.id.enabled, "Non attivo");
        }
        @Override
        public void onLocationChanged(Location location)
        {
            updateGUI(location);
        }
    };

        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //allarme
            Button btnHome=(Button)findViewById(R.id.button);
            btnHome.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View arg0) {
                    // definisco l'intenzione
                    Intent openPage1 = new Intent(MainActivity.this, Sveglia.class);
                    // passo all'attivazione dell'activity Pagina.java
                    startActivity(openPage1);
                }
            });

        }

        @Override
        protected void onResume()
        {
            super.onResume();
            geo=new Geocoder(this, Locale.getDefault());
            locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
            if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
                    && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

            }
            Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
            if (location!=null)
                updateGUI(location);
            if (locationManager!=null && locationManager.isProviderEnabled(providerId))
                updateText(R.id.enabled, "Attivo");
            else
                updateText(R.id.enabled, "Non attivo");
            locationManager.requestLocationUpdates(providerId, MIN_PERIOD, MIN_DIST, locationListener);
        }

    private void updateGUI(Location location)
    {
        Date timestamp = new Date(location.getTime());
        updateText(R.id.timestamp, timestamp.toString());
        double latitude = location.getLatitude();
        updateText(R.id.latitude, String.valueOf(latitude));
        double longitude = location.getLongitude();
        updateText(R.id.longitude, String.valueOf(longitude));
        new AddressSolver().execute(location);
    }

    private void updateText(int id, String text)
    {
        TextView textView = (TextView) findViewById(id);
        textView.setText(text);
    }

    @Override
        protected void onPause()
        {
            super.onPause();
            if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
                    && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

            }
            if (locationManager!=null && locationManager.isProviderEnabled(providerId))
                locationManager.removeUpdates(locationListener);
        }

    private class AddressSolver extends AsyncTask<Location, Void, String>
    {

        @Override
        protected String doInBackground(Location... params)
        {
            Location pos=params[0];
            double latitude = pos.getLatitude();
            double longitude = pos.getLongitude();

            List<Address> addresses = null;
            try
            {
                addresses = geo.getFromLocation(latitude, longitude, 1);
            }
            catch (IOException e)
            {

            }
            if (addresses!=null)
            {
                if (addresses.isEmpty())
                {
                    return null;
                }
                else {
                    if (addresses.size() > 0)
                    {
                        StringBuffer address=new StringBuffer();
                        Address tmp=addresses.get(0);
                        for (int y=0;y<tmp.getMaxAddressLineIndex();y++)
                            address.append(tmp.getAddressLine(y)+"\n");
                        return address.toString();
                    }
                }
            }
            return null;
        }

        @Override
        protected void onPostExecute(String result)
        {
            if (result!=null)
                updateText(R.id.where, result);
            else
                updateText(R.id.where, "N.A.");

        }
    }
}
« Ultima modifica: 21 Dicembre 2015, 16:28:23 CET da xixietto »