12/01/2026
Desarrollar aplicaciones que se adaptan a la ubicación del usuario es fundamental en la actualidad. Sin embargo, la gestión de la ubicación se ha vuelto más compleja debido a la creciente importancia del consentimiento del usuario. En Android, existen dos APIs principales para acceder a la información de ubicación: el Location Manager y el Fused Location Provider. Este artículo detalla las diferencias entre ambos y proporciona una información con ejemplos de código para implementar la localización en tus aplicaciones.

Location Manager vs. Fused Location Provider : Una Comparativa
Tanto el Location Manager como el Fused Location Provider permiten obtener la ubicación del usuario, pero difieren en su funcionalidad y enfoque:
Location Manager
- API de bajo nivel perteneciente al framework de Android.
- Permite acceder a actualizaciones de ubicación de diferentes proveedores (GPS, red, pasivo).
- Requiere una gestión manual de las actualizaciones y la selección del proveedor.
- Ofrece mayor control y flexibilidad, pero implica una mayor complejidad en la implementación.
- Disponible desde las primeras versiones de Android.
Fused Location Provider
- API de alto nivel introducida en Google Play Services (Android 3, API nivel 18).
- Combina datos de diversas fuentes (GPS, Wi-Fi, redes celulares) para una mayor precisión y eficiencia.
- Selecciona automáticamente el mejor proveedor disponible, optimizando el consumo de batería.
- Proporciona actualizaciones de ubicación incluso cuando la aplicación está en segundo plano.
- Incluye funciones adicionales como el reconocimiento de actividad (walking, running, driving).
- Simplifica la gestión de la ubicación, abstraiendo la complejidad de la selección y gestión de proveedores.
| Característica | Location Manager | Fused Location Provider |
|---|---|---|
| Nivel | Bajo | Alto |
| Control | Alto | Bajo |
| Complejidad | Alta | Baja |
| Optimización de batería | Baja | Alta |
| Actualizaciones en segundo plano | No | Sí |
| Reconocimiento de actividad | No | Sí |
| Disponibilidad | Desde Android 0 | Desde Android 3 |
El Location Manager ofrece un mayor control y personalización, mientras que el Fused Location Provider simplifica la gestión de la ubicación y ofrece funcionalidades adicionales. Para la mayoría de las tareas, se recomienda utilizar el Fused Location Provider.
Permisos necesarios
Para acceder a la ubicación del usuario, es necesario solicitar los permisos correspondientes en el archivo AndroidManifest.xml:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />Para una mayor precisión, se puede solicitar también:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />Ejemplo de implementación con Fused Location Provider
A continuación, se presenta un ejemplo de cómo obtener la ubicación del usuario utilizando el Fused Location Provider en Kotlin. Este ejemplo incluye la gestión de permisos y el manejo de diferentes escenarios (ubicación disponible, ubicación no disponible, permisos denegados).
Manejo de Permisos
Es crucial gestionar correctamente los permisos de ubicación. El siguiente código muestra cómo solicitar y manejar los permisos:
private fun checkLocationPermission() { when { ContextCompat.checkSelfPermission( requireContext(), Manifest.permission.ACCESS_COARSE_LOCATION ) == PERMISSION_GRANTED -> { setupMap() } shouldShowRequestPermissionRationale(Manifest.permission.ACCESS_COARSE_LOCATION) -> { showAlertDialog() } else -> { requestPermissionLauncher.launch(Manifest.permission.ACCESS_COARSE_LOCATION) } }}Obtención de la ubicación
Una vez que se tienen los permisos, se puede obtener la ubicación del usuario utilizando getLastLocation()o getCurrentLocation():
@SuppressLint("MissingPermission")private fun getLastKnownLocation() { client!!.lastLocation.addOnSuccessListener { task -> val location: Location? = task if (location != null) { // Usar la ubicación } else { getCurrentLocation() } }}@SuppressLint("MissingPermission")private fun getCurrentLocation() { client!!.getCurrentLocation( Priority.PRIORITY_BALANCED_POWER_ACCURACY, CancellationTokenSource().token ).addOnSuccessListener { location -> // Usar la ubicación }}Recuerda reemplazar "// Usar la ubicación" con el código necesario para procesar la información de latitud y longitud obtenida. Es importante considerar que getLastLocation()puede retornar nulo si no hay una ubicación reciente disponible. getCurrentLocation()proporciona una ubicación más actualizada, pero puede consumir más batería.
Consideraciones adicionales
- Manejo de errores : Implementar un manejo adecuado de errores para situaciones como la falta de GPS, la denegación de permisos o la imposibilidad de obtener la ubicación.
- Optimización de batería : Utilizar las opciones de optimización de batería del Fused Location Provider para minimizar el consumo de energía.
- Privacidad : Informar al usuario sobre el uso de la ubicación y obtener su consentimiento explícito.
- Seguridad : Proteger la información de ubicación para evitar su uso indebido.
Este artículo proporciona una visión general del Location Manager y el Fused Location Provider en Android, incluyendo un ejemplo de implementación. Recuerda consultar la documentación oficial de Android para obtener información más detallada y actualizada.
