2011-07-05 29 views
7

Android 3.0 üzerinde çalışıyorum ve aygıt uyku moduna geçtiğinde/kapatıldığında uygulamamda bilmem gerekiyor.Android'de uyku olayı nasıl kaydedilir?

Bu amaç/olaya nasıl kaydolabilirim, böylece bu olduğunda bazı eylemleri gerçekleştirebilir miyim? BroadcastReceiver'de bunun için bildirim yapan herhangi bir eylem var mı?

+1

@Yaniv: sizin yayın alıcısı statik değişkeni kontrol edecek Kişisel alıcı sadece alınan niyet sebebini bilmek "Ben cihaz uyku gittiğinde/başvurumu biliyorum ekranını kapatmak gerekir. " -- niye ya? Android uygulamalarının% 99,999'unun buna ihtiyacı yoktur. Bunu yapmanın tek yolu, oldukça kullanıcı-düşmanca davranışı varsayar (ör., Her zaman çalışan bir servis). Yani, neyi başarmaya çalıştığınızı açıklayın, böylece daha iyi bir çözüm bulmaya yardımcı olabiliriz. – CommonsWare

cevap

13

This sayfa tam olarak aradığınız şey hakkında bir eğiticiye sahiptir. o sayfadan kopyalanan

Kodu (sırayla okunur bağlantıya doğrudan kullanışlı bir şeye cevap bir bu çevirmek):

1) niyet almak için başvuruda bir sınıf oluşturun. Örneğin, aşağıdaki alıcı tek başına duruyor ve kısmen 2 kullanılmak üzere bir statik değişkeni ayarlar:

2)/kapalı olaylara ekranı almak için aktiviteyi değiştirin.

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(); 
    } 
} 
+4

manuel uyku (kullanıcı tarafından yapılan, güç düğmesine basarak) ve otomatik uyku (X dakika sonra) arasında ayrım yapmak mümkün mü? –