用户不活动时屏幕变暗

时间:2011-01-26 10:01:36

标签: android wakelock

我有一个应用程序用于4小时,但用户只需每5分钟输入一次或阅读屏幕。让手机进入睡眠状态并锁定屏幕有点烦人。所以我有两个选择:

  1. getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);没有锁定屏幕,但屏幕总是很亮,我想在没有活动时调暗它。仅仅是因为电池寿命延长,或者这4小时没那么重要吗?

  2. 唤醒锁SCREEN_DIM_WAKE_LOCK 这也是我想要的,但我被告知要使用上面的选项1.

  3. 如果没有唤醒锁,我能以某种方式实现想要吗?

3 个答案:

答案 0 :(得分:13)

您可以使用:

WindowManager.LayoutParams lp = getWindow().getAttributes();  
lp.dimAmount=1.0f; 
getWindow().setAttributes(lp);  

根据需要调暗/取消屏幕。

lp.dimAmount=1.0f会完全调暗屏幕,但您可以根据自己的意愿设置,其值为0(完全没有暗淡)到1.0f。

你可以设置一个计时器,在5分钟不活动后调用它,然后在任何触摸事件或类似情况下“重新打开”屏幕。

答案 1 :(得分:5)

即使是昏暗的屏幕也会在4小时内消耗大量电池。你真的不想像这样保持屏幕。我认为你最好使用FLAG_SHOW_WHEN_LOCKED,允许屏幕关闭,但让用户在重新打开时立即进入你的应用程序而无需先通过锁定屏幕。

如果您确实需要保持屏幕暗淡,可以使用SCREEN_DIM_WAKE_LOCK。如果您想要更多控制,您还可以尝试使用WindowManager.LayoutParams.screenBrightness直接设置屏幕亮度。

答案 2 :(得分:2)

这是否回答了你在2011年1月26日15:28

的最后一个问题

PowerManager pm =(PowerManager)getSystemService(Context.POWER_SERVICE);  PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK,“我的标签”);  wl.acquire();    ..屏幕将在此部分保持...  wl.release();

请点击此处了解详情:http://developer.android.com/reference/android/os/PowerManager.html

所以我的意思是你应该在启动新活动之前获得电源管理器唤醒锁定以防止屏幕锁定。完成后释放。


您也可以使用lp.screenBrightness而不是lp.dimAmount

并确保输入高于0的值以避免屏幕锁定:

lp.screenBrightness = 0.01f + value / 100.0f;