nx: Add leanback brightness slider

Uses Settings API and SeekBarPreference to allow proper brightness
setting on ATV.

Co-authored-by: Thomas Makin <halorocker89@gmail.com>
Co-authored-by: Aaron Kling <webgeek1234@gmail.com>

Change-Id: Iccdc098414bd143080f9907a99e26458ec617072
This commit is contained in:
tmakinandAaron Kling committed 2024-01-29 11:58:33 -05:00
1 parent ebeee1d3b5
commit f9ca85df02
5 files changed
+43

No files matched your search

+2
View File
@@ -16,4 +16,6 @@
-->
<resources>
<integer name="mode_confirmation_wait_time">15</integer>
<integer name="max_brightness">255</integer>
<integer name="min_brightness">255</integer>
</resources>
+1
View File
@@ -18,6 +18,7 @@
<string name="display_panel_title">Switch Configuration</string>
<string name="display_panel_summary">Adjust docking, performance, and controller settings</string>
<string name="cust_category_title">Customization</string>
<string name="bright_pref_title">Adjust System Brightness</string>
<string name="perf_setting_title">Performance Mode</string>
<string name="perf_setting_summary">Modifies CPU and GPU clocks in order to get the best possible performance at the cost of higher battery wear and usage</string>
<string name="perf_warning_title">WARNING</string>
@@ -20,6 +20,12 @@
android:key="customization_category"
android:title="@string/cust_category_title">
<SeekBarPreference
android:key="bright_pref"
android:title="@string/bright_pref_title"
android:max="@integer/max_brightness"
android:min="@integer/min_brightness" />
<SwitchPreference
android:key="perf_mode"
android:title="@string/perf_setting_title"
@@ -41,6 +41,7 @@ import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
import androidx.preference.SeekBarPreference;
import androidx.preference.SwitchPreference;
import vendor.nvidia.hardware.graphics.display.V1_0.HwcSvcDisplay;
@@ -121,6 +122,7 @@ public class DisplaySettingsFragmentLeanback extends LeanbackSettingsFragmentCom
PreferenceScreen preferenceScreen = this.getPreferenceScreen();
createPerfSettings();
createBrightSettings();
if (!sku.equals("vali")) {
createDisplaySettings(preferenceScreen);
@@ -321,6 +323,25 @@ public class DisplaySettingsFragmentLeanback extends LeanbackSettingsFragmentCom
});
}
private void createBrightSettings() {
SeekBarPreference brightPref = findPreference("bright_pref");
int current = DisplayUtils.getPanelBrightness(getActivity().getContentResolver());
brightPref.setUpdatesContinuously(true);
brightPref.setShowSeekBarValue(false);
brightPref.setDefaultValue(current);
brightPref.setOnPreferenceChangeListener(
new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference,
Object newValue) {
DisplayUtils.setPanelBrightness(getActivity().getContentResolver(), (Integer)newValue);
return true;
}
});
}
private void createPanelModeSettings() {
ListPreference panelColorPref = findPreference("panel_color_mode");
String current = DisplayUtils.getPanelColorMode();
@@ -16,8 +16,10 @@
package org.lineageos.settings.device;
import android.content.ContentResolver;
import android.content.SharedPreferences;
import android.os.RemoteException;
import android.provider.Settings;
import android.util.Log;
import android.view.IWindowManager;
@@ -38,6 +40,8 @@ import vendor.nvidia.hardware.graphics.display.V1_0.INvDisplay;
public class DisplayUtils {
private static final String TAG = DisplayUtils.class.getSimpleName();
public static final String POWER_UPDATE_INTENT = "com.lineage.devicesettings.UPDATE_POWER";
public static final String PANEL_BRIGHTNESS_SYSFS =
"/sys/class/backlight/backlight/brightness";
public static final String PANEL_MODE_SYSFS =
"/sys/devices/50000000.host1x/tegradc.0/panel_color_mode";
public static final String PWM_FAN_PROFILE_SYSFS = "/sys/devices/pwm-fan/fan_profile";
@@ -192,6 +196,15 @@ public class DisplayUtils {
return out;
}
public static void setPanelBrightness(ContentResolver resolver, int brightness) {
Settings.System.putInt(resolver, Settings.System.SCREEN_BRIGHTNESS, brightness);
}
public static Integer getPanelBrightness(ContentResolver resolver) {
return Settings.System.getInt(resolver, Settings.System.SCREEN_BRIGHTNESS, 0);
}
public static void setFanProfile(String profile) {
Log.i(TAG, "Setting fan profile: " + profile);
try {