2010-05-04 8 views
8

Moja aplikacja robi coś, gdy ekran robi się czarny, ale chcę, aby wykonywał to zadanie tylko wtedy, gdy ekran był wyłączony "samoczynnie", przez timeout ekranu - NIE, gdy użytkownik naciśnie przycisk zasilania. Czy istnieje sposób na rozróżnienie tych dwóch zdarzeń?Rozróżnianie między czasem oczekiwania ekranu a naciśnięciem przycisku zasilania?

oczywiście pożary w obu przypadkach i nie znalazłem żadnych innych intencji, które mogłyby pasować do tego, czego szukam.

Dzięki za pomoc, Nick

+0

Czego Próbujesz to zrobić? Może być inna akcja, której należy posłuchać. – CaseyB

+0

Próbuję wykonać proste obliczenia po przekroczeniu limitu czasu ekranu, ale nie wtedy, gdy użytkownik naciśnie przycisk zasilania, aby "przymusowo" wyłączyć ekran. Akcja "Timeout" byłaby świetna, ale nie znalazłem jeszcze nic podobnego. Czy można zapytać, czy blokada ekranu jest włączona (co, jak sądzę, dzieje się zazwyczaj tylko po naciśnięciu przycisku zasilania, przynajmniej na N1)? – Nick

+0

Dlaczego chcesz to zrobić tylko w tej sytuacji? Jeśli wytłumaczysz * co * i * dlaczego *, być może ktoś zaproponuje ci lepsze rozwiązanie. –

Odpowiedz

4

Na niższym poziomie zdarza się wydarzenie, gdy ekran się wygaśnie, spójrz na "adb logcat", a zobaczysz go, wykopuj stamtąd.

+0

Dzięki za odpowiedź. Widziałem to, ale myślałem, że skoro nie jest to transmisja publiczna, nie mogłem tego słuchać, ale jestem pewna, że ​​znajdę coś na ten temat w Google, jeśli powiesz, że jest to teoretycznie możliwe (choć nie ze zwykłymi środkami , Zgaduję). Dzięki! – Nick

0

można posłuchać na imprezie KEYCODE_POWER klawiatury? To może zrobić, co chcesz. (Jednak kolejność, w jakiej te i ACTION_SCREEN_OFF mogą zostać dostarczone, może nie być gwarantowana).

+0

Cześć, dziękuję za odpowiedź! To dobry pomysł, chociaż po prostu go wypróbowałem i to nie działa, nie wydaje się możliwe złapanie tego kodu: http://groups.google.com/group/android-developers/browse_thread/thread/8c858b7a8605791d/ 9120aa96dfb59d82? Lnk = raot Muszę również zarejestrować cały kluczowy system zdarzeń, ponieważ korzystam z usługi, co również nie jest możliwe, myślę: -/ Ale dzięki za pomoc, to jest dobry pomysł, gdyby to działało, byłoby idealnie :-)! – Nick

1

Usługi nie mogą bezpośrednio obsługiwać zdarzeń przycisku. Być może możesz mieć swoją działalność zarejestrować odbiornik, aby otrzymywać powiadomienia, gdy ekran się dzieje, a następnie mieć sprawdzić aktywność ostatni klawisz wciśnięty, aby zobaczyć, czy to był przycisk zasilania - gdyby nie było wtedy można wysłać nadawać do swojej usługi i mieć uruchomione, co chcesz.

1

To pytanie zabawa :) Chociaż nie jest dokładna, można spróbować próbkowania czasu od zdarzenia ostatni dotyk użytkownika i do czasu swoją działalność wykracza wstrzymać - i zobaczyć, czy to pasuje do screen off timeout

Powiązane problemy