2012-12-05 127 views
1

我已經寫了一個android應用程序,現在有一個問題。Android:哪些事件喚醒設備

如果我的應用程序正在運行,並且關閉了我的設備,那麼有時它會在大約8秒鐘後喚醒,然後屏幕打開並再次顯示我的應用程序。

我的問題是: 哪些事件或處理約束(如處理廣播意圖)喚醒設備?

編輯:帶有RCT_WAKEUP的鬧鐘是否會打開設備屏幕?

在此先感謝!

回答

1

AlarmManager不會真正爲您打開屏幕。你可以使用喚醒鎖來代替。

PowerManager.WakeLock wakelock; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    ......... 

    PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
    wakelock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK 
       | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "AlarmReceiver"); 
    wakelock.acquire();  
} 

當你與活動做只是一定要釋放喚醒鎖定:

@Override 
protected void onStop() { 
    super.onStop(); 
    wakelock.release(); 
} 

您還需要添加之後鎖定權限在manifest文件:

<uses-permission android:name="android.permission.WAKE_LOCK"/> 

或者,如果您不想包含此額外權限,則可以在您的活動中使用以下代碼而不是使用喚醒鎖:

this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | 
       WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | 
       WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | 
       WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON | 
       WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
+0

嗨,謝謝你的回答。 但我的問題不是如何喚醒設備和如何保持屏幕,但哪些事件會喚醒我的設備。我不想喚醒我的設備,它不是一部手機,也不是一部平板電腦,而是一部自定義設備,它必須處於睡眠模式一段時間,而不會自動開機。 – robotniko