Pablo Marzal Garrigós

¿YouTube detecta cuándo coges tu smartphone? Mi teoría (y demo con React Native)

Una hipótesis sobre cómo YouTube podría detectar cuándo miras la pantalla, incluye demo práctica con React Native para testear los sensores de movimiento.

youtube detecta movimiento

Últimamente me he dado cuenta de un patrón curioso.
Escucho podcasts en YouTube durante horas mientras entreno o cocino, y los anuncios apenas aparecen. Pero en cuanto cojo el móvil… ¡Aparece uno casi de inmediato!

Al principio pensaba que era casualidad, pero empezó a repetirse tantas veces que acabó por despertar mi teoría:

¿Podría YouTube (o aplicaciones similares) detectar que estoy sujetando el teléfono mediante los sensores de mi móvil?

No he encontrado ninguna documentación oficial que lo confirme, pero el escenario es técnicamente posible. En este artículo voy a analizar cómo podrían intervenir los sensores de movimiento y mostraré una pequeña demo con React Native.

Qué miden realmente los sensores de movimiento

Desde hace años nuestros smartphones incluyen sensores como el acelerómetro y el giroscopio, diseñados para registrar el movimiento físico del dispositivo.

Estos sensores están pensados para rotar la pantalla, controlar videojuegos o registrar pasos, pero también podrían ofrecer pistas más sutiles: por ejemplo, el gesto característico de levantar el teléfono para mirar la pantalla.

Y aquí es donde la teoría se vuelve relevante.

Si YouTube detectara ese gesto de levantar el teléfono, podría interpretarlo como una señal de atención activa. En ese momento, el usuario ya no solo está escuchando, sino que tiene el dispositivo en la mano, listo para interactuar: saltarse el anuncio, tocar la pantalla o mirar el contenido.

Desde el punto de vista de optimización publicitaria, eso es oro: mostrar un anuncio justo cuando el usuario está mirando la pantalla multiplica las probabilidades de impacto y conversión.

Y aunque no existe evidencia pública de que YouTube lo haga, sí está claro que el timing de atención es un factor crucial.

Acceso y permisos

Los sensores de movimiento no se consideran de “alto riesgo” como la cámara o el micrófono, por lo que muchas apps pueden acceder a ellos sin pedir permiso explícito.

En resumen: sí, una app móvil puede leer estos datos con relativa facilidad. No significa que YouTube lo haga, pero la base técnica existe.

Objeciones y necesidad de un patrón

Una hipótesis así plantea varias objeciones lógicas.
La principal: diferenciar un agarre real de un simple movimiento.

El móvil puede moverse dentro del bolsillo o en una mochila. Si un sistema quisiera detectar “agarre”, debería filtrar todos esos casos. Un patrón de detección realista podría incluir:

  1. Pico de aceleración vertical (eje Z).
  2. Cambio repentino de orientación (giroscopio).
  3. Estabilización rápida en posición de lectura.

Ese tipo de procesamiento permitiría deducir cuándo el dispositivo ha sido tomado en la mano.

Objeción técnica: consumo energético

“Always make sure to disable sensors you don't need, especially when your activity is paused. Failing to do so can drain the battery in just a few hours. Note that the system will not disable sensors automatically when the screen turns off. - Android Developers”

Esto significa que si una app mantuviera los sensores activos en segundo plano para detectar movimiento, el consumo de batería sería muy alto.

Este punto hace poco probable que una aplicación como YouTube mantenga los sensores activos de forma continua solo para detectar un gesto tan sutil.

Parece que esta objeción tiene mucho peso ¿Pero podemos replicarlo en una demo?

Demo práctica en React Native

Para entender la facilidad con la que se puede leer el movimiento del dispositivo, he creado un ejemplo muy básico usando Expo y el paquete expo-sensors.

// En este fragmento se comprueba si alguno de los ejes del giroscopio supera un umbral.
// Si ocurre, el estado isPhonePicked pasa a true, lo que activa la detección de “teléfono cogido”.
import { Accelerometer, Gyroscope } from "expo-sensors";
import { useEffect, useState } from "react";

export default function Index() {
	const [gyroscopeData, setGyroscopeData] = useState({ x: 0, y: 0, z: 0 });
	const [isPhonePicked, setIsPhonePicked] = useState(false);

	const GYRO_X_THRESHOLD = 1.0;
	const GYRO_Y_THRESHOLD = 2.0;
	const GYRO_Z_THRESHOLD = 2.0;

	useEffect(() => {
		Gyroscope.setUpdateInterval(1000);
		const subscription = Gyroscope.addListener(setGyroscopeData);
		return () => subscription.remove();
	}, []);

	useEffect(() => {
		const x = Math.abs(gyroscopeData.x) > GYRO_X_THRESHOLD;
		const y = Math.abs(gyroscopeData.y) > GYRO_Y_THRESHOLD;
		const z = Math.abs(gyroscopeData.z) > GYRO_Z_THRESHOLD;
		setIsPhonePicked(x || y || z);
	}, [gyroscopeData]);
}
Puedes ajustar los valores de GYRO_X_THRESHOLD, GYRO_Y_THRESHOLD y GYRO_Z_THRESHOLD para aumentar o reducir la sensibilidad del detector. En mi caso, con valores de 1.0–2.0 rad/s se detecta el movimiento de levantar el móvil sin falsos positivos al dejarlo sobre la mesa.

Al ejecutar este ejemplo, basta con levantar el teléfono e inclunar la pantalla para leerla para observar algunos picos. Esa simple lectura ya serviría como base para detectar un gesto de “agarre” si se procesara junto a más contexto.

sensor-test-app

Tienes el enlace al GitHub de este código al final de este artículo por si quieres jugar por tu cuenta con los sensores.

Conclusiones

La hipótesis de que YouTube utilice sensores de movimiento para decidir cuándo mostrar anuncios no tiene confirmación oficial.

Sin embargo, tecnológicamente sería posible: los sensores ofrecen suficiente precisión, y las apps pueden acceder a ellos con relativa libertad.

Más allá de la teoría, este caso plantea una reflexión interesante:

¿Cuánta información generan los sensores del móvil sobre nuestro comportamiento cotidiano, y quién puede usarla?

Y, por simple curiosidad:

¿A alguien más le pasa lo mismo o soy el único que ahora no puede dejar de fijarse en cuándo aparece el anuncio?
sensor-test-github

El proyecto está disponible de forma abierta en GitHub por si quieres probarlo, modificar los umbrales o experimentar con tus propios patrones de detección.

🔗 Repositorio Github