|
|
|
@ -32,7 +32,6 @@ import android.telephony.SubscriptionManager;
|
|
|
|
|
import android.telephony.TelephonyManager;
|
|
|
|
|
import android.util.Log;
|
|
|
|
|
import android.view.KeyEvent;
|
|
|
|
|
import android.view.WindowManager;
|
|
|
|
|
import android.widget.Toast;
|
|
|
|
|
|
|
|
|
|
import androidx.annotation.RequiresApi;
|
|
|
|
@ -65,10 +64,10 @@ import java.lang.reflect.Method;
|
|
|
|
|
import java.net.InetAddress;
|
|
|
|
|
import java.net.NetworkInterface;
|
|
|
|
|
import java.security.KeyStore;
|
|
|
|
|
import java.text.Normalizer;
|
|
|
|
|
import java.util.Calendar;
|
|
|
|
|
import java.util.Collections;
|
|
|
|
|
import java.util.Enumeration;
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.Random;
|
|
|
|
@ -2054,13 +2053,12 @@ public class Actions
|
|
|
|
|
else
|
|
|
|
|
android.provider.Settings.System.putInt(context.getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE, android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
|
|
|
|
|
|
|
|
|
|
int actualBrightnessValue = (int) ((float) brightnessValue / 100.0 * 255.0);
|
|
|
|
|
if(actualBrightnessValue == 0)
|
|
|
|
|
actualBrightnessValue = 1; // seems to be the minimum, 0 isn't working
|
|
|
|
|
// Old mathematical approach doesn't seem to be working anymore
|
|
|
|
|
// int actualBrightnessValue = (int) ((float) brightnessValue / 100.0 * 255.0);
|
|
|
|
|
|
|
|
|
|
// try
|
|
|
|
|
// {
|
|
|
|
|
// for (int i = 1; i < 255; i++)
|
|
|
|
|
// for (int i = 160; i < 255; i++)
|
|
|
|
|
// {
|
|
|
|
|
// android.provider.Settings.System.putInt(context.getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS, i);
|
|
|
|
|
// Thread.sleep(1000);
|
|
|
|
@ -2072,10 +2070,191 @@ public class Actions
|
|
|
|
|
//
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
Miscellaneous.logEvent("i", "Screen brightness", "Setting screen brightness to " + String.valueOf(actualBrightnessValue), 4);
|
|
|
|
|
int actualBrightnessValue = getBrightnessSetting(brightnessValue);
|
|
|
|
|
|
|
|
|
|
Miscellaneous.logEvent("i", "Screen brightness", "Setting screen brightness to " + String.valueOf(brightnessValue) + " by using " + String.valueOf(actualBrightnessValue), 4);
|
|
|
|
|
android.provider.Settings.System.putInt(context.getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS, actualBrightnessValue);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int getBrightnessSetting(int percentage)
|
|
|
|
|
{
|
|
|
|
|
if(percentage == 0)
|
|
|
|
|
return 1; // seems to be the minimum, 0 isn't working
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
By taking notes which value results in which brightness percentage I came up with this lookup list.
|
|
|
|
|
Somebody at Google must have been smoking something.
|
|
|
|
|
|
|
|
|
|
Not all percentages can be implemented. Hence the next possible value will be used.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
Map<Integer, Integer> percentageSettingValueMap = new HashMap<>();
|
|
|
|
|
|
|
|
|
|
if(Build.VERSION.SDK_INT < 34)
|
|
|
|
|
{
|
|
|
|
|
// Noted from Android 10
|
|
|
|
|
percentageSettingValueMap.put(11, 10);
|
|
|
|
|
percentageSettingValueMap.put(16, 11);
|
|
|
|
|
percentageSettingValueMap.put(19, 12);
|
|
|
|
|
percentageSettingValueMap.put(22, 13);
|
|
|
|
|
percentageSettingValueMap.put(25, 14);
|
|
|
|
|
percentageSettingValueMap.put(27, 15);
|
|
|
|
|
percentageSettingValueMap.put(29, 16);
|
|
|
|
|
percentageSettingValueMap.put(31, 17);
|
|
|
|
|
percentageSettingValueMap.put(33, 18);
|
|
|
|
|
percentageSettingValueMap.put(35, 19);
|
|
|
|
|
percentageSettingValueMap.put(37, 20);
|
|
|
|
|
percentageSettingValueMap.put(38, 21);
|
|
|
|
|
percentageSettingValueMap.put(40, 22);
|
|
|
|
|
percentageSettingValueMap.put(41, 23);
|
|
|
|
|
percentageSettingValueMap.put(43, 24);
|
|
|
|
|
percentageSettingValueMap.put(44, 25);
|
|
|
|
|
percentageSettingValueMap.put(46, 26);
|
|
|
|
|
percentageSettingValueMap.put(47, 27);
|
|
|
|
|
percentageSettingValueMap.put(48, 28);
|
|
|
|
|
percentageSettingValueMap.put(49, 29);
|
|
|
|
|
percentageSettingValueMap.put(51, 30);
|
|
|
|
|
percentageSettingValueMap.put(52, 31);
|
|
|
|
|
percentageSettingValueMap.put(53, 32);
|
|
|
|
|
percentageSettingValueMap.put(54, 33);
|
|
|
|
|
percentageSettingValueMap.put(55, 34);
|
|
|
|
|
percentageSettingValueMap.put(56, 35);
|
|
|
|
|
percentageSettingValueMap.put(57, 36);
|
|
|
|
|
percentageSettingValueMap.put(58, 38);
|
|
|
|
|
percentageSettingValueMap.put(59, 39);
|
|
|
|
|
percentageSettingValueMap.put(60, 40);
|
|
|
|
|
percentageSettingValueMap.put(61, 42);
|
|
|
|
|
percentageSettingValueMap.put(62, 43);
|
|
|
|
|
percentageSettingValueMap.put(63, 45);
|
|
|
|
|
percentageSettingValueMap.put(64, 46);
|
|
|
|
|
percentageSettingValueMap.put(65, 48);
|
|
|
|
|
percentageSettingValueMap.put(66, 50);
|
|
|
|
|
percentageSettingValueMap.put(67, 52);
|
|
|
|
|
percentageSettingValueMap.put(68, 54);
|
|
|
|
|
percentageSettingValueMap.put(69, 56);
|
|
|
|
|
percentageSettingValueMap.put(70, 59);
|
|
|
|
|
percentageSettingValueMap.put(71, 61);
|
|
|
|
|
percentageSettingValueMap.put(72, 64);
|
|
|
|
|
percentageSettingValueMap.put(73, 67);
|
|
|
|
|
percentageSettingValueMap.put(74, 70);
|
|
|
|
|
percentageSettingValueMap.put(75, 73);
|
|
|
|
|
percentageSettingValueMap.put(76, 76);
|
|
|
|
|
percentageSettingValueMap.put(77, 80);
|
|
|
|
|
percentageSettingValueMap.put(78, 84);
|
|
|
|
|
percentageSettingValueMap.put(79, 87);
|
|
|
|
|
percentageSettingValueMap.put(80, 91);
|
|
|
|
|
percentageSettingValueMap.put(81, 96);
|
|
|
|
|
percentageSettingValueMap.put(82, 100);
|
|
|
|
|
percentageSettingValueMap.put(83, 105);
|
|
|
|
|
percentageSettingValueMap.put(84, 111);
|
|
|
|
|
percentageSettingValueMap.put(85, 116);
|
|
|
|
|
percentageSettingValueMap.put(86, 122);
|
|
|
|
|
percentageSettingValueMap.put(87, 128);
|
|
|
|
|
percentageSettingValueMap.put(88, 134);
|
|
|
|
|
percentageSettingValueMap.put(89, 141);
|
|
|
|
|
percentageSettingValueMap.put(90, 148);
|
|
|
|
|
percentageSettingValueMap.put(91, 156);
|
|
|
|
|
percentageSettingValueMap.put(92, 164);
|
|
|
|
|
percentageSettingValueMap.put(93, 173);
|
|
|
|
|
percentageSettingValueMap.put(94, 182);
|
|
|
|
|
percentageSettingValueMap.put(95, 191);
|
|
|
|
|
percentageSettingValueMap.put(96, 201);
|
|
|
|
|
percentageSettingValueMap.put(97, 212);
|
|
|
|
|
percentageSettingValueMap.put(98, 223);
|
|
|
|
|
percentageSettingValueMap.put(99, 235);
|
|
|
|
|
percentageSettingValueMap.put(100, 247);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
// Noted from Android 14
|
|
|
|
|
percentageSettingValueMap.put(11,1);
|
|
|
|
|
percentageSettingValueMap.put(15,2);
|
|
|
|
|
percentageSettingValueMap.put(19,3);
|
|
|
|
|
percentageSettingValueMap.put(22,4);
|
|
|
|
|
percentageSettingValueMap.put(24,5);
|
|
|
|
|
percentageSettingValueMap.put(27,6);
|
|
|
|
|
percentageSettingValueMap.put(29,7);
|
|
|
|
|
percentageSettingValueMap.put(31,8);
|
|
|
|
|
percentageSettingValueMap.put(33,9);
|
|
|
|
|
percentageSettingValueMap.put(34,10);
|
|
|
|
|
percentageSettingValueMap.put(36,11);
|
|
|
|
|
percentageSettingValueMap.put(38,12);
|
|
|
|
|
percentageSettingValueMap.put(39,13);
|
|
|
|
|
percentageSettingValueMap.put(41,14);
|
|
|
|
|
percentageSettingValueMap.put(42,15);
|
|
|
|
|
percentageSettingValueMap.put(43,16);
|
|
|
|
|
percentageSettingValueMap.put(45,17);
|
|
|
|
|
percentageSettingValueMap.put(46,18);
|
|
|
|
|
percentageSettingValueMap.put(47,47);
|
|
|
|
|
percentageSettingValueMap.put(48,49);
|
|
|
|
|
percentageSettingValueMap.put(50,21);
|
|
|
|
|
percentageSettingValueMap.put(51,22);
|
|
|
|
|
percentageSettingValueMap.put(52,23);
|
|
|
|
|
percentageSettingValueMap.put(53,24);
|
|
|
|
|
percentageSettingValueMap.put(54,25);
|
|
|
|
|
percentageSettingValueMap.put(55,26);
|
|
|
|
|
percentageSettingValueMap.put(56,27);
|
|
|
|
|
percentageSettingValueMap.put(57,28);
|
|
|
|
|
percentageSettingValueMap.put(58,30);
|
|
|
|
|
percentageSettingValueMap.put(59,31);
|
|
|
|
|
percentageSettingValueMap.put(60,32);
|
|
|
|
|
percentageSettingValueMap.put(61,34);
|
|
|
|
|
percentageSettingValueMap.put(62,35);
|
|
|
|
|
percentageSettingValueMap.put(63,37);
|
|
|
|
|
percentageSettingValueMap.put(64,39);
|
|
|
|
|
percentageSettingValueMap.put(65,41);
|
|
|
|
|
percentageSettingValueMap.put(66,43);
|
|
|
|
|
percentageSettingValueMap.put(67,45);
|
|
|
|
|
percentageSettingValueMap.put(68,47);
|
|
|
|
|
percentageSettingValueMap.put(69,49);
|
|
|
|
|
percentageSettingValueMap.put(70,52);
|
|
|
|
|
percentageSettingValueMap.put(71,54);
|
|
|
|
|
percentageSettingValueMap.put(72,57);
|
|
|
|
|
percentageSettingValueMap.put(73,60);
|
|
|
|
|
percentageSettingValueMap.put(74,63);
|
|
|
|
|
percentageSettingValueMap.put(75,66);
|
|
|
|
|
percentageSettingValueMap.put(76,70);
|
|
|
|
|
percentageSettingValueMap.put(77,73);
|
|
|
|
|
percentageSettingValueMap.put(78,77);
|
|
|
|
|
percentageSettingValueMap.put(79,81);
|
|
|
|
|
percentageSettingValueMap.put(80,85);
|
|
|
|
|
percentageSettingValueMap.put(81,90);
|
|
|
|
|
percentageSettingValueMap.put(82,95);
|
|
|
|
|
percentageSettingValueMap.put(83,100);
|
|
|
|
|
percentageSettingValueMap.put(84,105);
|
|
|
|
|
percentageSettingValueMap.put(85,111);
|
|
|
|
|
percentageSettingValueMap.put(86,117);
|
|
|
|
|
percentageSettingValueMap.put(87,124);
|
|
|
|
|
percentageSettingValueMap.put(88,130);
|
|
|
|
|
percentageSettingValueMap.put(89,137);
|
|
|
|
|
percentageSettingValueMap.put(90,144);
|
|
|
|
|
percentageSettingValueMap.put(91,152);
|
|
|
|
|
percentageSettingValueMap.put(92,161);
|
|
|
|
|
percentageSettingValueMap.put(93,170);
|
|
|
|
|
percentageSettingValueMap.put(94,179);
|
|
|
|
|
percentageSettingValueMap.put(95,189);
|
|
|
|
|
percentageSettingValueMap.put(96,199);
|
|
|
|
|
percentageSettingValueMap.put(97,210);
|
|
|
|
|
percentageSettingValueMap.put(98,223);
|
|
|
|
|
percentageSettingValueMap.put(99,235);
|
|
|
|
|
percentageSettingValueMap.put(100,248);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(percentageSettingValueMap.containsKey(percentage))
|
|
|
|
|
return percentageSettingValueMap.get(percentage);
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
// Find next best value
|
|
|
|
|
for(int i = percentage; i <= 100; i++)
|
|
|
|
|
{
|
|
|
|
|
if(percentageSettingValueMap.containsKey(i))
|
|
|
|
|
return percentageSettingValueMap.get(i);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public boolean isAirplaneModeOn(Context context)
|
|
|
|
|
{
|
|
|
|
|
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1)
|
|
|
|
|