Implementación de librerías para funciones nativas del teléfono.
Práctica: App móvil con sensores, cámara y geolocalización
Objetivo
Desarrollar una aplicación móvil con Expo y React Native que utilice sensores del dispositivo, geolocalización, cámara y galería para realizar una captura automática de una fotografía cuando el teléfono esté inclinado dentro de un rango definido y orientado hacia el norte.
Descripción
La aplicación deberá monitorear continuamente:
- la inclinación del dispositivo
- la dirección hacia la que apunta
- la ubicación del usuario
Cuando se cumplan las condiciones definidas, la app debe tomar una fotografía automáticamente y mostrarla en pantalla junto con la información de ubicación.
Funcionalidades requeridas
La aplicación debe incluir:
1. Sensores
Detectar la inclinación del dispositivo usando sensores del teléfono.
Ejemplo de condición:
- inclinación entre 40° y 60°
2. Orientación hacia el norte
Detectar si el dispositivo apunta aproximadamente hacia el norte.
Se puede usar una tolerancia aproximada: 345° – 15°
3. Geolocalización
Obtener y mostrar:
- latitud
- longitud
4. Cámara
Cuando se cumplan las condiciones:
- inclinación correcta
- orientación al norte
la aplicación debe capturar una fotografía automáticamente.
La foto debe mostrarse en pantalla.
5. Galería
La aplicación debe permitir:
- guardar la imagen capturada en la galería
Información mostrada con la foto
Después de la captura se debe mostrar:
- fecha y hora
- latitud
- longitud
- orientación detectada
- inclinación detectada
Tecnologías sugeridas
La aplicación debe desarrollarse con:
- Expo
- React Native
- Hooks (
useState,useEffect)
Librerías recomendadas:
- expo-sensors
- expo-location
- expo-camera
- expo-image-picker
- expo-media-library
Entregables
1. Código
Proyecto completo en Expo. (Sin node_modules)
Reto opcional
Implementar alguna mejora adicional:
- brújula visual
- historial de fotos
- vibración cuando se detecte la posición correcta
- mostrar datos sobre la imagen capturada
Recursos
1 recurso disponible
Reto de Lectura
Auditoría IA #3 — La feature con permisos (para TU proyecto)
La auditoría final: genera la feature de hardware de tu proyecto (cámara, GPS o sensores) y audítala donde la IA siempre falla — el permiso denegado y el mundo real.
Tu proyecto integrador necesita una feature de hardware. Hoy la generas, la auditas y decides si entra — el flujo completo de tu vida profesional, sobre TU app.
Paso 1 — Genera con contexto (15 min). Pídele a tu IA la feature de TU proyecto, por ejemplo:
"En mi app de [tu proyecto] (React Native + Expo, TypeScript) necesito [tomar foto de perfil / obtener la ubicación para X / escanear un código]. Mis pantallas son [...] y mis datos tienen esta forma [...]"
Paso 2 — Audita (45 min). El hardware agrega una capa nueva a la checklist de siempre:
| # | Capa | Pregunta clave |
|---|---|---|
| 1 | Permiso pedido | ¿Se pide ANTES de usar el hardware, o el código asume que ya lo tiene? |
| 2 | Permiso denegado | ¿Qué ve el usuario que dice "no"? ¿Pantalla rota, spinner eterno, o un mensaje digno con cómo reactivarlo en Ajustes? |
| 3 | "No preguntar de nuevo" | En Android el usuario puede denegar permanentemente: ¿la app lo detecta o pide el permiso en un loop infinito? |
| 4 | Hardware ausente | ¿Emulador sin cámara, tablet sin GPS? ¿La app truena o degrada con gracia? |
| 5 | Estados de espera | El GPS puede tardar 10s en interiores: ¿hay loading? ¿timeout? ¿se puede cancelar? |
| 6 | Lo de siempre | useEffect con cleanup (¿quién apaga la suscripción del sensor/watchPosition?), async visible, tipos honestos, listas sanas |
| 7 | Sabotaje | Deniega el permiso de verdad. Actívalo y desactívalo desde Ajustes con la app abierta. Pruébalo en el emulador SIN el hardware. |
Paso 3 — Informe + integración (30 min, entregable): prompt con contexto, 4+ hallazgos con escenario, corrección verificada CON el permiso denegado, y veredicto: commit a tu proyecto (integra cámara auditada, maneja permiso denegado) o rechazo argumentado.