开启/唤醒屏幕一段时间

Posted

技术标签:

【中文标题】开启/唤醒屏幕一段时间【英文标题】:Turn on / Wake screen for a period of time 【发布时间】:2012-04-25 21:38:54 【问题描述】:

我正在尝试实现一些东西 -

屏幕关闭(暗)。 我希望能够将屏幕唤醒 15 秒(通过事件/广播或其他东西......),之后,如果没有用户干预,屏幕应该再次关闭(黑暗) .

我该怎么做?

【问题讨论】:

听起来是一种浪费电池的好方法 :) 它对我有什么帮助? 【参考方案1】:

您可以使用 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 或任何您想要的。然后,您将使用 WakeLock 点亮屏幕至少 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

您需要在 android manifest 中获得 WAKE_LOCK 的权限。

【讨论】:

【参考方案2】:

为了做到这一点,您必须有一个正在运行的服务,该服务持有一个partial wake lock。然后,该服务可以按您想要的任何时间间隔向广播接收器发出意图并唤醒屏幕。不过,就像评论者所建议的那样,这意味着即使设备屏幕关闭,CPU 也必须保持开启状态,这将比待机更快地耗尽电池电量。 (这本身并不是不这样做的理由,只是说你必须权衡考虑)

PowerManager API 可以轻松满足您的其他要求 - 希望这足以让您摆脱困境。祝你好运!

【讨论】:

以上是关于开启/唤醒屏幕一段时间的主要内容,如果未能解决你的问题,请参考以下文章

mac合上盖外接显示器,休眠后过一段时间再唤醒时显示器无信号无反应

Xamarin Forms iOS 在唤醒时冻结

在 Android 1.5 服务中使用唤醒锁

iPhone - 是不是可以在一段时间后“唤醒”应用程序?

WakefulBroadcastReceiver 没有唤醒屏幕

唤醒锁没有打开屏幕?帮助?