¿Cómo mantengo la CPU apagada durante la carga?

Cuando conecto la fuente de alimentación USB, hace que la CPU permanezca encendida (aunque "Desarrollo-> Mantenerse despierto" esté apagado).

Cuando se carga desde una fuente de alimentación débil, la batería se agota incluso más rápido que en el caso de que la alimentación USB no esté conectada en absoluto (debido a que la CPU permanece encendida en lugar de dormir).

¿Cómo detengo que la conexión de alimentación externa afecte la política de inactividad de la CPU?

No estoy hablando de que la pantalla esté encendida, se trata de que la CPU esté despierta (desafortunadamente, no es fácil ver si la CPU está encendida o apagada).

¿Qué quieres decir con "la CPU permanece encendida"? ¿Estás hablando de que la pantalla está encendida? ¿O está utilizando una aplicación para monitorear constantemente la frecuencia con la que se ejecuta la CPU?
Mantengo un programa que parpadea constantemente el LED cuando la pantalla está apagada, por lo que veo claramente cuándo (la CPU está encendida mientras la pantalla está apagada). Por lo general, después de presionar el botón de encendido para apagar la pantalla, parpadea varias veces y se detiene. Pero cuando el cargador está conectado, sigue parpadeando.
El programa: brightact ( fuente ); uso:brightact /sys/...led.../brightness 20 100000 400000 /sys/power/wait_for_fb_sleep
Estoy mirando la fuente que proporcionó, y está escrita en C simple. No estoy seguro de que sea posible ejecutar un programa de este tipo en Android. ¿De qué dispositivo estamos hablando (fabricante, modelo)? ¿Qué sistema operativo está ejecutando?
La mayoría de mis programas para Android están actualmente en C, requieren acceso de root e interactúan directamente con el kernel de Linux (actualmente soy más un hacker de Linux que un hacker de Android). Estoy ejecutando Android 2.3 en Sony-Ericcson Xperia X10.
¿Ha comprobado qué sucede si no ejecuta su programa mientras se carga? ¿Se agota la batería de todos modos?
1. Android no debe estar demasiado pendiente de este programa, y ​​no toca /sys/power/wake_lock; 2. Incluso sin el programa, noto que cuando el cargador está nominalmente conectado, pero no se está cargando (por ejemplo, solo hay alrededor de 3 V en lugar de 5 V), se descarga más rápido (aproximadamente a la misma velocidad que si alguna aplicación tuviera el bloqueo de activación de la CPU).

Respuestas (2)

Mantenga presionado el interruptor de apagado mientras está enchufado, luego toque el indicador de apagado. Cuando se apague, asegúrese de que la luz de carga permanezca encendida. Si la luz no está encendida, presione el botón de encendido rápidamente para que el porcentaje de la batería se muestre en el centro, la pantalla debería quedar en blanco nuevamente y la luz de carga se encenderá y permanecerá encendida. Puede volver a probar el porcentaje de carga de la batería en cualquier momento. Cuando esté listo para usar, mantenga presionado encendido/apagado para encender y observe o espere a que se reinicie.

Si apago el dispositivo mientras lo cargo, creo que se reinicia en un modo de carga (con la CPU encendida), pero no inicia la interfaz de usuario habitual de Android.
Quiero que Android esté en el modo de suspensión habitual (como si no estuviera enchufado y sin wakelocks), pero también cargándose. Por ejemplo, si conecto un cargador muy débil (menos de 1 vatio), comienza a agotar la batería en lugar de cargarla, debido a que la carga mantiene la CPU encendida y la entrada de energía débil no es suficiente para mantener la CPU encendida, por lo que la batería se usa más (en comparación solo al modo de espera).
Solo he visto cargar con la CPU apagada cuando la batería está muy baja. En este modo, ni siquiera intenta encenderse, no reacciona a ningún botón y no enciende ningún LED (a menos que ya haya algo de carga en la batería).
El porcentaje de batería no se puede mostrar si la CPU está realmente apagada. Y arrancar desde realmente apagado hasta "puede mostrar el porcentaje de batería" es bastante largo (requiere kernel de Linux para arrancar). Presionar prolongadamente el botón de encendido para iniciar Android desde cero (apagado) es diferente de continuar con el inicio desde el modo de carga; el último es aún más rápido.

Descubrí que algunas optimizaciones de la CPU se desactivan cuando el teléfono se conecta a dispositivos que admiten la transferencia de datos (por ejemplo, una computadora portátil (incluso en reposo) o algunas células solares), por lo que uso un cable USB que no admite la transferencia de datos.