Dim screen while user inactive

前端 未结 3 1922
长情又很酷
长情又很酷 2021-01-11 18:46

I have an app which is used for lets say 4 hours, but only every 5 minutes a user needs to make an input or read the screen. Putting the phone to sleep and locking the scre

相关标签:
3条回答
  • 2021-01-11 19:27

    You can use:

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

    to dim/undim the screen when you want to.

    lp.dimAmount=1.0f will dim the screen totally but you can set it at your will with values from 0 (no dim at all) to 1.0f.

    You can set a timer to call this after 5 minutes of inactivity and then turn the screen "back on" on any touch event or such maybe.

    0 讨论(0)
  • 2021-01-11 19:30

    Does this answer your last Q from Jan 26 '11 at 15:28

     PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
     PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
      wl.acquire();
       ..screen will stay on during this section..
     wl.release();
    

    See here for more: http://developer.android.com/reference/android/os/PowerManager.html

    So what I mean is that you should acquire power managers wake lock before you launch your new activity to prevent screen lock. And release when you are done.


    You could likewise use lp.screenBrightness instead of lp.dimAmount

    And be sure to enter value higher then 0 to avoid screen lock:

    lp.screenBrightness = 0.01f + value / 100.0f; 
    
    0 讨论(0)
  • 2021-01-11 19:47

    Even a dim screen consumes a significant amount of battery over a time like 4 hours. You really don't want to keep the screen on like that. I think you would be better off using FLAG_SHOW_WHEN_LOCKED, allowing the screen to turn off, but for the user to immediately go in to your app when turning it back on without having to first go through the lock screen.

    If you really need to keep the screen dim, you can use a SCREEN_DIM_WAKE_LOCK. If you want more control, you could also try directly setting the screen brightness with WindowManager.LayoutParams.screenBrightness.

    0 讨论(0)
提交回复
热议问题