33 */
44
55 package org .capslock .RNDeviceBrightness ;
6-
76 import android .app .Activity ;
7+ import android .content .Context ;
8+ import android .os .PowerManager ;
9+ import android .util .Log ;
810 import android .view .WindowManager ;
911 import android .provider .Settings ;
1012
1517 import com .facebook .react .bridge .ReactMethod ;
1618 import com .facebook .react .bridge .Promise ;
1719 import android .content .res .Resources ;
20+
21+ import java .lang .reflect .Field ;
22+
1823 public class RNDeviceBrightnessModule extends ReactContextBaseJavaModule {
1924 private static final int BRIGHTNESS_MAX = 255 ;
2025 private static final int BRIGHTNESS_MIN = 0 ;
@@ -57,6 +62,10 @@ public void getBrightnessLevel(Promise promise) {
5762 */
5863 private int getBrightnessMax () {
5964 try {
65+ int maxBri = getMaxBrightness (getReactApplicationContext (), BRIGHTNESS_MAX );
66+ if (maxBri != 0 ) {
67+ return maxBri ;
68+ }
6069 Resources system = Resources .getSystem ();
6170 int resId = system .getIdentifier ("config_screenBrightnessSettingMaximum" , "integer" , "android" ); // API17+
6271 if (resId != 0 ) {
@@ -67,6 +76,31 @@ private int getBrightnessMax() {
6776 }
6877 return BRIGHTNESS_MAX ;
6978 }
79+
80+ /**
81+ * 获取最大亮度(通过PowerManager的方式)
82+ * @param context
83+ * @param defaultValue
84+ * @return [int]max brightness
85+ */
86+ private int getMaxBrightness (Context context , int defaultValue ){
87+ PowerManager powerManager = (PowerManager ) context .getSystemService (Context .POWER_SERVICE );
88+ if (powerManager != null ) {
89+ Field [] fields = powerManager .getClass ().getDeclaredFields ();
90+ for (Field field : fields ) {
91+ // https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/java/android/os/PowerManager.java
92+ if (field .getName ().equals ("BRIGHTNESS_ON" )) {
93+ field .setAccessible (true );
94+ try {
95+ return (int ) field .get (powerManager );
96+ } catch (IllegalAccessException e ) {
97+ return defaultValue ;
98+ }
99+ }
100+ }
101+ }
102+ return defaultValue ;
103+ }
70104
71105 @ ReactMethod
72106 public void getSystemBrightnessLevel (Promise promise ){
0 commit comments