Files
location/README.md
2025-07-13 18:22:17 +02:00

5.6 KiB

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

  1. Consultar última ubicación:

    • Toca "Última de Google" para obtener la posición guardada
    • La app simula una consulta a los servicios de Google
  2. Generar nueva ubicación:

    • Toca "Simular Nueva" para crear una ubicación actual
  3. Usar ubicaciones populares:

    • Selecciona una ciudad para ir directamente
    • Usa "Aleatorio" para generar posiciones cercanas
  4. 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

  1. Fork el proyecto
  2. Crea una rama para tu feature (git checkout -b feature/AmazingFeature)
  3. Commit tus cambios (git commit -m 'Add some AmazingFeature')
  4. Push a la rama (git push origin feature/AmazingFeature)
  5. 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

🙏 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