Android护眼模式、屏幕亮度调节功能开发【基于Android8.0】

Android护眼模式、屏幕亮度调节功能开发【基于Android8.0】

【引言】网上关于写护眼模式,屏幕亮度调节的android的方法很少,找到的都不能很好的适配Android8.0的版本。于是自己查了很多api文档,研究了一下方法。

【功能实现】就像很多护眼模式的app一样,都是基于开启悬浮窗的方法。相当于弄一个全屏的,半透明的黄色的 悬浮窗遮罩。

我们需要把屏幕亮度调节的做成服务,为了防止后台服务被系统kil,还是弄成前台服务为好。

首先获取windowmanager

mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);

然后设置类型

final WindowManager.LayoutParams params = new WindowManager.LayoutParams();
params.type = WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;

设置flag

int flag=WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL| WindowManager.LayoutParams.FLAG_FULLSCREEN|
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;

 这个参数可以把触摸事件传递到后面去

设置遮罩

params.format = PixelFormat.TRANSLUCENT;

覆盖导航栏

WindowManager mWindowManager= (WindowManager) context.getSystemService(context.WINDOW_SERVICE);
 Display display = mWindowManager.getDefaultDisplay();
 Point p = new Point();
 display.getRealSize(p);
 params.width = p.x;
 params.height = p.y;

 在服务里面设置前台

startForeground(1, builder);

再添加一个颜色选择器,就完成了。(比如使用ColorPickerDialog)

最后效果

 

整体添加了一层黄色的遮罩,相当于过滤蓝光。

猜你喜欢

转载自blog.csdn.net/u014549283/article/details/81133179
今日推荐