2010-04-05 9 views

Odpowiedz

3

Jeśli masz życzenie, że aktywny można złapać te wydarzenia z

registerReceiver(new BroadcastReceiver() { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
    // do something 
    } 
}, new IntentFilter(Intent.ACTION_SCREEN_ON)); 

jednak ten opiera się na posiadaniu wiecznie bieżącą obsługę który Niedawno dowiedziałem się zniechęcać, ponieważ jest kruchy (OS lubi je zamknąć) i trwale korzysta z zasobów.

Wygląda na to, że w manifeście przechwytującym zdarzenia SCREEN_ON nie można znaleźć odbiorcy.

ta ma pochodzić niedawno:

android.intent.action.SCREEN_ON doesn't work as a receiver intent filter

również

Android - how to receive broadcast intents ACTION_SCREEN_ON/OFF?

+0

ah dzięki, który wykryje ekran i pozwoli mi prawidłowo go obsłużyć? Czytałem twój wątek i nie polecasz korzystania z usługi w tle i czekania, aż telefon się obudzi. Czemu? Jaki jest minus i czy istnieje jakiś sposób? Nie działa w tle usług w jaki sposób można wykryć takie zdarzenia? – Joe

+0

W tym artykule omówiono problem związany z usługą w tle - http://www.androidguys.com/2010/03/29/code-pollution-background-control/ –

+0

Problem z tą odpowiedzią, ale dlaczego działa, to dlatego, że Twoja działalność nie otrzymuje intencji, gdy telefon śpi. więc możesz zarejestrować screen_on w swojej aktywności, ale nigdy go nie dostaniesz. –

0

Jesteś tuż przy odbiorniku transmisji. Możesz słuchać wydarzeń rozgłoszeniowych SCREEN_ON i SCREEN_OFF.

3

Możesz również mieć odbiornik telewizyjny, który przechwytuje zamiar nadawania przez użytkownika USER_PRESENT, gdy użytkownik odblokuje urządzenie. Oczywiście niektóre wersje Honeycomb nie honorują tego, ale dla wszystkich nie-mózgowych wersji Androida (2.x i 4.x), to działa ładnie.

+1

Działa to również w przypadku rejestracji z AndroidManifest.xml. – bk138

Powiązane problemy