2012-04-25 67 views
1

我試圖執行一些事情 -打開/喚醒屏幕一段時間

屏幕關閉(黑暗)。 我希望能夠喚醒屏幕15秒鐘(通過事件/廣播或其他...),然後,如果沒有用戶干預,屏幕應該關閉(黑暗)再次。

我怎樣才能做到這一點?

+0

聽起來像一個很好的方式來浪費電池:) – zapl 2012-04-25 21:42:05

+3

它是如何幫助我? – dor506 2012-04-25 21:43:34

回答

2

您可以使用AlarmManager。

你觸發警報與這樣的臺詞:

Alarm Manager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 

pendingServiceIntent = PendingIntent.getService(this.getApplicationContext(), 0, 
      new Intent(this.getApplicationContext(), DataCollectionService.class), 0); 

long intervalInMinutes = 5; // will wake you up every 5 minutes 
long triggerAtTime = System.currentTimeMillis() + 1000*60*intervalInMinutes; 
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerAtTime, pendingServiceIntent); 

在我來說,我是觸發的服務。您可以擴展BroadcastReceiver或任何你想要的。然後,您將使用激活鎖定點亮屏幕至少15秒:

powerManager = (PowerManager) getSystemService(POWER_SERVICE); 
wL = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "LocRepTask"); 
wL.acquire(); // forces processor to stay awake 
// do your stuff..... 
wl.release(); // processor no longer awake because of you 

您需要許可WAKE_LOCK在Android清單。

1

爲了做到這一點,你必須有一個正在運行的服務,持有partial wake lock。然後,該服務可以在任意時間間隔向廣播接收器發出意圖並喚醒屏幕。然而,就像評論者所建議的那樣,這意味着即使設備屏幕關閉,CPU也必須保持開啓狀態,這會比待機時更快耗盡電池。 (這本身並不是一個不這樣做的理由,只是說你必須權衡考慮因素)

您擁有的其他要求很容易被PowerManager API覆蓋 - 希望這足以讓您脫離。祝你好運!

相關問題