Blog de Contraslash (Legacy)

Obtener tu dirección usando Android

January 29, 2016

Obtener tu dirección usando Android

/**
     * Clase que usa el GeoCoder para obtener la dirección actual
     */
    private class GetDireccion extends AsyncTask<LatLng, Void, String> {
        Context mContext;
        String idedit;
        public GetDireccion(Context context, String id) {
            super();
            Log.i(TAG,"Creando el AsyncTask GetDireccion");
            mContext = context;
            idedit=id;
        }

        /**
         * Gestor de obtención dedirección
         */
        @Override
        protected String doInBackground(LatLng... params) {
            Geocoder geocoder =
                    new Geocoder(mContext, Locale.getDefault());
            if(params[0]==null)
                return "";
            LatLng loc = params[0];
            List<Address> addresses = null;
            try {
                /*
                 * Return 1 address.
                 */
                Log.i(TAG,"Intentando obtener la dirección del punto: "+loc.latitude+","+loc.longitude);
                addresses = geocoder.getFromLocation(loc.latitude,
                        loc.longitude, 1);
            } catch (IOException e1) {
                Log.e(TAG,
                        "IO Exception in getFromLocation()");
                //Toast.makeText(getActivity(),"Imposible obtener su ubicación, verifique el GPS esté activado",Toast.LENGTH_LONG).show();
                e1.printStackTrace();
                return "";
            } catch (IllegalArgumentException e2)
            {
                String errorString = "Illegal arguments " +
                        Double.toString(loc.latitude) +
                        " , " +
                        Double.toString(loc.longitude) +
                        " passed to address service";
                Log.e(TAG, errorString);
                e2.printStackTrace();
                return "";
            }
            if (addresses != null && addresses.size() > 0) {
                Address address = addresses.get(0);
                String addressText = address.getMaxAddressLineIndex() > 0 ?
                                address.getAddressLine(0) : "";
                StringTokenizer st=new StringTokenizer(addressText);
                String simplifyDir="";
                while(st.hasMoreTokens())
                {
                    String a=st.nextToken();
                    if(a.compareTo("a")==0)
                    {
                        break;
                    }
                    else
                    {
                        simplifyDir+=a+" ";
                    }
                }
                return simplifyDir;
            } else {
                return "No encontramos la direccion";
            }
        }

        /**
         * Método para mostrar la dirección en la interfaz gráfica
         */
        @Override
        protected void onPostExecute(String address) {

        }
    }