ale e5e31ce806
Algunas comprobaciones han fallado
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is failing
.drone.yml
Signed-off-by: ale <ale@manalejandro.com>
2025-07-20 23:35:03 +02:00
2025-07-20 22:12:27 +02:00
2025-07-13 18:22:17 +02:00
2025-07-20 23:35:03 +02:00
2025-07-13 18:22:17 +02:00
2025-07-13 18:22:17 +02:00
2025-07-13 18:22:17 +02:00
2025-07-13 18:22:17 +02:00
2025-07-13 18:22:17 +02:00
2025-07-18 23:08:09 +02:00
2025-07-20 22:12:27 +02:00
2025-07-13 18:22:17 +02:00

📍 Simulador de Ubicación Android

Una aplicación Android desarrollada en Kotlin que permite simular ubicaciones usando la API de Google sin necesidad de permisos de ubicación reales. Perfecta para testing y desarrollo de aplicaciones basadas en ubicación.

Location Simulator

Características

  • Sin permisos reales: Simula ubicaciones sin solicitar permisos de ubicación al usuario
  • Múltiples proveedores: Establece ubicaciones simuladas en GPS, Network, Passive y Fused providers
  • Última ubicación de Google: Consulta y simula la última posición guardada por Google
  • Ubicaciones populares: Acceso rápido a ciudades españolas principales
  • Ubicaciones aleatorias: Genera coordenadas aleatorias cerca de ubicaciones base
  • Ubicaciones personalizadas: Permite establecer coordenadas específicas manualmente
  • Interfaz moderna: Diseño Material 3 con Jetpack Compose

🛠️ Tecnologías

  • Kotlin: Lenguaje principal
  • Jetpack Compose: UI moderna y declarativa
  • Material 3: Sistema de diseño de Google
  • LocationManager: API nativa de Android para manejo de ubicaciones
  • Coroutines: Programación asíncrona
  • StateFlow: Manejo reactivo del estado
  • MVVM: Arquitectura recomendada por Google

🚀 Instalación

  1. Clona el repositorio:
git clone https://github.com/tuusuario/location-simulator.git
cd location-simulator
  1. Abre el proyecto en Android Studio

  2. Sincroniza las dependencias de Gradle

  3. Ejecuta la aplicación en un dispositivo o emulador

📱 Uso

Ubicación Simulada

  • "Última de Google": Obtiene la última ubicación que Google tendría guardada
  • "Simular Nueva": Genera una nueva ubicación basada en la actual

Ubicaciones Populares

  • Selecciona una ciudad española para establecer tu ubicación allí
  • Usa "Aleatorio" para generar una ubicación cercana a la ciudad seleccionada

Ubicación Personalizada

  1. Introduce latitud y longitud manualmente
  2. Presiona "Preparar Ubicación Personalizada"
  3. Confirma con "✓ Aceptar y Establecer" para aplicar a todos los proveedores

🔧 Arquitectura

Componentes Principales

  • MainActivity: Actividad principal con interfaz Compose
  • LocationService: Servicio que maneja la lógica de ubicaciones simuladas
  • LocationViewModel: ViewModel que gestiona el estado de la aplicación
  • LocationState: Data class que representa el estado de la UI

Flujo de Datos

UI (Compose) → ViewModel → LocationService → LocationManager + SharedPreferences

📋 Proveedores Soportados

La aplicación establece ubicaciones simuladas en todos los proveedores del sistema:

  • GPS_PROVIDER: Simulación de GPS con alta precisión (5m)
  • NETWORK_PROVIDER: Simulación de ubicación por red (20m de precisión)
  • PASSIVE_PROVIDER: Proveedor pasivo (15m de precisión)
  • FUSED_PROVIDER: Simulación del proveedor fusionado (8m de precisión)

🎯 Casos de Uso

  • Desarrollo de Apps: Testing de funcionalidades basadas en ubicación
  • QA Testing: Pruebas de aplicaciones en diferentes ubicaciones
  • Demostraciones: Mostrar funcionalidades sin necesidad de moverse físicamente
  • Educación: Aprender sobre APIs de ubicación de Android

🔒 Seguridad

  • No requiere permisos de ubicación reales
  • Las ubicaciones se almacenan localmente en SharedPreferences
  • No envía datos a servidores externos
  • Código completamente open source

🤝 Contribuir

Las contribuciones son bienvenidas. Para contribuir:

  1. Fork el proyecto
  2. Crea una rama para tu feature (git checkout -b feature/NuevaFuncionalidad)
  3. Commit tus cambios (git commit -m 'Agregar nueva funcionalidad')
  4. Push a la rama (git push origin feature/NuevaFuncionalidad)
  5. Abre un Pull Request

📄 Licencia

Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.

👨‍💻 Autor

Alejandro - @manalejandro

Agradecimientos

  • Google por la documentación de LocationManager
  • La comunidad de Android por las mejores prácticas
  • Material Design por las guías de UI/UX

📚 API Reference

LocationService

Métodos Principales

suspend fun getLastKnownLocation(): Location?
suspend fun getCurrentLocation(): Location?
suspend fun mockLocation(latitude: Double, longitude: Double): Boolean
suspend fun setMockLocationOnAllProviders(latitude: Double, longitude: Double): Boolean
fun getPopularLocations(): List<Pair<String, Location>>
fun setupTestProviders()
fun cleanupTestProviders()

LocationViewModel

Estado de la Aplicación

data class LocationState(
    val currentLocation: Location? = null,
    val mockedLocation: Location? = null,
    val popularLocations: List<Pair<String, Location>> = emptyList(),
    val isLoading: Boolean = false,
    val error: String? = null,
    val hasLocationPermission: Boolean = true
)

🐛 Problemas Conocidos

  • En algunos emuladores, los proveedores de prueba pueden no funcionar correctamente
  • La funcionalidad de LocationManager requiere que la app esté en modo debug

🔮 Roadmap

  • Soporte para rutas simuladas
  • Exportar/importar ubicaciones
  • Historial de ubicaciones
  • Widget de acceso rápido
  • Soporte para coordenadas UTM
  • Integración con mapas

📞 Soporte

Si tienes preguntas o problemas:

  1. Revisa los Issues existentes
  2. Crea un nuevo Issue con detalles del problema
  3. Contacta al desarrollador

⚠️ Nota: Esta aplicación está diseñada para propósitos de desarrollo y testing. No usar para evadir restricciones geográficas o con fines maliciosos.

Descripción
No description provided
Readme 458 KiB
Languages
Kotlin 100%