¿Ve la app mi cámara? Cómo funciona la detección de postura en el teléfono
Vishwen Labs

BurnToScroll cuenta repeticiones apuntándole con la cámara, y el vídeo nunca sale del teléfono: cada fotograma pasa por el Pose Landmarker de MediaPipe en el dispositivo, que lo convierte en 33 puntos del cuerpo, el contador lee ángulos a partir de esos puntos, y el fotograma se descarta. No se graba nada, no hay cuenta a la que atar nada, y lo único que sale del teléfono son las compras y los informes anónimos de uso y de fallos mediante Firebase. Eso último está en el código y esta página lo dice, porque el “sin rastreo” de la ficha no es exactamente la misma afirmación.
Qué es la detección de postura
El Pose Landmarker de MediaPipe, de Google, en su propia descripción, “lets you detect landmarks of human bodies in an image or video”, permite detectar puntos de referencia del cuerpo humano en una imagen o un vídeo. Sigue “33 body landmark locations”, 33 posiciones del cuerpo, hombros, codos, muñecas, caderas, rodillas, tobillos y el resto, como coordenadas en la imagen y como posiciones 3D estimadas, con un modelo que Google dice que está “optimized for on-device, real-time fitness applications”, optimizado para aplicaciones de fitness en tiempo real en el dispositivo. Viene en variantes lite, full y heavy que cambian precisión por velocidad. La salida es una lista de puntos, no una imagen; una flexión es el ángulo entre tres de ellos cambiando, y eso es todo lo que el contador mira.
Qué le pasa a un fotograma
La cámara entrega un fotograma, el modelo de postura en el teléfono lo convierte en puntos, la lógica de ejercicio de la app lee los ángulos del codo, la cadera y la rodilla y la confianza de los puntos, decide si hubo una repetición o si se mantiene una plancha, actualiza el contador y los minutos ganados, y el fotograma desaparece. Los fotogramas no se escriben en el almacenamiento, no se envían a ningún sitio y no se conservan en memoria más allá del siguiente. Lo que la app sí guarda es la sesión: el ejercicio, las repeticiones, los segundos mantenidos en una plancha, los minutos ganados y la hora, que es de lo que se construyen las estadísticas, las rachas y los logros, guardados en el teléfono.
Qué sale del teléfono
Tres cosas. Las compras pasan por Apple y RevenueCat, que es como se comprueba la suscripción. Los eventos de uso anónimos van a Firebase Analytics, como la apertura de la app, los pasos de la configuración inicial completados o un permiso concedido o denegado, y los informes de fallos van a Firebase Crashlytics; ambos están activados en el código de la app, y ninguno lleva vídeo, su selección de apps ni su nombre, porque la app no tiene ninguna de las tres cosas. La ficha describe la app como totalmente sin conexión y sin rastreo; la versión exacta es que todo lo que hace la app funciona sin conexión, y que informa del uso anónimo cuando puede. El Info.plist lleva además un texto sobre la ubicación porque el SDK de analíticas hace referencia a las API de ubicación; la app nunca pide la ubicación.

El permiso de la cámara, y el de las fotos
El acceso a la cámara se pide en el primer entrenamiento y hace falta para contar repeticiones; si lo deniega, la app le dice que no puede contar sin él. El acceso a la fototeca se pide solo si decide poner su propia foto en una tarjeta para compartir, y es el permiso de solo añadir, así que la app puede guardar una tarjeta y no puede curiosear en su biblioteca. Las notificaciones son opcionales y cubren el recordatorio diario, el aviso de racha y la alerta de saldo bajo. El acceso a Tiempo de uso es el cuarto permiso y se trata en la guía sobre Family Controls.
Por qué importa que sea en el dispositivo
Una cámara de entrenamiento le apunta en su dormitorio en ropa interior, y la diferencia entre procesar en el dispositivo y en la nube es la diferencia entre un espejo privado y una videollamada. La detección en el dispositivo también funciona sin cobertura, en un avión o en un sótano, que es donde se agota el saldo. El coste es que el modelo tiene que caber en el teléfono, que es por lo que las comprobaciones son ángulos y distancias y no juicio, y por lo que una plancha de rodillas pasa. Ese intercambio es el correcto para una app cuyo trabajo entero es estar ahí a las once de la noche.
Otras preguntas sobre el tema
¿BurnToScroll graba o sube el vídeo del entrenamiento?
No. Los fotogramas se procesan en el teléfono en forma de puntos y se descartan. No se graba nada, y el único tráfico de red son las compras y las analíticas anónimas y los informes de fallos.
¿Por qué el texto de privacidad de la app menciona la ubicación?
Porque el SDK de analíticas de Firebase que incluye hace referencia a las API de ubicación, y iOS exige una frase explicativa. El propio texto de la app dice que no usa su ubicación y que nunca la pide, y no hay ningún aviso de ubicación.


