android 设置亮度相关方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
package com.example.lightsensortest;
 
import android.content.ContentResolver;
import android.content.Context;
import android.provider.Settings;
import android.view.Window;
import android.view.WindowManager;
 
import androidx.appcompat.app.AppCompatActivity;
 
//需要权限  <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
public class BrightnessA {
 
    
//屏幕亮度最亮255,最暗0
     //获取系统亮度值
    public static int getScreenBrightness(Context context){
//        setBrightnessManualMode(context);
        ContentResolver contentResolver=context.getContentResolver();
        int defaultValue=-1;
        return Settings.System.getInt(contentResolver,
                Settings.System.SCREEN_BRIGHTNESS, defaultValue);
    }
 
 
//获取当前app 当前屏幕亮度值
    public static float getCurrentAppBrightness(Context context) {
        Window window = ((AppCompatActivity)context).getWindow();
        WindowManager.LayoutParams lp=window.getAttributes();
        return window.getAttributes().screenBrightness *255;
    }
 
 
 
 
     
    //设置屏幕亮度
      
    //注:屏幕亮度最亮255,最暗0
      
    public static void setScreenBrightness(int brightness,Context context) {
        if(brightness<0||brightness>255){
            throw new SecurityException("=======亮度值需设置在 0-255 之间的int值=======");
        }
 
        //设置为手动模式
        setBrightnessManualMode(context);
        //设置屏幕亮度
        Window window = ((AppCompatActivity)context).getWindow();
        WindowManager.LayoutParams lp=window.getAttributes();
        lp.screenBrightness = brightness / 255.0f;
        window.setAttributes(lp);
    }
 
    /**设置屏幕最亮**/
    public static void setMaxBrightness(Context context){
        //设置为手动模式
        setBrightnessManualMode(context);
        //设置屏幕亮度
        setScreenBrightness(255,context);
    }
 
    /**设置屏幕最暗**/
    public static void setMinBrightness(Context context){
        //设置为手动模式
        setBrightnessManualMode(context);
        //设置屏幕亮度
        setScreenBrightness(0,context);
    }
 
    
    //设置屏幕常亮
    //需要在界面调用 "setContentView(R.layout.布局id);" 之前调用。
      
    public static void setScreenKeepOn(Context context){
        ((AppCompatActivity)context).getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    }
 
     
    //清除屏幕常亮
      
    //常在activity的onPause()周期内调用(仅供参考)
     
    public static void cancelScreenKeepOn(Context context){
        ((AppCompatActivity)context).getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    }
 
 
     
     //设置亮度调节模式为手动模式
      
     //SCREEN_BRIGHTNESS_MODE_AUTOMATIC:自动调节模式
     //SCREEN_BRIGHTNESS_MODE_MANUAL:手动调节模式
     
    private static void setBrightnessManualMode(Context context){
        ContentResolver contentResolver=context.getContentResolver();
        int model= 0;
        try {
            model = Settings.System.getInt(contentResolver,Settings.System.SCREEN_BRIGHTNESS_MODE);
        } catch (Settings.SettingNotFoundException e) {
            e.printStackTrace();
        }
        if(model==Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC){
            Settings.System.putInt(
                    contentResolver, Settings.System.SCREEN_BRIGHTNESS_MODE,
                    Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
        }
    }
 
}

  

posted on   Kurenoki  阅读(119)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!
点击右上角即可分享
微信分享提示