Hay 3 proveedores de ubicación en Android.
Son:
gps -> (GPS, AGPS): nombre del proveedor de ubicación GPS. Este proveedor determina la ubicación mediante satélites. Dependiendo de las condiciones, este proveedor puede tardar un tiempo en devolver una corrección de ubicación. Requiere el permiso android.permission.ACCESS_FINE_LOCATION.
red -> (AGPS, CellID, WiFi MACID): Nombre del proveedor de ubicación de red. Este proveedor determina la ubicación en función de la disponibilidad de la torre celular y los puntos de acceso WiFi. Los resultados se recuperan mediante una búsqueda en la red. Requiere cualquiera de los permisos android.permission.ACCESS_COARSE_LOCATION o android.permission.ACCESS_FINE_LOCATION.
pasivo -> (CellID, WiFi MACID): un proveedor de ubicación especial para recibir ubicaciones sin iniciar realmente una corrección de ubicación. Este proveedor se puede usar para recibir pasivamente actualizaciones de ubicación cuando otras aplicaciones o servicios lo soliciten sin solicitar las ubicaciones usted mismo. Este proveedor devolverá ubicaciones generadas por otros proveedores. Requiere el permiso android.permission.ACCESS_FINE_LOCATION, aunque si el GPS no está habilitado, este proveedor solo puede devolver soluciones gruesas. Esto es lo que Android llama a estos proveedores de ubicaciones, sin embargo, las tecnologías subyacentes para hacer que esto funcione se asignan al conjunto específico de capacidades de hardware y telecomunicaciones proporcionadas (servicio de red).
La mejor manera es usar primero el proveedor de "red" o "pasivo", y luego recurrir a "gps", y dependiendo de la tarea, cambiar de proveedor. Esto cubre todos los casos y proporciona un servicio de mínimo común denominador (en el peor de los casos) y un excelente servicio (en el mejor de los casos).
Referencia del artículo: Proveedores de ubicación de Android: gps, red, pasivo Por Nazmul Idris
Código de referencia: https://stackoverflow.com/a/3145655/28557
-----------------------Actualizar-----------------------
Ahora Android tiene proveedor de ubicación fusionada
El proveedor de ubicaciones fusionadas administra de manera inteligente la tecnología de ubicación subyacente y le brinda la mejor ubicación de acuerdo con sus necesidades. Simplifica las formas en que las aplicaciones obtienen la ubicación actual del usuario con mayor precisión y menor consumo de energía.
El proveedor de ubicación fusionada proporciona tres formas de recuperar la ubicación
- Última ubicación: utilícela cuando desee conocer la ubicación actual una vez.
- Solicitar ubicación usando el escucha: se usa cuando la aplicación está en pantalla / interfaz y requiere una ubicación continua.
- Solicitar ubicación con intención pendiente: se usa cuando la aplicación está en segundo plano y requiere una ubicación continua.
Referencias
Sitio oficial: http://developer.android.com/google/play-services/location.html
Ejemplo de proveedor de ubicación fusionada: GIT: https://github.com/kpbird/fused-location-provider-example
http://blog.lemberg.co.uk/fused-location-provider
-------------------------------------------------- ------