Android实现长时间不用APP屏幕变暗
2018-07-20 来源:open-open
这个原理很简单,相信大家都比较熟悉安卓的图形渲染过程,所以就不介绍了,大概原理就是修改window的亮度,然后达到让屏幕变黑的效果,通过监听activity的
dispatchTouchEvent方法来全局监听屏幕的变化。
import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.view.MotionEvent; import android.view.WindowManager; public class BaseActivity extends Activity { /** * 最大的屏幕亮度 */ float maxLight; /** * 当前的亮度 */ float currentLight; /** * 用来控制屏幕亮度 */ Handler handler; /** * 延时时间 */ long DenyTime = 5 * 1000L; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); InitData(); } private void InitData() { handler = new Handler(Looper.getMainLooper()); maxLight = GetLightness(this); } /** * 设置亮度 * * @param context * @param light */ void SetLight(Activity context, int light) { currentLight = light; WindowManager.LayoutParams localLayoutParams = context.getWindow().getAttributes(); localLayoutParams.screenBrightness = (light / 255.0F); context.getWindow().setAttributes(localLayoutParams); } /** * 获取亮度 * * @param context * @return */ float GetLightness(Activity context) { WindowManager.LayoutParams localLayoutParams = context.getWindow().getAttributes(); float light = localLayoutParams.screenBrightness; return light; } @Override protected void onPause() { super.onPause(); stopSleepTask(); } @Override protected void onResume() { super.onResume(); startSleepTask(); } @Override public boolean dispatchTouchEvent(MotionEvent ev) { if (currentLight == 1) { startSleepTask(); } return super.dispatchTouchEvent(ev); } /** * 开启休眠任务 */ void startSleepTask() { SetLight(this, (int) maxLight); handler.removeCallbacks(sleepWindowTask); handler.postDelayed(sleepWindowTask, DenyTime); } /** * 结束休眠任务 */ void stopSleepTask() { handler.removeCallbacks(sleepWindowTask); } /** * 休眠任务 */ Runnable sleepWindowTask = new Runnable() { @Override public void run() { SetLight(BaseActivity.this, 1); } }; }
标签: isp
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
最新资讯
热门推荐