- Mientras buscaba una app para participar en el "desafío de 100 flexiones al día" del centro oncológico del Reino Unido, decidió crear algo divertido que contara por sí mismo las flexiones
- Exploración del framework Core Motion de iOS
- Mientras buscaba cómo aprovechar los datos de sensores, decidió usar
CMHeadphoneMotionManager para utilizar los datos de movimiento de los AirPods
- Core Motion proporciona datos de acelerómetro, giroscopio y sensor geomagnético, entre otros
- Es útil para medir con precisión y confiabilidad el movimiento y la orientación
- Requiere permisos de acceso a los datos para proteger la privacidad del usuario
- Consideración sobre cómo aplicar IA
- Ya existen muchas apps que usan frameworks como ARKit
- En cambio, consideró que la IA podía ayudar a materializar la idea
- Utilizó un GPT entrenado sobre Core Motion para hacer preguntas en lenguaje natural y obtener soluciones
- Diseño de la arquitectura de la app
- Motion Manager: transmite los datos de sensores y maneja las actualizaciones de los sensores del dispositivo
- Pushups Detector: analiza los datos transmitidos para detectar y contar flexiones según umbrales predefinidos
- SwiftUI View: ofrece una UI reactiva que se actualiza en tiempo real mientras el usuario hace flexiones
- Implementación de Motion Manager
- Usa el patrón delegate para acceder a los valores actualizados
- Usa
CMHeadphoneMotionManager para obtener datos de movimiento del dispositivo
startUpdates() y stopUpdates() inician y detienen las actualizaciones de sensores
- Actualiza los valores de
pitch y accelerationY y notifica al delegate
- Implementación de Pushups Detector
- Introduce el concepto de "sesión" para iniciar y detener el análisis del flujo de datos
- Interpreta los datos en bruto para determinar la postura del usuario y si hizo una flexión
- Usa umbrales para detectar la bajada y la subida de una flexión, y aumentar el conteo
- Implementa
MotionManagerDelegate para procesar los cambios en aceleración y pitch
- Implementación de una vista simple con SwiftUI
- Está compuesta por botones para iniciar/finalizar la sesión y un número grande que muestra la cantidad de flexiones
- También se agregó texto para indicar si la postura del usuario es correcta
- Análisis y visualización de datos
- Usa Swift Charts para visualizar los datos crudos de sensores e identificar patrones
- Encontró en la aceleración del eje Y los patrones de bajada (-1.0) y subida (+0.5) de las flexiones
- Ajustó los umbrales mediante pruebas reales para mejorar la precisión (+0.4, -0.7)
- El atractivo del seguimiento en tiempo real
- Al ponerse los AirPods y presionar el botón de inicio, el conteo de flexiones se actualiza automáticamente
- Funciona sin necesidad de interacción del usuario
- Lo aprendido a través del proyecto
- Reafirmó la importancia de validar temprano y mejorar de forma iterativa
- Sintió la diversión y la satisfacción de crear algo significativo
- También hay aspectos por mejorar, como la UI y el conteo de flexiones a lo largo de varios días
- Añadió retroalimentación de audio a través de los AirPods para mejorar la experiencia del usuario además de la interfaz visual
- Conclusión
- Al combinar Core Motion, SwiftUI e IA, desarrolló en 24 horas una app que añade una nueva dimensión al fitness tracking
- Es importante asumir el reto de pensar cómo aplicar nuevas tecnologías a problemas cotidianos
2 comentarios
De nuevo me doy cuenta de lo impresionante que es el Galaxy Watch contando las repeticiones de los tres ejercicios básicos.
Hace algunos años hice una app de desafío de flexiones llamada Thirty usando el sensor de proximidad del iPhone, pero resulta que también hay una forma de hacerlo con los AirPods... Parece que la precisión del sensor de proximidad bajó un poco desde que agregaron Dynamic Island :(