- Ao procurar um app para participar do desafio "100 flexões por dia" do centro oncológico do Reino Unido, decidiu criar algo divertido que contasse as flexões por conta própria
- Explorando o framework Core Motion do iOS
- Ao buscar uma forma de usar dados de sensores, decidiu aproveitar os dados de movimento dos AirPods com
CMHeadphoneMotionManager
- O Core Motion fornece dados de acelerômetro, giroscópio, magnetômetro e outros sensores
- É útil para medições precisas e confiáveis de movimento e orientação
- É necessário ter permissões de acesso aos dados para proteger a privacidade do usuário
- Pensando em como aplicar IA
- Já existem muitos apps que usam frameworks como o ARKit
- Em vez disso, concluiu que a IA poderia ajudar a implementar a ideia
- Usou um GPT treinado em Core Motion para fazer perguntas em linguagem natural e obter soluções
- Projeto da arquitetura do app
- Motion Manager: faz streaming dos dados dos sensores e lida com as atualizações dos sensores do dispositivo
- Pushups Detector: analisa os dados em streaming para detectar e contar flexões com base em limites predefinidos
- SwiftUI View: fornece uma UI responsiva que é atualizada em tempo real enquanto o usuário faz flexões
- Implementação do Motion Manager
- Usa o padrão delegate para acessar os valores atualizados
- Usa
CMHeadphoneMotionManager para obter os dados de movimento do dispositivo
- Inicia e interrompe as atualizações dos sensores com
startUpdates() e stopUpdates()
- Atualiza os valores de
pitch e accelerationY e notifica o delegate
- Implementação do Pushups Detector
- Introduz o conceito de "sessão" para iniciar e parar a análise do fluxo de dados
- Interpreta os dados brutos para determinar a postura do usuário e se houve uma flexão
- Usa limites para detectar a descida e a subida da flexão e aumentar a contagem
- Implementa
MotionManagerDelegate para lidar com mudanças nos valores de aceleração e pitch
- Implementação de uma view simples com SwiftUI
- É composta por botões para iniciar/encerrar a sessão e um número grande exibindo a contagem de flexões
- Também adiciona um texto indicando se a postura do usuário está correta
- Análise e visualização de dados
- Usa Swift Charts para visualizar os dados brutos dos sensores e identificar padrões
- Descobriu no eixo Y da aceleração o padrão de descida (-1.0) e subida (+0.5) das flexões
- Ajustou os limites em testes reais para melhorar a precisão (+0.4, -0.7)
- O apelo do rastreamento em tempo real
- Ao colocar os AirPods e apertar o botão iniciar, a contagem de flexões é atualizada automaticamente
- Funciona sem interação do usuário
- O que aprendeu com o projeto
- Reafirmou a importância da validação precoce e da melhoria iterativa
- Sentiu a diversão e a satisfação de criar algo significativo
- Ainda há pontos a melhorar, como a UI e a contagem de flexões ao longo de vários dias
- Também melhorou a experiência do usuário além da interface visual ao adicionar feedback de áudio pelos AirPods
- Conclusão
- Combinando Core Motion, SwiftUI e IA, desenvolveu em 24 horas um app que adiciona uma nova dimensão ao rastreamento fitness
- É importante se desafiar a pensar em como aplicar novas tecnologias a problemas do dia a dia
2 comentários
De novo, dá para ver como o Galaxy Watch é incrível por contar as repetições dos 3 grandes exercícios.
Há alguns anos eu tinha criado um app de desafio de flexões chamado Thirty usando o sensor de proximidade do iPhone, mas pelo visto também existe um jeito de fazer isso com os AirPods.. parece que a precisão do sensor de proximidade caiu um pouco depois da adição da Dynamic Island ;_;