Location Simulator Android App 📍
Una aplicación Android desarrollada en Kotlin que simula la funcionalidad de ubicaciones de Google sin necesidad de permisos reales de ubicación. Perfecta para desarrollo, testing y demostraciones.
🎯 Características
- ✅ Sin permisos de ubicación: Simula ubicaciones sin acceso real al GPS
- 🗺️ Última ubicación de Google: Consulta y muestra la última posición guardada por Google (simulada)
- 🎲 Ubicaciones aleatorias: Genera posiciones aleatorias cerca de ciudades populares
- 🌍 Ubicaciones populares: Lista predefinida de ciudades importantes
- 📍 Ubicación personalizada: Permite ingresar coordenadas específicas
- 💾 Persistencia: Guarda la última ubicación simulada
🏗️ Tecnologías
- Kotlin - Lenguaje principal
- Jetpack Compose - UI moderna y declarativa
- Material 3 - Diseño y componentes
- Architecture Components - ViewModel, StateFlow
- SharedPreferences - Almacenamiento local
- Coroutines - Programación asíncrona
📱 Funcionalidades
1. Ubicación Simulada
- Última de Google: Obtiene la última ubicación que Google tendría guardada
- Simular Nueva: Genera una nueva ubicación actual simulada
- Muestra coordenadas, precisión y timestamp
2. Ubicaciones Populares
Ciudades predefinidas disponibles:
- 🇪🇸 Madrid, España
- 🇫🇷 París, Francia
- 🇬🇧 Londres, Reino Unido
- 🇺🇸 Nueva York, Estados Unidos
- 🇯🇵 Tokio, Japón
- 🇧🇷 São Paulo, Brasil
- 🇦🇺 Sídney, Australia
Cada ciudad permite:
- Ir directamente a esa ubicación
- Generar una posición aleatoria cercana (radio de 1km)
3. Ubicación Personalizada
- Ingreso manual de latitud y longitud
- Validación de coordenadas
- Guardado automático de la nueva posición
🚀 Instalación y Configuración
Prerrequisitos
- Android Studio Arctic Fox o superior
- SDK mínimo: API 24 (Android 7.0)
- SDK objetivo: API 36
Clonar e Instalar
# Clonar el repositorio
git clone https://git.manalejandro.com/ale/location.git
cd location
# Abrir en Android Studio
# File -> Open -> Seleccionar carpeta del proyecto
# Sincronizar dependencias
# Build -> Make Project
Configuración
No se requiere configuración adicional. La app funciona inmediatamente sin permisos especiales.
🎮 Uso
-
Consultar última ubicación:
- Toca "Última de Google" para obtener la posición guardada
- La app simula una consulta a los servicios de Google
-
Generar nueva ubicación:
- Toca "Simular Nueva" para crear una ubicación actual
-
Usar ubicaciones populares:
- Selecciona una ciudad para ir directamente
- Usa "Aleatorio" para generar posiciones cercanas
-
Ubicación personalizada:
- Ingresa latitud y longitud manualmente
- Toca "Simular Ubicación" para aplicar
📂 Estructura del Proyecto
app/src/main/java/com/manalejandro/location/
├── MainActivity.kt # Actividad principal y UI
├── LocationViewModel.kt # Lógica de negocio y estado
├── LocationService.kt # Servicios de ubicación simulados
└── ui/theme/ # Tema y estilos Material 3
├── Color.kt
├── Theme.kt
└── Type.kt
🔧 Arquitectura
La aplicación sigue el patrón MVVM (Model-View-ViewModel):
- View (Compose): Interfaz de usuario declarativa
- ViewModel: Manejo de estado y lógica de presentación
- Model (LocationService): Simulación de servicios de ubicación
Flujo de Datos
UI (Compose) ↔ ViewModel ↔ LocationService ↔ SharedPreferences
🎨 Diseño
- Material 3 Design: Componentes modernos y accesibles
- Responsive: Adaptable a diferentes tamaños de pantalla
- Dark/Light Theme: Soporte automático según configuración del sistema
- Cards y Sections: Organización clara de funcionalidades
🧪 Testing
La aplicación incluye pruebas básicas:
# Ejecutar tests unitarios
./gradlew test
# Ejecutar tests instrumentados
./gradlew connectedAndroidTest
🤝 Contribuir
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
📝 Casos de Uso
Para Desarrolladores
- Testing de aplicaciones que requieren ubicación
- Desarrollo sin depender de ubicación real
- Demostraciones en entornos controlados
Para QA/Testing
- Verificar comportamiento con diferentes ubicaciones
- Probar funcionalidades geográficas
- Testing sin moverse físicamente
Para Educación
- Enseñar conceptos de geolocalización
- Demostrar APIs de ubicación
- Workshops y tutoriales
🔒 Privacidad
Esta aplicación NO:
- Accede a tu ubicación real
- Requiere permisos de ubicación
- Envía datos a servidores externos
- Almacena información personal
Toda la funcionalidad es local y simulada.
📄 Licencia
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.
👨💻 Autor
Manuel Alejandro
- Git: @manalejandro
🙏 Agradecimientos
- Equipo de Android Developers
- Comunidad de Kotlin
- Material Design Team
⭐ Si este proyecto te ha sido útil, ¡no olvides darle una estrella!
📸 Screenshots
Agrega capturas de pantalla de tu aplicación aquí
🔄 Changelog
v1.0.0
- Lanzamiento inicial
- Simulación de ubicaciones de Google
- Ubicaciones populares predefinidas
- Ubicaciones personalizadas
- UI con Material 3