This strona ma samouczek dokładnie tego, czego szukasz.
kod skopiowane z tej strony (aby włączyć ten z linku tylko odpowiedzieć na coś bezpośrednio przydatne):
1) Tworzenie klasy w aplikacji, aby otrzymać intencji. Na przykład, następujący odbiornik stoi sam i ustawia zmienną statyczną do wykorzystania w części 2:
2) Zmienić swoją aktywność, aby otrzymać ekran włączania/wyłączania zdarzeń. Odbiornik będzie sprawdzić zmienną statyczną w odbiorniku transmisji poznać przyczynę zamiarem po prostu odebrane:
public class ExampleActivity extends Activity {
@Override
protected void onCreate() {
// initialize receiver
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
BroadcastReceiver mReceiver = new ScreenReceiver();
registerReceiver(mReceiver, filter);
// your code
}
@Override
protected void onPause() {
// when the screen is about to turn off
if (ScreenReceiver.wasScreenOn) {
// this is the case when onPause() is called by the system due to a screen state change
System.out.println("SCREEN TURNED OFF");
} else {
// this is when onPause() is called when the screen state has not changed
}
super.onPause();
}
@Override
protected void onResume() {
// only when screen turns on
if (!ScreenReceiver.wasScreenOn) {
// this is when onResume() is called due to a screen state change
System.out.println("SCREEN TURNED ON");
} else {
// this is when onResume() is called when the screen state has not changed
}
super.onResume();
}
}
@Yaniv: „Muszę wiedzieć, w mojej aplikacji, gdy urządzenie przechodzi na sen/wyłączyć ekran. " -- czemu? 99,999% aplikacji na Androida nie potrzebuje tego. Jedyny sposób, aby to zrobić, zakłada zachowanie dość wrogie dla użytkownika (np. Zawsze działająca usługa). Wyjaśnij więc, co próbujesz osiągnąć, abyśmy mogli znaleźć lepsze rozwiązanie. – CommonsWare