¿Cómo funcionan los Moto X y Nexus "wake on pickup"?

He visto muchas aplicaciones que dan la posibilidad de activar la pantalla del teléfono simplemente levantando el teléfono de una mesa (sin hablar aquí del sensor de proximidad). Una cosa que todos tienen en común es que esta función coloca un wakelock en el dispositivo y, por lo tanto, agota la batería y, por lo tanto, se agota después de una cantidad preestablecida (1-10 minutos). Por lo que entiendo, funciona monitoreando la cámara frontal.

Mi pregunta es: ¿cómo hacen eso los teléfonos Moto X y Nexus entonces? Tienen esta función incorporada, pero ¿eso también coloca un wakelock? ¿Un wakelock de 24 horas? ¿O usan algo más que la cámara frontal? Y si es así, ¿por qué no hay una aplicación que pueda replicar este comportamiento para todos los teléfonos?

Usar el acelerómetro sería sencillo, no tengo ninguna duda de que existe una aplicación que puede hacer esto.
Mi primera suposición sería que hay un coprocesador de bajo consumo que supervisa el acelerómetro, por lo que puede funcionar sin mantener despierto al procesador principal. Esto no es algo que esté expuesto en el SDK de Android, por lo que cualquier aplicación que haga esto sería específica del dispositivo.
Bueno, hay una aplicación que monitorea el acelerómetro para bloquear/desbloquear el teléfono, Gravity Screen . Para los dispositivos que tienen esta capacidad incorporada, estoy de acuerdo con @Dan Hulme.
@NicolaBastianello Buen hallazgo. Veo que la descripción de la aplicación dice: "Sin embargo, [el uso de la batería] puede ser mucho mayor si se usa con frecuencia la función Activar pantalla por movimiento. Por lo tanto, mantenga el teléfono boca abajo si desea ahorrar energía". Entonces, ¿tal vez ese modo usa un wakelock y los otros usan la detección de actividad de Google Play Services?
@NicolaBastianello Lo tengo instalado. Utiliza un wakelock y establece un tiempo de espera configurable, predeterminado de 10 minutos. Después de ese tiempo, el dispositivo ya no se activa al recogerlo (sin embargo, el sensor de proximidad sigue funcionando)

Respuestas (1)

Los dispositivos como Moto X y Nexus 5X/6P usan un concentrador de sensores para lograr esta función, que es:

unidad de microcontrolador/coprocesador/DSP que ayuda a integrar datos de diferentes sensores y procesarlos. Esta tecnología puede ayudar a descargar estos trabajos de la unidad de procesamiento central principal de un producto, ahorrando así el consumo de batería y mejorando el rendimiento.

Las especificaciones de Android sugieren que el fabricante implemente un concentrador de sensores:

La pila de sensores de un dispositivo puede incluir opcionalmente un concentrador de sensores, útil para realizar algunos cálculos de bajo nivel a baja potencia mientras el SoC puede estar en modo de suspensión. Por ejemplo, el recuento de pasos o la fusión de sensores se pueden realizar en esos chips. También es un buen lugar para implementar procesamiento por lotes de sensores, agregando FIFO de hardware para los eventos de sensores. Consulte Procesamiento por lotes para obtener más información.

La forma en que se materializa el concentrador de sensores depende de la arquitectura. A veces es un chip separado y, a veces, se incluye en el mismo chip que el SoC. Las características importantes del concentrador de sensores es que debe contener suficiente memoria para el procesamiento por lotes y consumir muy poca energía para permitir la implementación de los sensores de Android de bajo consumo. Algunos concentradores de sensores contienen un microcontrolador para computación genérica y aceleradores de hardware para permitir la computación de muy baja potencia para sensores de baja potencia.

Entonces, la disponibilidad de esta función depende del hardware del dispositivo: si el fabricante incluye un concentrador de sensores, entonces el consumo de energía se optimizará porque el procesador central no está involucrado. De lo contrario, la única posibilidad es instalar aplicaciones dedicadas (ver, por ejemplo, la citada en mi comentario) que monitorearán el acelerómetro, lo que resultará en un mayor consumo de batería.