RK Android7.1 进入Camera2 亮度会增加

 

一.现象

Android7.1  进Camera2 背光亮度会增加到 brightness 229 ,退出之后Camera2 亮度会回到默认值,不正常退出Camera2 (不完成生命周期)则会保存到 brightness 229

1
adb shell settings get system screen_brightness

 二.RK OS 

ZK_RXXX_RK3399_ANDROID7.1\packages\apps\Camera2\src\com\android\camera\CameraActivity.java

       setScreenBrightAdjust  设置背光值

                     mScreenBrightAdjust

             restoreScreenBright  

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
private void setMaxScreenBright() {
    Window win = getWindow();
    WindowManager.LayoutParams winParams = win.getAttributes();
    Log.i(TAG, "screenBrightness = " + winParams.screenBrightness);
    winParams.screenBrightness = WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL;
    win.setAttributes(winParams);
}
 
private int mOrignalScreenBrightMode = -1;
private int mOrignalScreenBrightness = -1;
private void setScreenBrightAdjust() {
    mOrignalScreenBrightMode = getScreenMode();
    mOrignalScreenBrightness = getScreenBrightness();
    Log.i(TAG, "mOrignalScreenBrightMode = " + mOrignalScreenBrightMode
            + ",mOrignalScreenBrightness = " + mOrignalScreenBrightness);
    if (mOrignalScreenBrightMode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC)
        setScreenMode(Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
    if (mOrignalScreenBrightness < ((int) (255 * 0.9f)))
        saveScreenBrightness((int) (255 * 0.9f));
}
 
private Runnable mScreenBrightAdjust = new Runnable() {
     
    @Override
    public void run() {
        // TODO Auto-generated method stub
        setScreenBrightAdjust();
    }
};
 
private void restoreScreenBright() {
    mMainHandler.removeCallbacks(mScreenBrightAdjust);
    setScreenMode(mOrignalScreenBrightMode);
    saveScreenBrightness(mOrignalScreenBrightness);
}
 
/**
 * getCurrentScreenBrightMode
 * SCREEN_BRIGHTNESS_MODE_AUTOMATIC=1 auto
 * SCREEN_BRIGHTNESS_MODE_MANUAL=0  manual
 */ 
private int getScreenMode() {
    int screenMode=0;
    try {
        screenMode = Settings.System.getInt(getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS_MODE);
    }
    catch (Exception localException){
        Log.e(TAG, "getScreenMode error:" + localException);
    }
    return screenMode; 
 
/**
 * getScreenBrightness  0--255
 */ 
private int getScreenBrightness() {
    int screenBrightness = 255;
    try {
        screenBrightness = Settings.System.getInt(getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS);
    }
    catch (Exception localException){
        Log.e(TAG, "getScreenBrightness error:" + localException);
    }
    return screenBrightness; 
}
 
/**
 * setScreenMode
 * SCREEN_BRIGHTNESS_MODE_AUTOMATIC=1 auto
 * SCREEN_BRIGHTNESS_MODE_MANUAL=0  manual
 */
private void setScreenMode(int paramInt){
    if (paramInt < 0) return;
    try
        Settings.System.putInt(getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS_MODE, paramInt);
    }catch (Exception localException){
        Log.e(TAG, "setScreenMode error:" + localException);
    }
}
 
/**
 * saveScreenBrightness  0--255
 */ 
private void saveScreenBrightness(int paramInt){
    if (paramInt < 0) return;
    try
        Settings.System.putInt(getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS, paramInt);
    }
    catch (Exception localException) {
        Log.e(TAG, "saveScreenBrightness error:" + localException);
    }
}

 把setScreenBrightAdjust  干掉就差不多了……… 

  

posted @   CrushGirl  阅读(311)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示