diff --git a/app/src/main/java/org/omnirom/control/BatteryLightSettingsFragment.java b/app/src/main/java/org/omnirom/control/BatteryLightSettingsFragment.java
index f67a3e4..96c17c0 100644
--- a/app/src/main/java/org/omnirom/control/BatteryLightSettingsFragment.java
+++ b/app/src/main/java/org/omnirom/control/BatteryLightSettingsFragment.java
@@ -26,6 +26,7 @@
 
 import androidx.annotation.DrawableRes;
 import androidx.annotation.XmlRes;
+import androidx.preference.ListPreference;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceGroup;
 import androidx.preference.PreferenceScreen;
@@ -46,8 +47,8 @@
     private static final String FAST_COLOR_PREF = "fast_battery_light_color";
     private static final String FAST_CHARGING_LED_PREF = "fast_charging_led_enabled";
     private static final String BATTERY_DND_PREF = "battery_light_allow_on_dnd";
+    private static final String BATTERY_LED_LOW_BEHAVIOR = "battery_low_behavior";
     private static final String BATTERY_LIGHT_PREF = "battery_light_enabled";
-    private static final String BATTERY_PULSE_PREF = "battery_light_pulse";
     private static final String BATTERY_LIGHT_ONLY_FULL_PREF = "battery_light_only_fully_charged";
     private static final String KEY_CATEGORY_FAST_CHARGE = "fast_color_cat";
     private static final String KEY_CATEGORY_CHARGE_COLORS = "colors_list";
@@ -57,10 +58,10 @@
     private SystemSettingsColorSelectPreference mFullColorPref;
     private SystemSettingsColorSelectPreference mReallyFullColorPref;
     private SystemSettingsColorSelectPreference mFastColorPref;
+    private ListPreference mLedLowBehavior;
     private Preference mDefaultValues;
     private SystemSettingSwitchPreference mDndPref;
     private SystemSettingSwitchPreference mEnabledPref;
-    private SystemSettingSwitchPreference mPulsePref;
     private SystemSettingSwitchPreference mOnlyFullPref;
     private SystemSettingSwitchPreference mFastBatteryLightEnabledPref;
 
@@ -103,9 +104,15 @@
             }
         });
 
+        mLedLowBehavior = (ListPreference) findPreference(BATTERY_LED_LOW_BEHAVIOR);
+        int ledlowBehaviorValue = Settings.System.getInt(resolver,
+            OmniSettings.OMNI_LOW_BATTERY_BEHAVIOR, 0);
+        mLedLowBehavior.setValue(Integer.toString(ledlowBehaviorValue));
+        mLedLowBehavior.setSummary(mLedLowBehavior.getEntry());
+        mLedLowBehavior.setOnPreferenceChangeListener(this);
+
         mDndPref = (SystemSettingSwitchPreference) findPreference(BATTERY_DND_PREF);
         mEnabledPref = (SystemSettingSwitchPreference) findPreference(BATTERY_LIGHT_PREF);
-        mPulsePref = (SystemSettingSwitchPreference) findPreference(BATTERY_PULSE_PREF);
         mOnlyFullPref = (SystemSettingSwitchPreference) findPreference(BATTERY_LIGHT_ONLY_FULL_PREF);
         mOnlyFullPref.setOnPreferenceChangeListener(this);
 
@@ -157,6 +164,13 @@
             // If enabled, disable all but really full color preference.
             updateEnablement(value);
         }
+        if (preference == mLedLowBehavior) {
+            int value = Integer.valueOf((String) objValue);
+            int index = mLedLowBehavior.findIndexOfValue((String) objValue);
+            mLedLowBehavior.setSummary(mLedLowBehavior.getEntries()[index]);
+            Settings.System.putInt(getContext().getContentResolver(),
+                OmniSettings.OMNI_LOW_BATTERY_BEHAVIOR, value);
+        }
         return true;
     }
 
@@ -186,9 +200,6 @@
         if (mEnabledPref != null) {
             mEnabledPref.setChecked(true);
         }
-        if (mPulsePref != null) {
-            mPulsePref.setChecked(false);
-        }
         if (mOnlyFullPref != null) {
             mOnlyFullPref.setChecked(false);
         }
@@ -199,6 +210,12 @@
         boolean showOnlyWhenFull = Settings.System.getInt(getContext().getContentResolver(),
                 OmniSettings.OMNI_BATTERY_LIGHT_ONLY_FULLY_CHARGED, 1) != 0;
         updateEnablement(showOnlyWhenFull);
+
+        if (mLedLowBehavior != null) {
+            mLedLowBehavior.setSummary(mLedLowBehavior.getEntries()[0]);
+            Settings.System.putInt(getContext().getContentResolver(),
+                OmniSettings.OMNI_LOW_BATTERY_BEHAVIOR, 0);
+        }
     }
 
     protected void resetColors() {
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index 6cf9ed4..bc76d8b 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -1,4 +1,17 @@
 <resources>
+    <!-- LED behavior when battery is low -->
+    <string-array name="led_battery_entries" translatable="false">
+        <item>Solid when charging, flashing when not charging</item>
+        <item>Always solid when battery is low</item>
+        <item>Always flashing when battery is low</item>
+    </string-array>
+
+    <string-array name="led_battery_values" translatable="false">
+        <item>0</item>
+        <item>1</item>
+        <item>2</item>
+    </string-array>
+
     <!-- Reply Preference -->
     <string-array name="reply_entries">
         <item>Reply</item>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index e9fae61..2054975 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -93,6 +93,7 @@
     <string name="batterylight_title">Battery LED settings</string>
     <string name="batterylight_summary">Customize your battery led</string>
     <string name="battery_light_enable">Enable</string>
+    <string name="battery_low_behavior_tile">LED behavior when battery is low</string>
     <string name="battery_low_pulse_title">Pulse if battery low</string>
     <string name="battery_light_only_full_charge_title">Only light up when fully charged</string>
     <string name="battery_light_list_title">Colors</string>
diff --git a/app/src/main/res/xml/battery_light_settings_preferences.xml b/app/src/main/res/xml/battery_light_settings_preferences.xml
index 7a94455..0942a94 100644
--- a/app/src/main/res/xml/battery_light_settings_preferences.xml
+++ b/app/src/main/res/xml/battery_light_settings_preferences.xml
@@ -17,11 +17,13 @@
         android:key="general_section"
         android:title="@string/notification_light_general_title">
 
-        <omnirom.preference.SystemSettingSwitchPreference
-            android:key="battery_light_pulse"
-            android:title="@string/battery_low_pulse_title"
+        <ListPreference
+            android:key="battery_low_behavior"
+            android:title="@string/battery_low_behavior_tile"
             android:dependency="battery_light_enabled"
-            android:defaultValue="false" />
+            android:entries="@array/led_battery_entries"
+            android:entryValues="@array/led_battery_values"
+            android:persistent="false" />
 
         <omnirom.preference.SystemSettingSwitchPreference
             android:key="battery_light_only_fully_charged"
