Sunteți pe pagina 1din 24

POSICIONAMIENTO

 CON  ANDROID  
 
El   posicionamiento   viene   asociado   a   los   mecanismos   de   localización   o   geolocalización.   La  
geolocalización  es  la  capacidad  para  obtener  la  ubicación  geográfica  real  de  cualquier  cosa,  como  
un   sitio,   una   persona,   un   teléfono   móvil   o   un   computador   conectado   a   Internet.     La  
geolocalización  puede  referirse  a  la  consulta  de  la  ubicación  o  posición  de  estas  cosas.  
 
¿Porqué  es  importante  la  localización?    
 
¿Qué  aplicaciones  conoces  que  usan  la  localización?  
 
Los   servicios   de   localización   en   Android   se   basan   principalmente   en   el   GPS,   pero   también   se  
dispone  de  servicios  de  localización  basados  en  telefonía  móvil  y  redes  Wi-­‐Fi.  
 
A  continuación,  se  explicarán  conceptos  básicos  asociados  a  estos  tipos  de  localización.  
 
LOCALIZACION  BASADA  EN  GPS  
 
El   siguiente   texto   fue   tomado   de   la   página   oficial   del   sistema   GPS   de   los   Estados   Unidos  
https://www.gps.gov/spanish.php.  
 
“El  Sistema  de  Posicionamiento  Global  (GPS)  es  un  sistema  de  radionavegación  de  los  Estados  
Unidos  de  América,  basado  en  el  espacio,  que  proporciona  servicios  fiables  de  posicionamiento,  
navegación,  y  cronometría  gratuita  e  ininterrumpidamente  a  usuarios  civiles  en  todo  el  mundo.  
A  todo  el  que  cuente  con  un  receptor  del  GPS,  el  sistema  le  proporcionará  su  localización  y  la  
hora  exacta  en  cualesquiera  condiciones  atmosféricas,  de  día  o  de  noche,  en  cualquier  lugar  del  
mundo  y  sin  límite  al  número  de  usuarios  simultáneos.  
 
El  GPS  se  compone  de  tres  elementos:  los  satélites  en  órbita  alrededor  de  la  Tierra,  las  estaciones  
terrestres  de  seguimiento  y  control,  y  los  receptores  del  GPS  propiedad  de  los  usuarios.  Desde  el  
espacio,  los  satélites  del  GPS  transmiten  señales  que  reciben  e  identifican  los  receptores  del  GPS;  
ellos,  a  su  vez,  proporcionan  por  separado  sus  coordenadas  tridimensionales  de  latitud,  longitud  
y  altitud,  así  como  la  hora  local  precisa”.  
 
El   proceso   para   conocer   la   posición   de   un   objeto   se   realiza   mediante   el   uso   de   un   mínimo   de   4  
satélites.   Cada   satélite   envía   los   datos   de   identificación   y   hora   (la   cual   es   tomada   a   partir   de   un  
reloj   atómico   de   muy   alta   precisión).   A   partir   de   cada   una   de   las   señales   enviadas   al   dispositivo  
receptor,  se  sincroniza  el  reloj  del  GPS  para  medir  el  tiempo  que  tarda  en  llegar  cada  señal,  y  así  
poder   calcular   la   distancia   que   existe   entre   el   punto   de   medición   y   los   cuatro   satélites   que  
intervienen  en  el  proceso.  A  este  método  se  le  denomina  trilateración  inversa.  La  precisión  de  los  
datos   que   se   reciban   dependerá   en   gran   medida   del   número   de   satélites   que   intervengan   en   el  
proceso  y  de  su  posición  geométrica.  
 
Las  coordenadas  que  se  obtienen  en  un  sistema  GPS,  a  partir  de  los  meridianos  y  paralelos  de  la  
red  geográfica  son:  
 
•   Latitud:   Es   la   distancia   angular   entre   la   línea   ecuatorial   y   un   punto   determinado   de   la  
Tierra,  medida  a  lo  largo  del  meridiano  en  el  que  se  encuentra  dicho  punto  (dependerá  
del  hemisferio  en  el  que  se  sitúe  el  receptor).    
•   Longitud:  Es  la  distancia  angular  que  existe  entre  el  meridiano  de  Greenwich  y  un  punto  
cualquiera  de  la  Tierra,  medida  sobre  el  paralelo  que  pasa  por  dicho  punto.    
•   Altitud:  Es  la  distancia  vertical  a  un  origen  determinado,  considerado  como  nivel  cero  el  
nivel  medio  del  mar.  
 
Las  características  más  importantes  de  este  sistema  son:    
 
•   Tiene  una  cobertura  mundial.  
•   Tiene   una   alta   precisión   de   incluso   2,5   metros   con   los   sistemas   convencionales   de  
teléfono  móvil.  Utilizando  técnicas  como  GPS  diferencial  se  puede  llegar  hasta  precisiones  
de  un  metro.  
•   No  funciona  en  el  interior  de  edificios,  dado  que  las  señales  de  microondas  que  utilizan  
los  satélites  no  pueden  atravesar  las  paredes.  
•   Tiene  un  consumo  de  batería  muy  grande.  
 
¿En  qué  consiste  el  GPS  diferencial?  
 
 
LOCALIZACION  BASADA  EN  REDES  MÓVILES  
 
El   sistema   de   radiocomunicaciones   en   el   que   se   basa   la   telefonía   móvil   se   basa   en   una   gran  
cantidad  de  torres  con  antenas  (estaciones  base)  que  se  encargan  de  enviar  y  recibir  señales  de  
radio   hacia   los   dispositivos   móviles.   Cada   estación   base   cubre   un   determinado   espacio  
denominado   celda.   Los   dispositivos   móviles   tienen   transmisores   de   baja   potencia   que   le  
permiten  comunicarse  con  la  antena  de  la  estación  base  más  cercana.  
 
Cuando  el  dispositivo  móvil  está  en  movimiento  va  tomando  la  señal  de  la  estación  base  más  
cercana  y  por  tanto  va  saltando  de  una  celda  a  otra  cuando  va  perdiendo  la  señal  de  una  estación  
base  y  va  acercándose  a  otra.  Las  estaciones  base  se  encargan  de  monitorizar  la  fuerza  de  la  señal  
del  dispositivo  móvil.  En  sitios  rulares  las  torres  de  comunicación  están  más  separadas  y  por  eso  
a   veces   la   señal   se   pierde.   La   señal   también   se   puede   interrumpir   en   lugares   con   muchas  
montañas  o  edificios  altos.  Esta  conexión  a  diferentes  estaciones  bases,  es  la  que  permite  calcular  
la  posición  del  dispositivo.  
 
Un  dispositivo  móvil  puede  determinar  su  posición  por  tres  parámetros:    
 
1.   La  distancia  a  las  torres  de  telefonía  
2.   Tiempo  que  tarda  la  señal  en  ir  y  volver  a  una  torre    
3.   La  potencia  de  la  señal  recibida.    
 
La  localización  ocurre  gracias  a  la  triangulación  de  las  señales  de  radio  entre  (varias)  torres  de  
radio  de  la  red  y  el  teléfono.  
 
Algunas  características  de  este  método  de  localización  son  las  siguientes:  
 
•   Posee  una  gran  cobertura,  igual  a  la  cobertura  de  la  red  telefónica  móvil.  
•   La  precisión  no  es  demasiado  buena,  maneja  una  precisión  de  unos  200  metros  en  áreas  
urbanas  donde  la  concentración  de  antenas  es  mucho  mayor,  pero  en  áreas  rurales  donde  
existen  muchas  menos  antenas  se  pueden  tener  precisiones  de  entre  2  y  4  kilómetros.  
•   Funciona   en   el   interior   de   edificios   dado   que   utiliza   una   señal   de   radio   que   puede  
atravesar  paredes.  
•   El  consumo  es  mínimo.  
 
LOCALIZACIÓN  BASADA  EN  WiFi  
 
La  localización  basada  en  WiFi  se  vale  de  los  puntos  de  acceso  que  se  tienen  a  disposición,  los  
cuales   están   creciendo   de   manera   acelerada.   En   las   ciudades   se   tienen   una   gran   cantidad   de  
puntos  de  acceso,  los  que  han  sido  ubicados  por  las  administraciones  locales,  por  las  empresas  o  
por  particulares.  
 
Cada  punto  de  acceso  continuamente  está  enviando  señales  de  radio  para  poder  ser  detectado  
por   los   dispositivos   móviles.   Midiendo   la   intensidad   de   esta   señal   y   a   través   de   la   identificación  
de  los  puntos  de  acceso,  se  puede  determinar  la  ubicación  del  dispositivo  móvil.  
 
El  problema  mayor  radica  en  que  los  puntos  de  acceso  pueden  cambiar  de  posición  y  no  se  podría  
saber   con   certeza   cuál   es   su   posición,   y   esta   información   es   imprescindible   para   el   cálculo   de   la  
posición  del  dispositivo.  Esto  se  soluciona  por  medio  de  un  entrenamiento,  en  el  cual  se  tratará  
de   estimar   cuáles   son   los   puntos   de   acceso   disponibles   y   donde   están   situados   y   con   esta  
información  se  crea  una  base  de  datos  que  podrá  ser  consultada  por  los  dispositivos  móviles.  
 
Las  características  más  importantes  de  este  sistema  de  localización  son:  
 
•   La   cobertura   depende   de   los   puntos   de   acceso   WiFi   ubicados   y   del   proceso   de  
entrenamiento  realizado.  En  zonas  rurales  la  cobertura  sería  muy  baja  o  nula  debido  a  la  
escasez  de  puntos  de  acceso.  
•   Se  podría  tener  cobertura  en  interiores  (dentro  de  edificios)  si  dentro  de  ellos  se  cuenta  
con  varios  puntos  de  acceso.  
•   El  consumo  de  batería  es  menor  que  con  GPS.  
•   Disponible  para  todo  dispositivo  que  tenga  WiFi.  
 
API  DE  LOCALIZACION    
 
Para  trabajar  con  localización  en  Android  se  usa  al  API  de  Google  “Google  Play  services  location  
APIs”,  la  cual  facilita  agregar  información  de  la  ubicación  a  las  aplicaciones,  además  permite  hacer  
seguimiento   de   ubicación   automatizado,   geofencing   y   el   reconocimiento   del   inicio   de  
actividades.  
 
¿En  qué  consiste  el  geofencing?  
 
Para  desarrollar  una  aplicación  utilizando  las  API  de  Google  Play,  se  debe  configurar  el  proyecto  
con  el  SDK  de  servicios  de  Google  Play.  Para  hacer  esto  se  deben  actualizar  las  herramientas  del  
IDE  y  del  SDK.  
 
La  actualización  de  las  herramientas  se  hace  desde  el  manejador  del  SDK  (SDK  Manager).  Para  
abrirlo  se  puede  hacer  de  dos  formas:    
 
1.   Tools  >  Android  >  SDK  Manager    
2.   SDK  Manager    en  la  barra  de  herramientas.  
 
Se  abrirá  la  siguiente  interfaz:  
 

 
 
Se   debe   verificar   que   Google   Play   Services   esté   instalado,   en   caso   de   que   no   lo   esté   se   debe  
instalar.  
 
Para  probar  su  aplicación  cuando  usa  el  SDK  de  servicios  de  Google  Play,  debe  usar:  
 
•   Un  dispositivo  Android  compatible  que  ejecuta  Android  4.0  o  superior  e  incluye  Google  
Play  Store.  
•   El   emulador   de   Android   con   un   AVD   que   ejecuta   la   plataforma   API   de   Google   basada   en  
Android  4.2.2  o  superior.  
 
 
Mostremos  algunos  conceptos  importantes  a  través  de  un  ejemplo:  
 
Desarrollaremos  una  aplicación  muy  sencilla  que  a  través  de  unos  cuadros  de  texto  muestra  la  
posición  del  dispositivo  y  por  medio  de  un  botón  solicita  actualizaciones  de  dicha  posición.  
 
Realizaremos  el  proceso  paso  a  paso.  
 
1.   Creamos   el   proyecto   en   Android   Studio,   teniendo   en   cuenta   las   restricciones  
mencionadas,  sobre  la  mínima  versión  de  Android,  usaremos  una  plantilla  de  actividad  
vacía  y  le  daremos  el  nombre  LocalApp.  
 

   
 
2.   Siempre   que   se   quiera   hacer   uso   de   los   Google   Play   Services   se   debe   añadir   a   la   sección  
de  dependencias  del  archivo  build.gradle  la  referencia  a  las  librerías  necesarias.  En  el  caso  
de   estos   servicios   existen   dos   alternativas,   se   puede   añadir   la   referencia   a   la   librería  
completa  de  Google  Play  Services,  que  daría  acceso  a  todos  los  servicios  disponibles,  o  
bien  utilizamos  las  librerías  independientes  de  cada  servicio  que  se  vaya  a  utilizar.  En  este  
ejemplo  usaremos  la  librería  específica  de  localización.  
 
 
 
 
3.   Procederemos  a  crear  el  Layout  que  contendrá  los  dos  campos  de  texto  y  el  botón.  
 

 
 
4.   En   la   Activity   correspondiente   vamos   a   crear   referencias   a   cada   uno   de   los   recursos  
creados  en  el  Layout.  
 
 
 
5.   Creamos   un   método   que   obtenga   los   datos   de   latitud   y   longitud   y   los   ubique   en   los  
campos   de   texto   correspondientes.   Para   esto   tenemos   que   usar   un   objeto   del   tipo  
Location.    El  objeto  Location  encapsula  los  datos  principales  de  una  dirección  geográfica  
(latitud   y   longitud),   a   estos   datos   se   puede   acceder   mediante   los   métodos   getLatitude()  
y  getLongitude().  Recuerda  que  hay  que  añadir  los  include  de  las  librerías,  lo  cual  Android  
Studio  hace  automáticamente  con  alt  +  enter.  
 

 
6.   En  este  punto  crearemos  el  objeto  Location  que  deberá  ser  pasado  a  la  función  creada  en  
el  punto  anterior.  Para  ello  se  deben  hacer  varias  cosas.  
a.   Crear   un   objeto   de   tipo   GoogleApiClient,   a   través   del   cual   se   accederá   a   los  
servicios  de  Google  Play.  
 

 
 
Saldrán  varios  errores,  ya  que  hay  que  implementar  los  Listener  y  los  Callback.  Con  alt+enter  
Android  Studio  lo  hará  automáticamente.  
 

 
 

 
 
.

 
 

 
 
Para  la  creación  del  objeto  tipo  GoogleApiClient  se  tienen  en  cuenta  los  siguientes  parámetros:  
 
•   enableAutoManage():   Permite   que   la   gestión   de   la   conexión   a   los   servicios   se   realice  
automáticamente.   Este   método   recibe   dos   parámetros,   la   referencia   a   la   actividad   en  
donde   se   realizará   la   conexión/desconexión   a   los   servicios,   en   nuestro   caso   todo   lo  
hacemos  en  la  actividad  principal  (this).  El  segundo  parámetro  es  la  referencia  al  listener  
(de  tipo  OnConnectionFailedListener)  que  se  llamará  en  caso  de  producirse  algún  error  
que  el  sistema  no  pueda  gestionar  automáticamente.  En  nuestro  caso  haremos  que  la  
propia  actividad  principal  implemente  la  interfaz  OnConnectionFailedListener,  por  lo  que  
también   pasaremos   this   en   este   segundo   parámetro.   Para   implementar   esta   interfaz  
tendremos  que  definir  el  método  onConnectionFailed().  Si  miras  el  código  todo  esto  se  
hizo  de  manera  automática  cuando  corregimos  los  errores.  
•   addConnectionCallbacks():   Indica   cual   será   el   listener   que   responderá   cuando   hayan  
conexiones   y   desconexiones   a   los   servicios.   Se   debe   indicar   cuál   será   la   actividad   donde  
se  implemente,  que  en  nuestro  caso  será  la  misma  actividad  principal  o  sea  this.  Para  ello  
se   debe   implementar   la   interfaz   necesaria   y   los   métodos   onConnected()   y  
onConnectionSuspended().   Si   miras   el   código   todo   esto   también   se   hizo   de   manera  
automática  cuando  corregimos  los  errores.  
•   addAPI():  Indica  la  API  de  los  servicios  a  los  que  se  va  a  acceder.  
•   build():   Realiza   la   construcción   del   objeto.   Esto   iniciará   la   conexión   con   los   servicios  
solicitados,  se  tendrá  una  llamada  al  evento  onConnectionFailed()  en  caso  de  error,  o  al  
evento  onConnected()  en  el  caso  de  funcionar  todo  correctamente.  
b.   El  siguiente  paso  será  implementar  el  código  de  los  métodos  que  se  crearon.  
 
•   Método  onConnected()  :  Este  es  el  método  en  donde  se  crea  el  objeto  Location  y  se  pasa  
a  la  función  obtenerLoc.  Para  ello  se  obtiene  la  última  posición  geográfica  conocida  (La  
API  nunca  entrega  la  posición  actual  si  no  la  última  conocida,  en  caso  de  que  no  haya  
ninguna   devuelve   null),   lo   que   se   hace   llamando   al   método   getLastLocation()   del  
proveedor  de  datos  de  localización  LocationServices.FusedLocationApi,  pasándole  como  
parámetro  la  referencia  al  cliente  API  que  se  creó  anteriormente.  
 

 
 
Para   corregir   los   errores   lo   primero   que   se   debe   hacer   es   añadir   los   permisos   a   la   aplicación,   lo  
cual  hará  Android  automáticamente  cuando  le  des  alt+enter  en  el  error.  

 
Esto  añadirá  el  permiso  en  el  archivo  manifest.  
 
 
El  error  en  apiClient  se  debe  a  que  no  se  ha  declarado  la  variable  como  private.  Al  hacerlo  quedará  
de  la  siguiente  manera:  
 

 
 
Para  consultar  en  tiempo  de  ejecución  si  se  dan  los  permisos  por  parte  del  usuario  para  acceder  
a  lo  localización,  se  deberá  implementar  el  siguiente  código:  
 
 
 
El   if   implementado,   lo   que   hace   es   chequear   si   NO   se   tiene   el   permiso   en   la   aplicación  
(ACCESS_FINE_LOCATION),   en   este   caso   lo   que   se   hace   es   solicitar   los   permisos   al   usuario,   la  
respuesta  se  asocia  al  identificador  101  en  este  caso.  
 
Para  saber  cuál  fue  la  respuesta  del  usuario,  se  debe  implementar  un  método,  que  mostramos  a  
continuación:  
 

 
 
Lo   primero   que   se   hace   en   este   método   es   verificar   con   respecto   al   identificador   que   se   colocó  
en  el  requerimiento  (101)  si  la  respuesta  del  usuario  fue  conceder  el  permiso,  en  tal  caso  se  crea  
el   objeto   Location   y   se   llama   a   la   función   obtenerLoc().   En   caso   contrario   se   coloca   un   mensaje  
de  error.  
 
•   Métodos   onConnectionFailed()   y   onConnectionSuspended().   En   estos   métodos  
simplemente  enviaremos  un  mensaje  de  error.  
 
7.   Si   ejecutamos   el   proyecto   en   este   punto,   en   el   emulador   podemos   obtener   los   datos   de  
la  última  localización  que  se  realizó,  o  si  es  la  primera  vez  que  se  ejecuta  alguna  aplicación  
que  requiere  ubicación  se  mostrará  el  mensaje  de  latitud  y  longitud  desconocida,  ya  que  
nunca  antes  se  habían  obtenido  estos  datos,  recuerden  que  siempre  se  dá  el  dato  de  la  
última  localización  obtenida.  
 

 
 
8.   Lo   que   debemos   hacer   ahora   es   implementar   la   funcionalidad   del   botón   (ToggleButton)  
que  colocamos  en  el  Layout.  Para  ello  creamos  el  Listener  y  desarrollamos  un  método  
(estadoBoton)  que  defina  que  hacer  cada  vez  que  se  pulse  el  botón.  La  idea  del  botón  es  
habilitar  o  deshabilitar  las  actualizaciones  de  localización.  
 

 
9.   Se   deberán   implementar   las   funciones   habilitar()   y   deshabilitar()   y   todos   los   métodos  
asociados.    
 
Función  habilitar():  
 

 
Miremos  en  detalle  cada  parte:  
 
•   Lo   primero   que   se   debe   hacer   es   definir   los   requerimientos   que   tiene   la   aplicación   en  
cuanto  a  la  localización.  Para  ello  se  debe  crear  un  objeto  del  tipo  LocationRequest  (la  
variable  locRequest  se  debe  definir  como  privada  al  inicio).  Aquí  se  define  cada  cuanto  
queremos  recibir  actualizaciones  de  la  posición  (setInterval),  la  velocidad  máxima  en  que  
la   aplicación   es   capaz   de   procesar   nuevos   datos   de   ubicación   (setFastestInterval)   y   la  
precisión  que  se  requiere  (setPriority).    
•   Se   creará   un   objeto   LocationSettingsRequest   al   que   se   le   pasará   el   LocationRequest  
creado  en  el  paso  anterior.  Este  objeto  se  encargará  de  comparar  la  configuración  del  
dispositivo  con  los  requerimientos  definidos  en  el  objeto  LocationRequest.  El  resultado  
de   la   comparación   lo   entrega   en   un   objeto   del   tipo   PendingResult   que   se   ha   llamado  
result.  Para  este  objeto  hay  que  definir  el  evento  onResult()  para  conocer  el  resultado  de  
la  comparación  una  vez  esté  disponible.  Este  evento  recibe  como  parámetro  un  objeto  
LocationSettingsResult,  cuyo  método  getStatus()  contiene  el  resultado  de  la  comparación.  
•   El  resultado  de  la  comparación  puede  contener  3  posibles  valores,  por  lo  que  se  crea  un  
switch-­‐case   para   implementar   el   código   en   cada   situación.   Los   3   posibles   valores   son:  
SUCCESS,  RESOLUTION_REQUIRED  y  SETTINGS_CHANGE_UNAVAILABLE.  Veamos  que  se  
hace  en  cada  uno  de  ellos:  
•   SUCCESS:  Este  valor  significa  que  la  configuración  es  adecuada  por  tanto  se  puede  solicitar  
la   actualización   de   la   ubicación,   por   ello   se   llama   a   la   función   iniciarUpdates()   que  
implementaremos  más  adelante.  
•   RESOLUTION_REQUIRED:   Significa   que   el   usuario   debe   cambiar   la   configuración   del  
dispositivo,  necesitamos  solicitar  al  usuario  que  cambie  la  configuración  del  sistema.  Esta  
solicitud  está  ya  implementada  en  la  api,  por  lo  que  tan  sólo  tendremos  que  llamar  al  
método   startResolutionForResult().   Este   método   recibe   una   referencia   a   la   actividad  
principal  y  una  constante  arbitraria  (en  este  caso  definimos  102)  que  después  nos  servirá  
para  obtener  el  resultado  de  la  operación.  Si  hay  algún  error  se  coloca  el  botón  en  falso,  
para  indicar  que  no  se  pueden  hacer  actualizaciones  de  la  ubicación.  
•   SETTINGS_CHANGE_UNAVAILABLE:   Este   valor   indica   que   el   dispositivo   no   se   puede  
ajustar  a  los  requerimientos  y  por  tanto  el  botón  se  coloca  en  falso  para  indicar  que  no  se  
pueden  hacer  actualizaciones  de  la  ubicación.  
•   Por  último  se  debe  implementar  la  función  que  quedó  pendiente  iniciarUpdates().  
 
Función  iniciarUpdates()  
 

 
 
En   esta   función,   si   se   tiene   el   permiso   para   acceder   a   la   localización,   a   través   del   objeto  
LocationServices  se  hace  el  requerimiento  de  actualizar  la  ubicación.  Se  llama  al  método  
requestLocationUpdates(),   pasándole   como   parámetros   el   cliente   API,   el   objeto  
LocationRequest   construido   al   inicio   y   una   referencia   al   objeto   que   implementará   la  
interfaz   LocationListener,   cuyo   método   onLocationChanged()   recibirá   los   datos   de  
ubicación  actualizados.  
 
Para  esto  se  debe  hacer  que  MainActivity  implemente  el  LocationListener:  
 

 
 
Esto  implicará  que  se  debe  añadir  el  método  para  recibir  los  datos  de  la  ubicación.  Esto  lo  
hace  automáticamente  Android  Studio.  Si  le  damos  alt+enter  en  el  error  se  generarán  las  
siguientes  pantallas  para  crear  el  método.  
 

 
 

     
 
 
 
Función  onLocationChanged()  
 

 
   
Aquí   lo   único   que   debemos   hacer   es   llamar   a   la   función   obtenerLoc()   para   mostrar   la   nueva  
ubicación  en  la  interfaz.  
 
Función  deshabilitar():  
 

 
 
Por   último,   la   función   deshabilitar()   se   encargará   de   detener   la   actualización   de  
ubicaciones,   para   ello   se   llama   al   método   removeLocationUpdates()   de   la   API   de  
localización.  
 
10.  Finalmente   ejecutamos   el   proyecto   y   verificamos   que   actualice   periódicamente   la  
ubicación.   Como   esto   lo   estamos   haciendo   en   el   emulador,   utilizamos   los   controles  
extendidos  del  mismo  para  enviar  datos  de  localización  simulados.  
 
 
 
 
   
MAPAS  EN  ANDROID  
 
Vamos  a  crear  un  proyecto  que  nos  permita  mostrar  un  mapa  en  una  aplicación  móvil  y  añadirle  
un  marcador.  Inicialmente  añadiremos  un  marcador  fijo  y  después  le  añadiremos  un  marcador  
cuyos  datos  traeremos  desde  otra  actividad.  
 
Para   el   desarrollo   de   este   proyecto   usaremos   la   api   Google   Maps   para   Android,   para   ello  
debemos  tener  instalado  el  paquete  de  Google  Play  Services,  lo  cual  ya  hicimos  para  el  ejemplo  
anterior.  
 
Veamos  el  paso  a  paso.  
 
1.   Creamos  un  proyecto  en  Android  Studio  y  utilizaremos  una  activity  de  mapas  que  el  ya  
trae  configurada.  

   
 

   
 
2.   Debemos  crear  una  API  Key  para  poder  usar  los  servicios  de  google  maps.  Para  hacer  esto  
seguimos   las   instrucciones   que   están   en   el   archivo   google_maps_api.xml,   que   se   abre  
apenas  se  crea  el  proyecto.  
 

 
 
Hay  que  ir  al  link  que  aparece  en  el  archivo  y  seguir  los  pasos  que  ahí  se  indican:  
 

   

 
 
La  clave  generada  se  copia  en  el  mismo  archivo  según  las  indicaciones:  
 
 
 
3.   Miremos  el  código  generado  en  el  Layout.  
 

 
 
Vemos  que  en  Layout  se  ha  creado  un  fragment.  
 
¿Qué  es  un  fragment  y  cuáles  son  sus  principales  características?    
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4.   Ahora  analicemos  el  código  de  la  actividad.  
 
AIzaSyCEa861

Fwls0mg3-6hoey9X6vWbvczHwp0
En   el   método   onCreate()   se     asocia   a   la   actividad   el   layout   activity_maps,   luego   se   crea   un  
controlador  para  el  fragmento    que  se  definió  en  el  layout  con  el  identificador  map  con  la  llamada  
a   FragmentManager.findFragmentById(R.id.map).   La   función   getMapAsync()   se   usa   para  
registrar  el  callback  del  mapa.  
 
Cuando   el   objeto   GoogleMap   esté   disponible   se   pasa   a   la   función   onMapReady()   la   cual   se  
encarga  de  ubicar  el  objeto  del  tipo  LatLng  como  un  marcador  en  el  mapa.  El  objeto  LatLng  tiene  
como  parámetros  la  latitud  y  la  longitud,  en  este  caso  de  Sidney.  
 
El  objeto  GoogleMap  tiene  varios  métodos.  El  método  addMarker  permite  poner  el  marcador  y  
el  método  moveCamera  permite  mover  la  cámara  teniendo  como  punto  de  referencia  una  latitud  
y  longitud  definida.  
 
5.   Cambiemos   el   marcador   del   mapa   y   ubiquémoslo   en   la   Universidad   Autónoma   de  
Occidente.  
 
 
 
6.   Ejecutemos  el  proyecto  y  miremos  el  resultado.  Podemos  cambiar  el  zoom  y  acercar  más  
la  imagen.  
 

   
 
LOCALIZACION  Y  MAPAS  
 
En   el   siguiente   video   veremos   todo   el   proceso   de   desarrollo   de   una   aplicación   que   combina   los  
dos   ejemplos   vistos   anteriormente.   Se   trata   de   una   aplicación   sencilla   que   adquiere   la   última  
ubicación  del  dispositivo  y  muestra  dicha  ubicación  en  un  mapa,  en  el  mapa  también  se  ubicara  
un  marcador  de  un  sitio  predeterminado.  
 
 
loc-­‐map.mov  

S-ar putea să vă placă și