Como obtener la ubicación del GPS-Android Studio


Hoy veremos como obtener la ubicación (dirección y coordenadas del gps) en android studio, de forma básica pero muy bien explicado y puedan aplicarlo a sus proyectos.

Primero entenderemos por GPS que es una herramienta incluida en cualquier dispositivo móvil el cual nos permite enviar o recibir todo lo relacionado con nuestra ubicación.
Este ejercicio consiste en un ejercicio simple de mostrar en un TexView la dirección, y en otro TexView la latitud y longitud de nuestro gps si quieres ver ejercicios mas elaborados, al final del post tendrás algunos enlaces que puedes revisar.

 

 

 

 

 

Actualizado:  23/03/2017
-Se arreglo el error Permission
-Cuando el Gps esta desactivado, te lleva automáticamente a la configuración del GPS
-Al caminar la latitud y longitud se actualiza de forma automática

——————————————————————————————————————–

Como obtener la Ubicación (dirección y coordenadas) la latitud y longitud del GPS?

obtener mi ubicación del gps

Me puse a investigar en algunos sitios e hice un tutorial paso a paso, como siempre comento en mis tutos les voy a dar filete Mignon “nada de hueso” y puedan degustarlo con facilidad.

Empezamos la estructura sera la siguiente:
Primero crearemos un nuevo proyecto al que llamaremos AppGPS
1) Se nos creara un nuevo activity_main.xml
2) Se nos creara nuestro MainActivity.java
3) Nuestro AndroidManifest.xml (tendremos que agregar algunas cosas)

 

Importante:
Una vez creado el proyecto debemos de agregar a nuestra aplicación permisos para usar el GPS dispositivo y para ello nos vamos al fichero AndroidManifest.xml y agregamos el siguiente permiso

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>

 

Bien nuestro activity_main.xml tendrá lo siguiente 2 Texview y un imageView. Todo dentro de un LinearLayout

También les dejo el activity_main.xml

activity_main

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.androidmorefast.pc.appobtenergps.MainActivity">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_alignParentLeft="true"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/mensaje_id"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="TextView" />

            <TextView
                android:id="@+id/mensaje_id2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="TextView" />

            <ImageView
                android:id="@+id/imageView1"
                android:layout_width="wrap_content"
                android:layout_height="0dp"
                android:layout_gravity="center"
                android:layout_weight="1"
                android:src="@drawable/logo" />
        </LinearLayout>

    </RelativeLayout>

 

Ahora que hemos configurado la parte gráfica del ejercicio necesitamos, configurara nuestro MainAtivity.java. Vamos a definir un LocationListener.
Un LocationListener, no es mas que una clase que se encarga de estar siempre atenta a cualquier cambio de localidad recibido en el GPS del dispositivo.
Digamos que es como un radar que detecta toda señal de cambio de ubicación que el GPS emite. Para efectos de este tutorial, este LocationListener lo definiremos dentro de nuestra clase MainActivity. Lo primero que debemos hacer es importar el paquete “android.location.LocationListener”, ya que este paquete es el que tiene la definición de la interfaz LocationListener. Luego definimos la clase Localización, de la siguiente manera (ver comentarios al inicio de cada método que les dejare en proyecto para descarguen)::

MainActivity

public class MainActivity extends AppCompatActivity {
    TextView mensaje1;
    TextView mensaje2;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mensaje1 = (TextView) findViewById(R.id.mensaje_id);
        mensaje2 = (TextView) findViewById(R.id.mensaje_id2);


        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION,}, 1000);
        } else {
            locationStart();
        }
    }

    private void locationStart() {
        LocationManager mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        Localizacion Local = new Localizacion();
        Local.setMainActivity(this);
        final boolean gpsEnabled = mlocManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
        if (!gpsEnabled) {
            Intent settingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
            startActivity(settingsIntent);
        }
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION,}, 1000);
            return;
        }
        mlocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, (LocationListener) Local);
        mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, (LocationListener) Local);

        mensaje1.setText("Localización agregada");
        mensaje2.setText("");
    }

    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        if (requestCode == 1000) {
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                locationStart();
                return;
            }
        }
    }

    public void setLocation(Location loc) {
        //Obtener la direccion de la calle a partir de la latitud y la longitud
        if (loc.getLatitude() != 0.0 && loc.getLongitude() != 0.0) {
            try {
                Geocoder geocoder = new Geocoder(this, Locale.getDefault());
                List<Address> list = geocoder.getFromLocation(
                        loc.getLatitude(), loc.getLongitude(), 1);
                if (!list.isEmpty()) {
                    Address DirCalle = list.get(0);
                    mensaje2.setText("Mi direccion es: \n"
                            + DirCalle.getAddressLine(0));
                }

            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    /* Aqui empieza la Clase Localizacion */
    public class Localizacion implements LocationListener {
        MainActivity mainActivity;

        public MainActivity getMainActivity() {
            return mainActivity;
        }

        public void setMainActivity(MainActivity mainActivity) {
            this.mainActivity = mainActivity;
        }

        @Override
        public void onLocationChanged(Location loc) {
            // Este metodo se ejecuta cada vez que el GPS recibe nuevas coordenadas
            // debido a la deteccion de un cambio de ubicacion

            loc.getLatitude();
            loc.getLongitude();

            String Text = "Mi ubicacion actual es: " + "\n Lat = "
                    + loc.getLatitude() + "\n Long = " + loc.getLongitude();
            mensaje1.setText(Text);
            this.mainActivity.setLocation(loc);
        }

        @Override
        public void onProviderDisabled(String provider) {
            // Este metodo se ejecuta cuando el GPS es desactivado
            mensaje1.setText("GPS Desactivado");
        }

        @Override
        public void onProviderEnabled(String provider) {
            // Este metodo se ejecuta cuando el GPS es activado
            mensaje1.setText("GPS Activado");
        }

        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {
            switch (status) {
                case LocationProvider.AVAILABLE:
                    Log.d("debug", "LocationProvider.AVAILABLE");
                    break;
                case LocationProvider.OUT_OF_SERVICE:
                    Log.d("debug", "LocationProvider.OUT_OF_SERVICE");
                    break;
                case LocationProvider.TEMPORARILY_UNAVAILABLE:
                    Log.d("debug", "LocationProvider.TEMPORARILY_UNAVAILABLE");
                    break;
            }
        }
    }
}

 

Analizamos el código:
Ahora que tenemos creada nuestra clase Localización debemos de implementarla y para ello debemos llamar al servicio LocationManager del sistema Android y agregar un nuevo LocationListener de actualizaciones de ubicación, que en este caso sería una instancia de nuestra clase Localización
.
Para este ejemplo vamos hacer esto en el método onCreate de nuestra clase MainActivity. Recordemos que el método onCreate se ejecuta durante la creación de la actividad y permite inicializar nuestros componentes tanto de UI como de Lógica de negocio.

¿Como Obtengo las Coordenadas?

Dentro del método onLocationChanged  pasamos como parámetro a la clase Location, esta clase en particular nos permitirá utilizar sus dos atributos que son getLatitude y getLongitude  y con ella obtenemos las coordenadas, si quieres profundizar en la clase te dejo el siguiente enlace haciendo clic aquí . 

¿Como Obtengo la Dirección?

Esto lo vemos en el método setLocation, si observan un poco se darán cuenta que primero obtenemos las coordenadas tanto latitud con getLatitude getLongitude y luego hacemos uso de la clase  Geocoder. 

 

Geocoder es una clase para manejar geocodificación y geocodificación inversa. La geocodificación es el proceso de transformar una dirección de calle u otra descripción de una ubicación en una coordenada (latitud, longitud). La geocodificación inversa es el proceso de transformar una coordenada (latitud, longitud) en una dirección (parcial)”.

En ese sentido nosotros usaremos la geocodificacion inversa y de las coordenadas obtenidas la transformaremos a nuestra dirección. si quieres profundizar en el tema lee el siguiente enlace, Aquí.

¿Que son los Permission?

También se les conoce como permisos en tiempos de ejecución, a partir de la Api 23 es necesario estos permisos si quieres usar algunas partes del hardware del movil, si quiere leer algo mas al respeto sigue el siguiente enlace: Políticas de privacidad para android.permission

Conclusiones:

  • Obtener las coordenadas no son ningún reto para un programador con conocimientos intermedios.
  • Se pudo obtener la dirección a partir de las coordenadas geocodificadas de forma inversa.
  • A partir de la Api 23 hay que ingresar permisos sobre el tiempo de ejecución para usar el GPS.

Bueno ha llegado la hora de ejecutar el apk del millón de dolares xD

Para este ejercicio utilizare el emulador Genymotion en otro post ya le explique el porque.
Quedaría algo así cuando el gps este desactivado.
gps desactivado
Actualización: Ahora nos lleva de frente a la configuración del Gps si esta desactivado.
activando gps
Para los que usan el emulador Genymotion  hacemos clic en donde dice GPS y lo activamos…..
activando gps en genymotion
Luego hacemos clic en MAP, les explico como es un emulador de android
las coordenadas hay que indicarle manualmente, es por eso que uso genymotion
con un par de clics y se agrega, no es como otros emuladores
que hay que enviarle las coordenadas por consola etc, etc….
mi ubicación en google map
Despues de elegir el lugar que queremos, cerramos y volvemos al programa y nos mostrara esto.
IMPORTANTE:  Te invito a mirar el vídeo actualizado donde se explica algunas cosas que no explican acá para no alargar el tutorial


Espero les haya gustado, a continuación les dejo el proyecto para que lo prueben.

Nota: para que funcione correctamente el gps en genymotion debes pasar por acá primero instalar paso a paso google play servicios en Genymotion.

Enlaces de Interés:

Enviar mi ubicación (latitud y longitud) a una base de datos

Mostrar mi ubicación del gps en un fragment

1+

¿Tiene alguna pregunta o comentario?

65 comments on “Como obtener la ubicación del GPS-Android Studio

Anónimo

Gracias me ha servido.

1+
Reply
Carlos

Una pregunta solo me aparece las coordenadas y no sale el nombre de la calle, lo estoy probando en mi celular android, descargue el archivo que dejaste no he cambiado nada, como lo hago funcionar.

1+
Reply
Anónimo

Usaste una API y la KEY tambien o no ???

0
Reply

Disculpa la demora, en este ejercicio, no se utiliza
ninguna key, es sencillo el ejercicio, solo
toma la dirección de gps, para keys apis y demás
es cuando, incluyes mapas de
googleMap dentro de tu aplicación.Si
tienes mas dudas, escribeme

0
Reply

Recuerda cambiar esto según, donde lo pruebes.
1. LocationManager.GPS_PROVIDER permite tomar tu ubicación del gps
2 .LocationManager.NETWORK_PROVIDER permite tomar tu ubicación de Internet

1+
Reply

Estoy tratando de hacer un Panic Button para enviar mi nombre, localizacion y hacer una llamada a el primer panic contact.

como le harias para eso. ya que me estoy confundiendo con las clases. por ejemplo para que funcionan las clases:
public MainActivity getMainActivity() {
return mainActivity;
}

public void setMainActivity(MainActivity mainActivity) {
this.mainActivity = mainActivity;
}

Este codigo lo probe en mi celular. me gustaria saber como enviarlo por un SMS.

Saludos

0
Reply

Hola, la clase MainActivity, se crea por defecto al crear una aplicación en Android. envíame un correo con mas detalles de lo que necesitas, mas abajo hay un formulario de contacto

1+
Reply

Tengo una duda yo ya descargue la version mas reciente del sdk y ayer me funcionaba una app con el AppCompatActivity pero hoy me lo pone en rojo y el import android.support.v7.app. hasta ahi esta en gris y ya el AppCompatActivity esta en rojo tambien, en mi build.gradle mi buildToolsVersion "24.0.0 y el compile 'com.android.support:appcompat-v7:24.0.0' alguien me podria ayudar a resolver este problema

1+
Reply

Hola Nando ya te respondimos por imbox, para todos los que tengan el mismo error es porque no actualizaron su sdk

0
Reply

Buenas tardes, he introducido el código tal cual y solo me sale Localización agregada, nada de coordenadas ni dirección, que puede pasar? Un saludo

0
Reply
Mariela

Para las coordenadas tu gps debe estar activo y para tomar la dirección debes tener acceso a internet.

1+
Reply

Hice todo tal cual como lo explicaste pero al ejecutar la app esta se detiene en el emuador y se cierra 🙁

0
Reply

no importa ya lo solucione 😀

0
Reply

Hola, en la parte de:
obtenerUbicacion.requestLocationUpdates(LocationManager.NETWORK_PROVIDER , 0, 0,(LocationListener)local);

me aparece un error de permisos, hice todo tal cual pero me da el error de CALL REQUIRES PERMISSION. Ocupo tu ayuda man :'(

0
Reply

Hola Ivan eso es un problema de actualización, recuerda que este es un tutorial un poco antiguo, pero no te preocupes igual corre a pesar del error, aunque no es un error, en Apis nuevas de android necesitas ingresarle un permiso para que el usuario elija si quiere o no mostrar su ubicación, te prometo hacer un tutorial al respecto para explicar mejor este tema

0
Reply
Anónimo

Hola , tengo un porblema quiero poder ver la ubicacion de un dispositivo y ver mi ubicacion , no se si me entiendes , pero mi dispositivo esta en movimiento y quiero poder ver donde esta en el mapa , me podes ayudar?

0
Reply

perdón la ignorancia pero no me funciona se cierra y no encuentro como solucionarlo

0
Reply

Hola, me funciona bastante bien esta aplicacion. Pero a la hora de usarla en un celular Moto G3 con android 6.0 no funciona… ni si quiera funciona un boton que implemente que envia coordenadas a una base de datos. Funciona perfectamente en mi celular con android 4.4.

Alguien me explica? 🙁

0
Reply

sucede que lo diseñe hace mucho tiempo es funcional desde la 3.0 hasta la 5… seria cuestión de que crees un nuevo ejercicio con compatibilidad a la 6.0

0
Reply

sucede que lo diseñe hace mucho tiempo es funcional desde la 3.0 hasta la 5… seria cuestión de que crees un nuevo ejercicio con compatibilidad a la 6.0

0
Reply

Ya lo habia hecho pero no funciona. lo raro es que ni siquiera funciona el boton de ese activity pero el de un inicio de sesion que cree si funciona 🙁

0
Reply

hola , necesito que desde un botón de mi actividad aparezca una dirección .. un restaurante, y se abra desde google maps o waze… sabes como hacerlo
si tienes informacion sobre esto puedes agregarme al correo [email protected] .. gracias

0
Reply

Para los que tienen una version mas reciente de android studio y se cierra la aplicacion una vez que la prueban, intenten ir al menu "Build" seleccionar "edit flavors" y en ese menu busquen "Target SDK version" seleccionen la version API 21: Android 5.0 (Lollipop) pulsen OK y prueben la applicacion

Si anteriormente ya habian probado la app en el emulador de android, les muestre el mensaje : "Application installation failed" simplemente presionen "OK" para que desinstale la aplicacion y correra sin problemas

0
Reply

Quiero honestamente agradecer tu aporte…llevaba horas intentando realizar esto.

0
Reply

que bueno que te sirvió, saludos

0
Reply

Todo funciona bien, pero no me aparece nada en los textview, simplemente detecta si el gps esta activado o desactivado, y que la localización esta agregada, ¿como puedo solucionar este error?

0
Reply

1. El dispositivo o emulador debe tener acceso a Internet
2. Si te fijas en el tutorial claramente se explica que se debe cambiar una parte en el código si es emulado en un celular y cambiar otro código si es usado en un emulador.

0
Reply

una pregunta amigo soy nuevo en esto tengo una duda sobre obtener las ubicaciones y es si puedo obtener la ubicación sin tener acceso a Internet como puedo hacer para que funcione el gps sin internet

0
Reply

Hola Angel este ejercicio funciona con internet, en teoría debería también poder hacerse otro tipo de código que permita descargar los map de una zona x y luego poder consultarle donde se encuentra el dispositivo.

0
Reply

Esta al final, por favor vea el video actualizado ahí puede resolver cualquier duda

0
Reply

Hola [email protected] me parece que aquí hay un mal entendido, en este ejercicio en ninguna parte controlamos la actualizacion del movimiento, eso lo hace de forma automatica la Api, en el ejercicio pasado se tenia que abrir y cerrar la aplicacion para que cambie las posiciones, aunque a mi siempre me funciono bien en android 4.0 creo que el problema viene con apis superiores, pero al agregar el onStatusChanged se esta forzando a que haga una comprobacion del estado, quizas deseen leer algo al respecto les dejo el siguiente enlace https://developer.android.com/reference/android/location/LocationListener.html

0
Reply
Anónimo

sinceramente muchas gracias y claro que corre bien solo que quería desactivarlo para que no gaste muchos datos al estar actualizando el gps una y otra vez tambien aparece como consumo de batería alto. y leere el enlace.

0
Reply

@Anonimo, que bueno que todo quedo aclarado,saludos.

0
Reply

Este comentario ha sido eliminado por el autor.

0
Reply

Este comentario ha sido eliminado por el autor.

0
Reply

hola gracias por el tutorial, esperando que me puedas ayudar el como colocar un marcador a posición actual y que se vallan guardando. podrás ayudarme, deja te menciono que apenas voy aprendiendo android
saludos

0
Reply

hola q tal… hice tal cual como esta en tu tutorial con permisos y todo… pero siempre me sale que el GPS esta desactivado y si tiene encendido el emulador el Gps… hay q hacer algo mas?
Por fa ayudeme

0
Reply
Anónimo

Hola, estoy haciendo una app de geolocalizacion en la cual introduzco las coordenadas en el DDMS…. en el eclipse android me salia bien, pero ahora que se actualizo y se introduce desde la virtualizacion me provoca un error, cambio la forma en que debo programarlo? no quiero poner todo el codigo que es largo…

0
Reply
Anónimo

Hola Android Facil.
Me parece muy interesante tu información.
Por favor podrias decirme a que correo te puedo enviar mi inquietud ?
Mi correo es [email protected]
Gracias.

0
Reply

Amigo descargué y probé tu programa, y no me muestra el nombre de la calle, solo la latitud y longitud.
He puesto solamente este: mlocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, (LocationListener) Local);
como dice en el vídeo pero nada sigue sin mostrarme nada.
Gracias por la antención

0
Reply

Genial! Un monstruo.

Probe la app y funciona espectacular. Me muevo y va actualizxando las coordenadas. Solo me registre para felicitarte.

0
Reply

Que bueno que le sirvió, saludos.

0
Reply

Hola, David para que te muestre las calles debes cumplir con lo siguiente que tengas acceso a internet en tu dispositivo y que estés en una zona urbanizada, en zonas rurales o por donde no paso el automovil de google no funciona. Solo te enviara las coordenadas.

0
Reply

Difícil de saber tu error con poca información, pero seguro es porque no has puesto los permission antes de ejecutar tu app.

0
Reply

Que bueno que le sirvió, no olvide apoyarnos agregándose a nuestras redes sociales, saludos.

0
Reply

Muchas gracias por estas tutoriales, quería preguntarte si te puedo enviar un correo para ver si me puedes guiar con un problema que tengo con el gps, o bien crear un tutorial si lo ves que puede interesar a más seguidores.

0
Reply

Hola Socu, puedes escribirnos cualquier duda y trataremos en responderte cuando regresemos de vacaciones a partir de el 11 del presente mes, checa este link: https://www.androfast.com/2017/02/como-pedir-ayuda.html

0
Reply

Muchas gracias, correo enviado, igual me he extendido un poco intentando explicarlo lo mejor posible para no dejarme ningun dato.

0
Reply
Jose Luis Gutierrez

Hola, gracias por compatirnos tu conocimiento. Nos es de mucha ayuda.
Por favor podrias decirme en que puedo estar fallando si la app toma la ubicacion en el emulador pero no en el celular ya una vez instalada la APK

Saludos

0
Reply

Difícil saber si no se revisa los errores de su android monitor, pero es común que no te muestre nada cuando no tienes activo el gps u si has creado una aplicación nueva debes revisar si pusiste bien los permisos.

0
Reply
ivonne

he usado varios de tus ejemplos y no he tenido problemas, aqui no me muestra la direccion solo las coordenadas, tengo activado el gps en el celular pero nada mas no resuelve la direccion, saludos

0
Reply

Huy Ivonne necesito mas información como por ejemplo si tienes acceso a internet, que versión de api que usas y así toda la información posible para tener una idea de lo que esta pasando y si fuera posible mostrar si hay algún error de tu android monitor.

0
Reply
Patricio

Estimado, el codigo funciona sin problemas en un emulador, pero en el celular con android 8 no toma. El GPS esta activado y aplique el codigo para emularlao en un celular. Me podrías ayudar?

0
Reply

Hola Patricio, te cuento que el problema es de Android 8 estamos esperando respuesta de google sobre este error pero hasta ahora no se manifiesta sobre este tema.

0
Reply

[…] que varios preguntan como obtener las coordenadas en un fragment, si recuerdan la vez pasada vimos como obtener la ubicación del gps en android studio    a raiz de ese ejercicio hay varios preguntando como poder implementarlo en un fragment la verdad […]

0

[…] de como obtener el gps los invito a que revisen el siguiente enlace  asiendo clic aqui -> como obtener la ubicación del gps . Yo estoy poniendo la ip de mi computadora y mi celular esta conectado vía wifi por el mismo […]

0

[…] de como obtener la dirección y las coordenadas del gps si aun no lo has visto te dejo los enlaces: *Como obtener la Ubicación del GPS-Android *Como enviar por mensaje de texto mi ubicación y coordenadas del gps *como guardar la dirección y […]

0

[…] veremos como obtener la altitud, longitud y precisión del gps, para ello nosotros ya trabajamos como obtener la dirección del gps en android lo nuevo que veremos hoy aquí es la altitud y la precisión. Así que sin mas demora veamos de una […]

0

[…] en mi ciudad dentro de una universidad, puedes cambiarlo por las coordenadas de tu ciudad. Aquí te dejo un ejercicio que saca tus coordenadas donde te encuentres, por si lo […]

0

[…] y dirección del gps en android studio, ya tenemos varios ejemplos en esta web como por ejemplo obtener las coordenadas del gps, pero decidí hacer este código como un ejemplo mas limpio que nos servirá para las clases que se […]

0

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *