13 pontos por xguru 2024-05-13 | 2 comentários | Compartilhar no WhatsApp
  • 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

 
ing03201 2024-05-13

De novo, dá para ver como o Galaxy Watch é incrível por contar as repetições dos 3 grandes exercícios.

 
jooyh1021 2024-05-13

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 ;_;