[MUSIC] Ok, pues para comenzar con nuestro ejercicio primeramente me encuentro en el sitio oficial de Google Maps, que es developers.google.com/maps. Que por primera vez vemos que no dice nada en absoluto sobre sobre Android. Dado que, como you platicamos, los mapas es un servicio que son especÃficamente de Google, no es un servicio que Android nos provee. Entonces, más bien, es un servicio que Google nos provee y que nos lo provee para diferentes plataformas, incluso. AquÃ, observamos claramente, tenemos para Android, cómo integrar mapas en Android, cómo integrar mapas en iOS, cómo integrar mapas en nuestro sitio web. Y además, si queremos estar también implementando nuestro servicios web que estén consultando el API de Google y que el servicio web nos esté devolviendo mapas. Podemos incluso crear nuestros propios servicios web a base del API de Google. Entonces, pues este es el sitio oficial, y bueno, pues nosotros lo que buscamos básicamente es la parte de Android. Entonces, vamos a dar clic ahà y como you les platiqué, tenemos que hacer únicamente tres pasos. Es muy sencillo hoy en dÃa integrar los mapas en Android. Estamos trabajando con la versión dos del API de Google, del API de mapas. Entonces vamos a ir aquà donde dice Google Maps Android API. Y aquÃ, bueno, es una guÃa sumamente completa. Esta es la página de inicio, después vienen unas guÃas de cómo comenzar con cualquier plataforma. Vienen las referencias, muestras, incluso, de código. Y aquà también, pues vemos cómo implementar de primera instancia nuestro proyecto, los mapas de Google, si queremos ver algo asÃ, pues bueno, aquà tenemos el código que genera esto, precisamente. Acá también tenemos varios ejemplos que es como que lo más preciso que buscaremos para estar trabajando con los mapas de Google. Entonces, como platicamos, necesitamos hacer tres pasos. Primeramente, crear un proyecto o seleccionar un proyecto. En este caso un proyecto de Android, con Android Studio. Posteriormente, activar los Google Maps de Android API, que esto lo haremos en nuestra consola de developers, que todos tenemos acceso. Si tienes una cuenta de Gmail automáticamente tienes acceso a una cuenta de developer. Y posteriormente obtener, una vez que activamos los mapas y demos de alta nuestro proyecto, esto nos devolverá un API Key, una API que será lo que estaremos configurando en nuestro proyecto, ¿ok? Pues entonces, comencemos con lo primero, crear un proyecto de Android. Yo you estoy lista para crear un proyecto de Android. Aquà está, solamente estoy comenzando a hacerlo. Le voy a poner al proyecto MisMapas. Listo, le voy a dar Next. Y aquà voy a generar como mÃnimo del API, el API 15, en esto no hay mucho problema y esta es nuestra pieza clave cuando queremos generar un mapa de Google. Podemos incluso, como observas, solicitar una actividad que you tenga todo el código implementado, porque la verdad es que son bastantes pasos si lo hiciéramos en nuestro modo. Pero tenemos la fortuna que esto you está todo automatizado. Entonces, podemos seleccionar este Google Maps Activity y además yo puedo decir aquà también Empty Activity. Entonces, para observar un poco cómo es que, si yo you tengo un proyecto, pues cómo posteriormente integrar una actividad. Por lo pronto vamos a seleccionar este, Empty Activity, ¿ok? Voy a dar Next, me pide los parámetros de la actividad y le voy a dar Siguiente. Entonces, en este momento el proyecto empieza a construirse, empieza Gradle a trabajar y listo. you ha terminado el proyecto de estar trabajando y aquà you tengo mi Hola Mundo de Android, lo clásico que siempre vemos que es nuestro archivo de Java, ahorita está terminando Gradle de integrar todo y bueno, aquà está. Esto es lo que vemos comúnmente, nuestro Hola Mundo de Android, nuestro Hola Mundo de Java. Nuestro Hola Mundo de Android. Perfecto. Entonces, ahora vamos a hacer el siguiente paso que nos está solicitando aquÃ. Yo tengo un proyecto objetivo, entonces ahora vamos a activar los Google Maps para un proyecto. Entonces, para hacer esto voy a ir a la consola, al sitio de console.developers.google.com. Este es el sitio en donde nosotros tenemos acceso a nuestra consola, console.developers.google.com y listo. Esta es la visión general, esto es lo que normalmente puedes ver. Entonces, lo primero que haré será dar de alta mi proyecto. Entonces, voy a darle aquà clic, yo you tengo aquà un proyecto que es para notificaciones. Cuando veamos el tema de notificaciones también tendremos que hacer algo similar. Entonces le voy a dar clic aquà en donde dice Crear proyecto. Muy bien, le voy a dar Crear proyecto, le voy a poner el nombre de mi proyecto. Le voy a poner MisMapas. Generalmente, pues aquà puede tener el mismo nombre de la aplicación para que puedas identificarlo más fácilmente y le vamos a dar aquà Crear. Dice creando el proyecto, MisMapas, y listo, you lo ha creado. Perfecto. Ahora, entonces nos ha situado en MisMapas, aquà estoy ubicada. Lo que voy a hacer a continuación es que por cada proyecto que tu crees aquà en tu consola, necesitarás habilitar pues el API adecuado. Si vas a trabajar con mapas, pues entonces habilitamos este. Si vas a trabajar, a lo mejor, con el API de YouTube también habilitas esto para este proyecto. Entonces, por cada proyecto, hay que habilitar las cosas especÃficas que el proyecto va a estar consumiendo. Entonces voy a darle aquÃ, donde dice Google Maps Android API, y a continuación voy a darle clic donde dice Habilitar. Entonces dice Habilitando, you está empezando a habilitar. Estamos únicamente dando de alta un proyecto aquà que va a estar disponible, va a estar habilitado para consumir el API de Google. Entonces, ¿cómo hacemos que esto, pues, se sincronice precisamente con nuestro proyecto? Bueno, anteriormente tendrÃamos que ir aquà a donde dice Ir a las credenciales y entonces hacer, pues, una serie de pasos. Primeramente, seleccionar el API, después desde dónde llamarás al API, seleccionas qué tipo de proyecto es el que tienes, tenemos un proyecto Android, y aquà pondremos qué credenciales necesito. A partir de eso, para algunas personas se les empieza a complicar un poco. ¿Por qué? Porque hay que sacar un Keystore con la herramienta de Keytool. Y bueno, para llegar a la herramienta de Keytool hay que llegar a donde nuestros archivos ocultos de Android, que normalmente está en el home directory de tu computadora. Y entonces ejecutar un comando como esto, que necesitaremos si nuestra aplicación está en modo debug, necesitaremos keystore, un keystore en modo debug. Y entonces, a partir de allÃ, lo que necesitamos es obtener una clave de API que, bueno, aquà vamos a darle cancelar porque todavÃa esto no, no está. Y lo que nos, nos estará solicitando, pues es obtener una clave de API, que es más que nada como la firma de la aplicación que nos solicita el SHA asignado, el SHA de la aplicación asignado al proyecto, ¿ok? Entonces, bueno, hacer esto todo manualmente, la curva de error se nos prolonga bastante la curva de que generemos un error y además de que son bastantes pasos. Entonces por eso vamos a hacerlo de la forma directa, de la forma que you está listo. Y entonces antes de estar trabajando acá, lo que voy a hacer es, por aquÃ, crear un, voy a crear un botón aquÃ. Y antes de crear el botón, como que no generó bien mi vista. Voy a, simplemente voy a darle un Rebuild en el menú Build y un Rebuild. Ok, bueno. Entonces, pues parece que todavÃa sigue aquà con algunos problemas. Pues bueno, no hay problema. Podemos generar nada más, nosotros necesitamos un botón, un botón que vamos a decirle, match_parent y wrap_content. Este botón lo que va a hacer es llevarnos a otro activity, que será el activity que contenga nuestros mapas. Entonces a este TextView, como estoy en un RelativeLayout, le voy a poner un id y le voy a poner texto, asÃ. Y ahora a este le voy a decir que esté debajo del tv, que esté debajo del tvTexto. Muy bien, you está. Y además le vamos a poner un texto Android text, y ese texto le vamos a poner ir, ir a mis mapas, ¿ok? Entonces le vamos a poner ir_mapas. Ir a mis mapas. Perfecto. Entonces ese texto es el que colocaremos en nuestro botón. Vamos a poner @string, ir a mis mapas. Listo. you está. Bueno, aquà you debe estar el botón. No hay problema si ahorita no se ve. Y entonces vamos ahora acá, a generar nuestra actividad que va, que va a contener el mapa. Y entonces es muy simple, voy a darle clic derecho en cualquier nivel del proyecto, en donde dice new, y vamos a ir a la parte que dice Google, al menú que dice Google, ¿ok? Y entonces aquà en el menú que dice Google, you me aparece un menú que dice Google Maps Activity. Esa es la parte que necesito, Google Maps Activity. Entonces voy a integrar aquà Maps Activity, es el nombre de mi actividad, le vamos a poner, sÃ, Maps Activity, lo vamos a dejar asÃ. El layout Maps, el tÃtulo de la aplicación, el tÃtulo de la Activity, cómo se va a ver, y el Package al cual va a estar respondiendo éste. Este Package, pues es el, nuestro Package raÃz que definimos al principio. Le voy a dar Finish. Y en este momento empieza a trabajar el proyecto e incluso, si observaste Gradle, también está trabajando. Y esto es porque para integrar los mapas en un proyecto, pues incluso se tienen que descargar algunas librerÃas adicionales, que ahorita, en cuanto termine te voy a mostrar cuáles son las que ha integrado a nuestro proyecto. Y vamos a abrir nuestro Gradle Module app. Y entonces, normalmente, nosotros tenemos esto, que you siempre viene en nuestro proyecto integrado, pero ha integrado ahora la librerÃa de gms, los play services de Google. Y esto es algo que, cuando tú estés trabajando, incluso en tu proyecto, eso es algo que tienes que también estar trabajando en tus SDK managers. Eso es lo que tienes que estar descargando también en tu SDK managers. En nuestro caso, nosotros seleccionamos por ahà una API, este una API 14, me parece. Y vemos que, una API 15, eso fue. Y vemos que aquà nosotros sà tenemos instalado la parte de Google APIs, este kit de librerÃas adicionales que se integran y que se quedan ahà disponibles. Entonces debemos tenerlo aquà disponible los Google APIs, que es para, es un servicio de Google que nos permitirá estar trabajando con cualquier API de Google, ¿ok? Entonces aquà you podemos integrar mapas o podemos integrar cualquier otra API de Google. Adicional, si nosotros, en un momento dado que nosotros queramos estar corriendo nuestro proyecto, bueno ahorita más adelante lo vamos a ver. Pero también necesitamos que el emulador, si es que lo vamos a correr a un emulador, necesitamos que ese emulador tenga, pues este, los Google APIs también seleccionados, ¿ok? Eso lo explicamos en nuestro curso de fundamentos de Android. Bien, entonces vamos a ir a nuestra actividad que nos acaba de crear el asistente de Google Maps, y lo que observamos es que esta actividad que se llama MapsActivity, esta heredando de la clase FragmentActivity. Esto por el momento no tiene nada que ver con mapas, simplemente es FragmentActivity y que ahora sÃ, aquà está implementando que se llama OnMap ReadyCallback. Ok, este OnMapReadyCallback es precisamente un callback o un método donde nos va a estar mostrando, nos va a estar diciendo cuando el mapa real you se ha creado. Entonces cuando el mapa you se ha creado, you se ha integrado en un fragment, porque realmente eso es lo que va a suceder, nuestro mapa se va a integrar en un fragment. Una vez que sucedió eso, pues nosotros you podemos estar, en este caso está agregando un marcador en Sydney y que, y que incluso, bueno, está moviendo la cámara para generar, pues no sé, un efecto más, más cool. Entonces en nuestro método onCreate, estamos añadiendo, estamos con una clase que se llama SupportMapFragment, que aquà esta clase, pues nos ayuda, nos va a ayudar a integrar lo siguiente que vamos a ver. Entonces vamos a ir al layout que está trabajando este mapa. Nos ha creado una clase, es la que acabamos de ver. También en nuestro layout nos ha creado una actividad que se llama activity_maps. Lo vamos a abrir, y este activity_maps lo que contiene es un Fragment, es un Fragment que aquà le está asignando, pues su clase, su contexto, que es nuestro contexto MapsActivity, y que tiene como id map. Asà le colocaron, él se llama map. Tiene un Android name que proviene, este proviene de SupportMapFragment. Si observas, aquà es donde estamos utilizando la librerÃa que importamos de Gradle. Y entonces este Fragment es un Fragment que está listo y está diseñado para soportar mapas. Probablemente de inicio no podremos ver nada porque, pues no, es un poco complicado ver los, tener una vista previa en los Fragment. Pero este id, este id map es el que estamos asociando en nuestro método onCreate a nuestro método mapFragment, ¿ok? Si observas esta clase, SupportMap, todo esto proviene de la, de la librerÃa com.google.android.gms.maps, etcétera, que es lo que estuvimos importando en nuestro Gradle. Entonces aquà tenemos esto, MapsAsync, etcétera. Y entonces, bueno, esta clase es la que hace la magia de estar mostrando en este, en este fragmento, en esta etiqueta nuestro mapa, pero además de eso se configuraron otras cosas. Entonces hasta el momento hemos visto una clase, un archivo, un layout, que eso es fácil, lo sabemos, lo entendemos. Y tenemos por aquà un Android manifest. En nuestro Android manifest también se han integrado algunas cosas. En primer lugar, un permiso de geolocalización, tenemos este, que ACCESS_FINE_LOCATION. Que incluso aquà you nos da como una guÃa de lo que estamos integrando y más abajo, estamos pues también dando de alta nuestro activity. Esto también lo estamos haciendo, estamos dando de alta nuestra actividad. Y además estamos por aquà en esta etiqueta que se llama meta-data. Es donde nosotros necesitamos definir el API_KEY. Entonces, hasta ahorita, los pasos que hemos hecho, es que hemos creado un proyecto de Google, e incluso you le hemos integrado una actividad que soporta mapas. A continuación hemos activado los mapas de, en nuestra consola de developers, que eso lo hicimos dando de alta únicamente un proyecto. Es lo único que hemos hecho. Lo que nosotros necesitamos es precisamente registrar nuestro proyecto de Android aquÃ, en la consola de Google para que a partir de eso nos devuelva un identificador o un API_KEY. Y entonces esa API_KEY es la que vamos a estar nosotros aquà integrando en nuestro proyecto, asà como en los web service, que también lo trabajamos. Es lo que vamos, eso lo estaremos integrando a nuestro proyecto para que podamos estar con nuestra API_KEY trayendo, consultando los mapas y trayéndolos desde aquÃ. Entonces esta API_KEY, él dice la está obteniendo desde un archivo string, que se llama google_maps_api_key y que aquà está, ajá. Entonces yo te comentaba que tenÃamos por ahà que generar un keystore, y que tenÃamos que obtener un SHA de la aplicación y entonces asignarlo con el Package, etcétera. Pero en este archivo, Google Maps API.XML, que lo vas a encontrar aquà en, dentro de la carpeta values, google_maps_api. En ese archivo vienen los pasos o viene una url clave, esta que está aquÃ, esta url, para que automáticamente, todo ese proceso, you se dé de alta por sà solo. De entrada, el proyecto, nosotros al crear una actividad como definida por Google, de Google Maps. De entrada you nos devolvió un SHA, you firmó la aplicación, you usó el debug keystore, y you firmó la aplicación y además le colocó, bueno, viene asociado con el Package del proyecto, ¿ok? Nosotros podrÃamos hacer esto manualmente, simplemente aquÃ, pues yendo a las credenciales y entonces integrando precisamente ese API_KEY, ¿ok? Aquà es donde nos lo pide, nombre del paquete. Este es el nombre del paquete y también el certificado de huella digital. Pero vamos a hacerlo a través de la url, ¿ok? Entonces voy a copiar la url y se supone que posterior a configurar estos pasos, nos debe devolver nuestra API_KEY. ¿Ok? Entonces you tengo dado de alta mi proyecto. Voy aquà a ponerle un control v con el, la url que copié de mi googlemapsapi.xml. Y bien, lo que nos pide es, ahora, selecciona el proyecto al cual quieres asociar ese SHA, con ese Package le voy a decir que mi proyecto se llama MisMapas y le voy a dar continuar, ¿ok? Le voy a dar continuar y, ¡perfecto! you lo ha hecho todo. La API se ha habilitado. Google Maps Android API se ha habilitado. A continuación puedes usar el API que necesitas. Le voy a dar ir a las credenciales y listo. Aquà you le ha puesto los datos que yo necesito. Le voy a poner Clave de Android para MisMapas. Clave de Android para mis Mapas y le voy a dar crear. Y entonces ahora you lo estoy creando. you nos ha devuelto el API_KEY que necesitamos. Bien, esto lo vamos a copiar. Dice copiado y esto es lo que vamos a integrar en nuestro proyecto de Android. Recuerda que esa función, eso funciona como nuestra llave para solicitar los datos. Justamente en esta etiqueta que dice android_maps_key, le vamos a poner YOUR _KEY_HERE, aquà le vamos a pegar nuestra API. Listo. you tenemos listo, you tenemos perfectamente configurado nuestro proyecto. Entonces vamos a ver qué requerimientos necesitamos para correr este proyecto en el caso de un emulador. En el caso del teléfono, en el caso de un emulador lo que necesitamos es que, bueno, tenga pues un sistema operativo mÃnimo al que configuramos en nuestro proyecto. Y además que el sistema operativo venga con las Google APIs integradas, ¿ok? Esto es muy importante. Siempre que nosotros queramos emular o siempre que queramos probar nuestro proyecto en un emulador, y si este proyecto está trabajando con Google APIs, necesitamos que el emulador tenga también las Google APIs sin quebradas. ¿Cómo defino eso? Por ejemplo, aquà yo puedo poner mi hardware y aquÃ, una vez que he seleccionado mi hardware, pues recuerda que tenemos aquÃ, por ejemplo, Lollipop x86 y dice Android 5.1 with Google APIs. Eso es lo que necesitamos. En este caso solamente dice Android 4.4, que no tiene las Google APIs. Si yo selecciono este, aunque cumpla con el mÃnimo de API, no voy a poder, no voy a poder correr mi proyecto, no lo voy a poder emular. De hecho, al seleccionarlo, aquà justamente, me aparece un mensaje donde dice, considera utilizar una imagen con, que tenga integrado Google API para habilitar el testing con Google Play, ¿ok? Entonces, bueno, tenemos que asegurarnos que el sistema operativo que tiene seleccionado ese emulador tenga Google APIs. Entonces yo you tengo uno, simplemente lo voy a habilitar. Voy a correrlo para ver qué es lo que nos ha creado. Ok, entonces mientras esto corre vamos aquÃ, voy a darle Ok. Mientras esto corre, vamos a nuestro MapsActivity y vamos a ver qué es lo que veremos. Como te comenté, dice que trae un marcador, you viene predefinido para que cuando abra nuestro mapa nos aparezca en Sydney, ¿ok? Entonces, bueno Aquà esto lo hacemos a base que ponemos la latitud y la longitud en el caso de Sydney, ok. Si nosotros quisiéramos abrir otro lugar, bueno podemos también ir a, hay muchos sitios web que te dan la latitud y la longitud de un lugar en especÃfico, entonces yo voy a ver por ejemplo México D.F latitud y longitud, ok. Bien, entonces aquà voy a darle clic en este enlace. Y bueno, aquà en este enlace viene una lista de todas las latitudes y longitudes en el caso de México de todos los estados. Hay otro que a mi en lo personal me gusta también bastante que es este tiene, le vamos a poner aquà latitud longitud bufa, bufa, asà se llama el sitio bufa.es. También lo puedes obtener a base del Google Maps, pero tiene como un poco más de pasos. Y entonces este me gusta porque aquà tienes un puntero que dice más y entonces tú puedes seleccionar el lugar que sea y aquà nos va dando la latitud y la longitud. Entonces voy a poner aquà un poquito que esté precisamente en la ciudad de México, ahà está, y entonces aquà you me está dado mi latitud y mi longitud, dice escribe un lugar, ¿no? Bueno, también puedes hacerlo de esa forma. Voy a dar de alta por aquà esto, you abrió, perfecto. Entonces voy a dar de alta y en vez de que sea Sydney lo vamos a comentar y vamos a crear un objeto que sea LatLng y le vamos a poner México, ok. Le voy a poner new, new LatLng y la latitud es lo que acabo de seleccionar y la longitud es este elemento. Ok, ahà está, perfecto. Vamos a dar punto y coma. Listo, entonces ahora la posición, todo lo demás que va a poner aquà va a ser México, Marker en México, ok. Y algo que nos está faltando ahorita es que únicamente hicimos un activity main que tenga un botón, aquà está nuestro botón. Tenemos que hacer que ese botón pues vaya a la actividad que hemos definido, y entonces vamos a hacer un método, ok, vamos a hacer un método en nuestro main activity, voy a hacer un public public void ir a mapa. Ajá, esto como tal cual lo sabemos hacer, ok. Y esto es un intent, sencillito como lo conocemos, de pasar de un activity a otro, ok. Le voy a decir que vaya a Maps.class y le voy a decir que startActivity, ok. Y también debemos asignar este método a nuestro botón de nuestro layout, ok. Vamos a poner aquà android:onClick ir al mapa. Lo correremos. [AUDIO EN BLANCO] Y you he corrido bien. Entonces vamos a ir a darle clic donde dice ir al mapa y voilá, nos está abriendo un mapa que está situado exactamente en el marcador que le hemos dicho. Si tú no hubieras colocado ningún marcador, bueno, incluso si observas pues la precisión de mi puntero no fue tanta, entonces nos abre como un poquito más allá del puntero de la ciudad de México. Pero en la latitud exacta que tú coloques y la longitud exacta que tú coloques por aquÃ, será el puntero que nos esté abriendo. Entonces ahà en el sitio de Google puedes personalizar este mapa tanto como tú quieras, como te platiqué. Bueno aquà hay algunos ejemplos, incluso cambiar el tipo de mapa, un mapa hÃbrido, un mapa que nos muestre el terreno de la zona. Podemos además colocar marcadores personalizados aquà también, marcadores personalizados en nuestro mapa y además con múltiples marcadores personalizados donde queramos. Entonces de esta forma es cómo estaremos integrando mapas en nuestros proyectos de Android. [MUSIC]