Chcę dowiedzieć się, jak wykryć, kiedy telefon budzi się z trybu czarnego ekranu i napisz handler do tego zdarzenia. Czy to jest możliwe? Wygląda na to, że powinien to być odbiornik Broadcast Receiver? Czy istnieje lepszy lub bardziej odpowiedni sposób?Czy można napisać odbiornik telewizyjny z Androidem, który wykrywa, kiedy telefon się budzi?
Odpowiedz
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?
Jesteś tuż przy odbiorniku transmisji. Możesz słuchać wydarzeń rozgłoszeniowych SCREEN_ON i SCREEN_OFF.
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.
Działa to również w przypadku rejestracji z AndroidManifest.xml. – bk138
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
W tym artykule omówiono problem związany z usługą w tle - http://www.androidguys.com/2010/03/29/code-pollution-background-control/ –
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. –