android 通过悬浮窗调节屏幕亮度
来源:互联网 发布:java视频推荐 编辑:程序博客网 时间:2024/06/11 22:21
网上大部分文章是通过Activity调节屏幕亮度的,但是这种亮度调节方法存在一个隐藏的bug,就是当如果当前屏幕上又一个悬浮窗,并且悬浮窗的type为WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;的时候,无论你怎么在activity中设置屏幕亮度都是无效的。猜测原因应该是由于当前的悬浮窗与设置亮度的activity处于同一个viewgroup或者悬浮窗处于更高一级的viewgroup,导致activity设置屏幕亮度无效。解决方法很简单,自己定义一个更高优先级的悬浮窗进行亮度设置,然后再移除悬浮窗就可以了。
代码如下,主要是加入一个悬浮窗
public class BrightnessSet {private static BrightnessSet mBrightnessSet;private Context context;private BrightnessSet(){init();};public static BrightnessSet getInstance(){if(mBrightnessSet == null) {mBrightnessSet = new BrightnessSet();}return mBrightnessSet;}public void setScreenBrightness(int brightness){if(brightness < 0 || brightness > 255){//自动调节亮度 ,先设置为150SystemSettings.startAutoBrightness(context);//设置亮度为自动Toast.makeText(context, R.string.system_settings_screenbrightness_auto, Toast.LENGTH_SHORT).show();}else{SystemSettings.stopAutoBrightness(context);setBrightness(brightness);SystemSettings.saveBrightness(context,brightness);//保存亮度,自定义的方法removeFloatView();}}/** * 初始化悬浮窗 */private void init() {context = MyApplication.mMyApplication;//Application中的一个静态变量,也可以通过初始化传入contextfloatView = new TextView(context.getApplicationContext());windowManager = (WindowManager) context.getApplicationContext().getSystemService(Context.WINDOW_SERVICE);params = new LayoutParams();params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;params.flags=LayoutParams.FLAG_NOT_TOUCH_MODAL | LayoutParams.FLAG_NOT_FOCUSABLE | LayoutParams.FLAG_NOT_TOUCHABLE; params.format = PixelFormat.RGBA_8888; // 设置图片格式,效果为背景透明params.width = 0;params.height = 0;}private TextView floatView ;private WindowManager windowManager;private LayoutParams params;/** * 创建悬浮窗,通过悬浮窗设置亮度 */private void setBrightness(int brightness) {params.screenBrightness = brightness / 255;windowManager.addView(floatView, params);}private void removeFloatView() {windowManager.removeView(floatView);}}
- android 通过悬浮窗调节屏幕亮度
- android通过seekbar调节屏幕亮度
- Android 屏幕亮度调节
- android调节屏幕亮度
- Android屏幕亮度调节
- android调节屏幕亮度
- Android 调节屏幕亮度
- Android:调节屏幕亮度
- android 调节屏幕亮度
- android调节屏幕亮度
- android调节屏幕亮度
- android屏幕亮度调节
- Android 调节屏幕亮度
- android 调节屏幕亮度
- Android屏幕亮度调节
- android 调节屏幕亮度
- Android调节屏幕亮度
- Android屏幕亮度调节
- Unity3D之AStarPathFinding插件的使用
- hdu 1230 火星A+B
- C#利用GDI+绘制旋转文字,矩形内可以根据布局方式排列文本
- 黑马程序员_Java泛型
- PLSQL总结
- android 通过悬浮窗调节屏幕亮度
- 网络编程基础
- Python用subprocess的Popen来调用系统命令
- [菜鸟每天来段CUDA_C]GPU上通过常量内存实现光线跟踪
- Redhad linux上练习下oracle服务的停止和启动
- 移动平台3G手机网站前端开发布局技巧汇总
- 设计模式之观察者模式(三)
- ArcGIS Server for flex地图控件的常用属性
- iOS 7 教程:让程序同时支持iOS 6和iOS 7