2010-05-04 12 views
8

mi aplicación hace algo cuando la pantalla se pone negra, pero quiero que solo lleve a cabo esa tarea si la pantalla se apagó "por sí misma", a través de un tiempo de espera de pantalla, NO cuando el usuario presiona el botón de encendido. ¿Hay alguna manera de distinguir entre estos dos eventos?Distinga entre el tiempo de espera de la pantalla y el botón de encendido y presión?

ACTION_SCREEN_OFF obviamente dispara en ambos casos, y no he encontrado ninguna otra intención que coincida con lo que estoy buscando.

Gracias por su ayuda, Nick

+0

Qué es lo que Intentando hacer? Puede haber otra acción para escuchar. – CaseyB

+0

Estoy tratando de realizar un cálculo simple cuando se agotó el tiempo de espera de la pantalla, pero no cuando el usuario presiona el botón de encendido para apagar la pantalla "forzadamente". Una acción de "tiempo de espera" sería genial, pero aún no he encontrado nada similar. ¿Es posible consultar si la pantalla de bloqueo está activada (lo que, en mi opinión, normalmente solo ocurre cuando presiona el botón de encendido, al menos en la N1)? – Nick

+0

¿Por qué quieres hacer eso solo en esa situación? Si explica * qué * y * por qué *, quizás alguien le sugiera una mejor solución. –

Respuesta

4

En el nivel inferior hay un evento que ocurre cuando la pantalla se apaga, eche un vistazo con "adb logcat" y lo verá, excavar desde allí.

+0

Gracias por su respuesta. Vi eso, pero pensé que ya que no es una transmisión pública, no podría escucharlo, pero estoy seguro de que encontraré algo sobre eso en google si dices que es teóricamente posible (aunque no con medios comunes) , Supongo). ¡Gracias! – Nick

0

Se puede escuchar un evento de teclado KEYCODE_POWER? Eso podría hacer lo que quieras. (Pero el orden en el que eso y ACTION_SCREEN_OFF llegan podría no estar garantizado).

+0

Hola, gracias por la respuesta! Es una buena idea, aunque lo probé y no funciona, no parece posible capturar ese código clave: http://groups.google.com/group/android-developers/browse_thread/thread/8c858b7a8605791d/ 9120aa96dfb59d82? Lnk = raot Además, necesitaría registrar ese evento clave en todo el sistema porque estoy usando un servicio, que tampoco es posible, creo: -/ Pero gracias por su ayuda, es un buena idea, si funcionó, hubiera sido perfecto :-)! – Nick

1

Los servicios no pueden manejar eventos de botón directamente. Tal vez pueda hacer que su Actividad registre un receptor de difusión para recibir notificaciones cuando se apaga la pantalla, y luego haga que la Actividad marque la última tecla presionada para ver si era el botón de encendido; si no lo estaba, puede enviar un transmitir a su servicio y hacer que funcione todo lo que desee.

1

Esa es una pregunta divertida :) Aunque no es exacta, puede intentar muestrear el tiempo transcurrido desde que el usuario último evento de contacto y el tiempo que su actividad va a hacer una pausa - y ver si es ajusta a la screen off timeout

Cuestiones relacionadas