2012-04-25 71 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覆盖 - 希望这足以让您脱离。祝你好运!

相关问题