Settings: Battery saver settings sub-page.

New battery saver settings page, accessed via
the power usage settings overflow menu.

The settings page has a master switch to toggle
battery saver mode, feature disclosure text,
and a preference to configure the automatic
trigger level.

Remove developer checkbox now that this option
has a real home.

NO_SQ: multi project change
Bug:13329308
Change-Id: Iac54238f3406439711b44a3c17f220ac5e370a37
This commit is contained in:
John Spurlock
2014-06-04 19:11:22 -04:00
parent 2eae7a4022
commit c7f8e8ce69
14 changed files with 301 additions and 33 deletions

View File

@@ -1461,6 +1461,22 @@
android:resource="@id/battery_settings" /> android:resource="@id/battery_settings" />
</activity-alias> </activity-alias>
<activity android:name="Settings$BatterySaverSettingsActivity"
android:label="@string/battery_saver"
android:taskAffinity=""
android:excludeFromRecents="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.BATTERY_SAVER_SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="com.android.settings.SHORTCUT" />
</intent-filter>
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
android:value="com.android.settings.fuelgauge.BatterySaverSettings" />
<meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
android:resource="@id/battery_settings" />
</activity>
<activity android:name="Settings$AccountSyncSettingsActivity" <activity android:name="Settings$AccountSyncSettingsActivity"
android:label="@string/account_sync_settings_title" android:label="@string/account_sync_settings_title"
android:taskAffinity="" android:taskAffinity=""

View File

@@ -1218,4 +1218,13 @@
<item>1</item> <item>1</item>
<item>2</item> <item>2</item>
</string-array> </string-array>
<!-- Battery saver mode: allowable trigger threshold levels. -->
<integer-array name="battery_saver_trigger_values" translatable="false" >
<item>0</item>
<item>5</item>
<item>10</item>
<item>15</item>
<item>20</item>
</integer-array>
</resources> </resources>

View File

@@ -3732,6 +3732,21 @@
<!-- Label for mediaserver process --> <!-- Label for mediaserver process -->
<string name="process_mediaserver_label">Mediaserver</string> <string name="process_mediaserver_label">Mediaserver</string>
<!-- [CHAR_LIMIT=40] Battery saver: Label for feature, title + menu item -->
<string name="battery_saver">Battery saver</string>
<!-- [CHAR_LIMIT=40] Battery saver: Title for automatic entry option -->
<string name="battery_saver_turn_on_automatically_title">Turn on automatically</string>
<!-- [CHAR_LIMIT=40] Battery saver: Value for automatic entry option: Never -->
<string name="battery_saver_turn_on_automatically_never">Never</string>
<!-- [CHAR_LIMIT=40] Battery saver: Value for automatic entry option: pct% battery -->
<string name="battery_saver_turn_on_automatically_pct">at %1$d%% battery</string>
<!-- [CHAR_LIMIT=NONE] Battery saver: Feature description -->
<string name="battery_saver_description">To help improve battery life, Battery saver will reduce your devices performance.\n\nBattery saver will turn off when your device is plugged in.</string>
<!-- Process Stats strings --> <!-- Process Stats strings -->
<skip /> <skip />

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2014 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/battery_saver"
android:key="battery_saver">
<!-- Turn on automatically -->
<com.android.settings.notification.DropDownPreference
android:key="turn_on_automatically"
android:title="@string/battery_saver_turn_on_automatically_title"
android:persistent="false" />
<!-- Feature description text -->
<Preference
android:key="description"
android:summary="@string/battery_saver_description"
android:persistent="false"
android:selectable="false" />
</PreferenceScreen>

View File

@@ -122,7 +122,6 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
private static final String USE_NUPLAYER_KEY = "use_nuplayer"; private static final String USE_NUPLAYER_KEY = "use_nuplayer";
private static final String USE_NUPLAYER_PROPERTY = "persist.sys.media.use-nuplayer"; private static final String USE_NUPLAYER_PROPERTY = "persist.sys.media.use-nuplayer";
private static final String SHOW_CPU_USAGE_KEY = "show_cpu_usage"; private static final String SHOW_CPU_USAGE_KEY = "show_cpu_usage";
private static final String LOW_POWER_MODE_KEY = "low_power_mode";
private static final String FORCE_HARDWARE_UI_KEY = "force_hw_ui"; private static final String FORCE_HARDWARE_UI_KEY = "force_hw_ui";
private static final String FORCE_MSAA_KEY = "force_msaa"; private static final String FORCE_MSAA_KEY = "force_msaa";
private static final String TRACK_FRAME_TIME_KEY = "track_frame_time"; private static final String TRACK_FRAME_TIME_KEY = "track_frame_time";
@@ -196,7 +195,6 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
private CheckBoxPreference mShowScreenUpdates; private CheckBoxPreference mShowScreenUpdates;
private CheckBoxPreference mDisableOverlays; private CheckBoxPreference mDisableOverlays;
private CheckBoxPreference mShowCpuUsage; private CheckBoxPreference mShowCpuUsage;
private CheckBoxPreference mLowPowerMode;
private CheckBoxPreference mForceHardwareUi; private CheckBoxPreference mForceHardwareUi;
private CheckBoxPreference mForceMsaa; private CheckBoxPreference mForceMsaa;
private CheckBoxPreference mShowHwScreenUpdates; private CheckBoxPreference mShowHwScreenUpdates;
@@ -308,7 +306,6 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
mShowScreenUpdates = findAndInitCheckboxPref(SHOW_SCREEN_UPDATES_KEY); mShowScreenUpdates = findAndInitCheckboxPref(SHOW_SCREEN_UPDATES_KEY);
mDisableOverlays = findAndInitCheckboxPref(DISABLE_OVERLAYS_KEY); mDisableOverlays = findAndInitCheckboxPref(DISABLE_OVERLAYS_KEY);
mShowCpuUsage = findAndInitCheckboxPref(SHOW_CPU_USAGE_KEY); mShowCpuUsage = findAndInitCheckboxPref(SHOW_CPU_USAGE_KEY);
mLowPowerMode = findAndInitCheckboxPref(LOW_POWER_MODE_KEY);
mForceHardwareUi = findAndInitCheckboxPref(FORCE_HARDWARE_UI_KEY); mForceHardwareUi = findAndInitCheckboxPref(FORCE_HARDWARE_UI_KEY);
mForceMsaa = findAndInitCheckboxPref(FORCE_MSAA_KEY); mForceMsaa = findAndInitCheckboxPref(FORCE_MSAA_KEY);
mTrackFrameTime = addListPreference(TRACK_FRAME_TIME_KEY); mTrackFrameTime = addListPreference(TRACK_FRAME_TIME_KEY);
@@ -504,7 +501,6 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
updateShowTouchesOptions(); updateShowTouchesOptions();
updateFlingerOptions(); updateFlingerOptions();
updateCpuUsageOptions(); updateCpuUsageOptions();
updateLowPowerModeOptions();
updateHardwareUiOptions(); updateHardwareUiOptions();
updateMsaaOptions(); updateMsaaOptions();
updateTrackFrameTimeOptions(); updateTrackFrameTimeOptions();
@@ -1040,22 +1036,11 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
mWifiManager.enableVerboseLogging(mWifiVerboseLogging.isChecked() ? 1 : 0); mWifiManager.enableVerboseLogging(mWifiVerboseLogging.isChecked() ? 1 : 0);
} }
private void updateLowPowerModeOptions() {
updateCheckBox(mLowPowerMode, Settings.Global.getInt(getActivity().getContentResolver(),
Settings.Global.LOW_POWER_MODE, 0) != 0);
}
private void updateCpuUsageOptions() { private void updateCpuUsageOptions() {
updateCheckBox(mShowCpuUsage, Settings.Global.getInt(getActivity().getContentResolver(), updateCheckBox(mShowCpuUsage, Settings.Global.getInt(getActivity().getContentResolver(),
Settings.Global.SHOW_PROCESSES, 0) != 0); Settings.Global.SHOW_PROCESSES, 0) != 0);
} }
private void writeLowPowerModeOptions() {
boolean value = mLowPowerMode.isChecked();
Settings.Global.putInt(getActivity().getContentResolver(),
Settings.Global.LOW_POWER_MODE, value ? 1 : 0);
}
private void writeCpuUsageOptions() { private void writeCpuUsageOptions() {
boolean value = mShowCpuUsage.isChecked(); boolean value = mShowCpuUsage.isChecked();
Settings.Global.putInt(getActivity().getContentResolver(), Settings.Global.putInt(getActivity().getContentResolver(),
@@ -1332,8 +1317,6 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
writeShowUpdatesOption(); writeShowUpdatesOption();
} else if (preference == mDisableOverlays) { } else if (preference == mDisableOverlays) {
writeDisableOverlaysOption(); writeDisableOverlaysOption();
} else if (preference == mLowPowerMode) {
writeLowPowerModeOptions();
} else if (preference == mShowCpuUsage) { } else if (preference == mShowCpuUsage) {
writeCpuUsageOptions(); writeCpuUsageOptions();
} else if (preference == mImmediatelyDestroyActivities) { } else if (preference == mImmediatelyDestroyActivities) {

View File

@@ -66,6 +66,7 @@ public class Settings extends SettingsActivity {
public static class RunningServicesActivity extends SettingsActivity { /* empty */ } public static class RunningServicesActivity extends SettingsActivity { /* empty */ }
public static class ManageAccountsSettingsActivity extends SettingsActivity { /* empty */ } public static class ManageAccountsSettingsActivity extends SettingsActivity { /* empty */ }
public static class PowerUsageSummaryActivity extends SettingsActivity { /* empty */ } public static class PowerUsageSummaryActivity extends SettingsActivity { /* empty */ }
public static class BatterySaverSettingsActivity extends SettingsActivity { /* empty */ }
public static class AccountSyncSettingsActivity extends SettingsActivity { /* empty */ } public static class AccountSyncSettingsActivity extends SettingsActivity { /* empty */ }
public static class AccountSyncSettingsInAddAccountActivity extends SettingsActivity { /* empty */ } public static class AccountSyncSettingsInAddAccountActivity extends SettingsActivity { /* empty */ }
public static class CryptKeeperSettingsActivity extends SettingsActivity { /* empty */ } public static class CryptKeeperSettingsActivity extends SettingsActivity { /* empty */ }

View File

@@ -63,8 +63,8 @@ import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Button; import android.widget.Button;
import android.widget.SearchView; import android.widget.SearchView;
import com.android.internal.util.ArrayUtils; import com.android.internal.util.ArrayUtils;
import com.android.internal.util.XmlUtils; import com.android.internal.util.XmlUtils;
import com.android.settings.accessibility.AccessibilitySettings; import com.android.settings.accessibility.AccessibilitySettings;
@@ -83,6 +83,7 @@ import com.android.settings.dashboard.NoHomeDialogFragment;
import com.android.settings.dashboard.SearchResultsSummary; import com.android.settings.dashboard.SearchResultsSummary;
import com.android.settings.deviceinfo.Memory; import com.android.settings.deviceinfo.Memory;
import com.android.settings.deviceinfo.UsbSettings; import com.android.settings.deviceinfo.UsbSettings;
import com.android.settings.fuelgauge.BatterySaverSettings;
import com.android.settings.fuelgauge.PowerUsageSummary; import com.android.settings.fuelgauge.PowerUsageSummary;
import com.android.settings.search.DynamicIndexableContentMonitor; import com.android.settings.search.DynamicIndexableContentMonitor;
import com.android.settings.search.Index; import com.android.settings.search.Index;
@@ -108,6 +109,7 @@ import com.android.settings.widget.SwitchBar;
import com.android.settings.wifi.AdvancedWifiSettings; import com.android.settings.wifi.AdvancedWifiSettings;
import com.android.settings.wifi.WifiSettings; import com.android.settings.wifi.WifiSettings;
import com.android.settings.wifi.p2p.WifiP2pSettings; import com.android.settings.wifi.p2p.WifiP2pSettings;
import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlPullParserException;
@@ -276,7 +278,8 @@ public class SettingsActivity extends Activity
NotificationSettings.class.getName(), NotificationSettings.class.getName(),
ChooseLockPassword.ChooseLockPasswordFragment.class.getName(), ChooseLockPassword.ChooseLockPasswordFragment.class.getName(),
ChooseLockPattern.ChooseLockPatternFragment.class.getName(), ChooseLockPattern.ChooseLockPatternFragment.class.getName(),
InstalledAppDetails.class.getName() InstalledAppDetails.class.getName(),
BatterySaverSettings.class.getName(),
}; };
private SharedPreferences mDevelopmentPreferences; private SharedPreferences mDevelopmentPreferences;

View File

@@ -0,0 +1,171 @@
/*
* Copyright (C) 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.fuelgauge;
import android.content.ContentResolver;
import android.content.Context;
import android.content.res.Resources;
import android.database.ContentObserver;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.provider.Settings.Global;
import android.util.Log;
import android.widget.Switch;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.notification.SettingPref;
import com.android.settings.widget.SwitchBar;
public class BatterySaverSettings extends SettingsPreferenceFragment
implements SwitchBar.OnSwitchChangeListener {
private static final String TAG = "BatterySaverSettings";
private static final String KEY_TURN_ON_AUTOMATICALLY = "turn_on_automatically";
private static final long WAIT_FOR_SWITCH_ANIM = 500;
private final H mHandler = new H();
private final SettingsObserver mSettingsObserver = new SettingsObserver(mHandler);
private Context mContext;
private SwitchBar mSwitchBar;
private boolean mSwitchBarListenerAdded;
private SettingPref mTriggerPref;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
addPreferencesFromResource(R.xml.battery_saver_settings);
mContext = getActivity();
mSwitchBar = ((SettingsActivity) mContext).getSwitchBar();
updateSwitchBar();
mTriggerPref = new SettingPref(SettingPref.TYPE_GLOBAL, KEY_TURN_ON_AUTOMATICALLY,
Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0,
getResources().getIntArray(R.array.battery_saver_trigger_values)) {
@Override
protected String getCaption(Resources res, int value) {
if (value > 0 && value < 100) {
return res.getString(R.string.battery_saver_turn_on_automatically_pct, value);
}
return res.getString(R.string.battery_saver_turn_on_automatically_never);
}
};
mTriggerPref.init(this);
}
private void updateSwitchBar() {
final boolean mode = Global.getInt(getContentResolver(), Global.LOW_POWER_MODE, 0) != 0;
if (mSwitchBarListenerAdded) {
mSwitchBar.removeOnSwitchChangeListener(this);
}
mSwitchBar.getSwitch().setChecked(mode);
if (mSwitchBarListenerAdded) {
mSwitchBar.addOnSwitchChangeListener(this);
}
}
private void updateTriggerLevel() {
mTriggerPref.update(mContext);
}
@Override
public void onResume() {
super.onResume();
updateSwitchBar();
mSettingsObserver.setListening(true);
mSwitchBar.show();
mSwitchBar.addOnSwitchChangeListener(this);
mSwitchBarListenerAdded = true;
}
@Override
public void onPause() {
super.onPause();
mSettingsObserver.setListening(false);
if (mSwitchBarListenerAdded) {
mSwitchBar.removeOnSwitchChangeListener(this);
}
mSwitchBar.hide();
}
@Override
public void onSwitchChanged(Switch switchView, boolean isChecked) {
mHandler.postSetMode(isChecked);
}
private void handleSetMode(final boolean mode) {
AsyncTask.execute(new Runnable() {
@Override
public void run() {
Log.d(TAG, "LOW_POWER_MODE from settings: " + mode);
Global.putInt(getContentResolver(), Global.LOW_POWER_MODE, mode ? 1 : 0);
}
});
}
private final class H extends Handler {
private static final int SET_MODE = 1;
public void postSetMode(boolean mode) {
removeMessages(SET_MODE);
final Message m = obtainMessage(SET_MODE, mode ? 1 : 0, 0);
sendMessageDelayed(m, mode ? WAIT_FOR_SWITCH_ANIM : 0);
}
@Override
public void handleMessage(Message msg) {
if (msg.what == SET_MODE) {
handleSetMode(msg.arg1 != 0);
}
}
}
private final class SettingsObserver extends ContentObserver {
private final Uri LOW_POWER_MODE_URI = Global.getUriFor(Global.LOW_POWER_MODE);
private final Uri LOW_POWER_MODE_TRIGGER_LEVEL_URI
= Global.getUriFor(Global.LOW_POWER_MODE_TRIGGER_LEVEL);
public SettingsObserver(Handler handler) {
super(handler);
}
@Override
public void onChange(boolean selfChange, Uri uri) {
if (LOW_POWER_MODE_URI.equals(uri)) {
updateSwitchBar();
}
if (LOW_POWER_MODE_TRIGGER_LEVEL_URI.equals(uri)) {
updateTriggerLevel();
}
}
public void setListening(boolean listening) {
final ContentResolver cr = getContentResolver();
if (listening) {
cr.registerContentObserver(LOW_POWER_MODE_URI, false, this);
cr.registerContentObserver(LOW_POWER_MODE_TRIGGER_LEVEL_URI, false, this);
} else {
cr.unregisterContentObserver(this);
}
}
}
}

View File

@@ -60,7 +60,8 @@ public class PowerUsageSummary extends PreferenceFragment {
private static final int MENU_STATS_TYPE = Menu.FIRST; private static final int MENU_STATS_TYPE = Menu.FIRST;
private static final int MENU_STATS_REFRESH = Menu.FIRST + 1; private static final int MENU_STATS_REFRESH = Menu.FIRST + 1;
private static final int MENU_HELP = Menu.FIRST + 2; private static final int MENU_BATTERY_SAVER = Menu.FIRST + 2;
private static final int MENU_HELP = Menu.FIRST + 3;
private UserManager mUm; private UserManager mUm;
@@ -180,6 +181,9 @@ public class PowerUsageSummary extends PreferenceFragment {
refresh.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | refresh.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM |
MenuItem.SHOW_AS_ACTION_WITH_TEXT); MenuItem.SHOW_AS_ACTION_WITH_TEXT);
MenuItem batterySaver = menu.add(0, MENU_BATTERY_SAVER, 0, R.string.battery_saver);
batterySaver.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
String helpUrl; String helpUrl;
if (!TextUtils.isEmpty(helpUrl = getResources().getString(R.string.help_url_battery))) { if (!TextUtils.isEmpty(helpUrl = getResources().getString(R.string.help_url_battery))) {
final MenuItem help = menu.add(0, MENU_HELP, 0, R.string.help_label); final MenuItem help = menu.add(0, MENU_HELP, 0, R.string.help_label);
@@ -203,6 +207,11 @@ public class PowerUsageSummary extends PreferenceFragment {
refreshStats(); refreshStats();
mHandler.removeMessages(MSG_REFRESH_STATS); mHandler.removeMessages(MSG_REFRESH_STATS);
return true; return true;
case MENU_BATTERY_SAVER:
final SettingsActivity sa = (SettingsActivity) getActivity();
sa.startPreferencePanel(BatterySaverSettings.class.getName(), null,
R.string.battery_saver, null, null, 0);
return true;
default: default:
return false; return false;
} }

View File

@@ -97,8 +97,12 @@ public class DropDownPreference extends Preference {
} }
} }
public void addItem(int resId, Object value) { public void addItem(int captionResid, Object value) {
mAdapter.add(mContext.getResources().getString(resId)); addItem(mContext.getResources().getString(captionResid), value);
}
public void addItem(String caption, Object value) {
mAdapter.add(caption);
mValues.add(value); mValues.add(value);
} }

View File

@@ -21,6 +21,7 @@ import static com.android.settings.notification.SettingPref.TYPE_SYSTEM;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.res.Resources;
import android.database.ContentObserver; import android.database.ContentObserver;
import android.media.AudioManager; import android.media.AudioManager;
import android.net.Uri; import android.net.Uri;
@@ -114,10 +115,15 @@ public class OtherSoundSettings extends SettingsPreferenceFragment implements In
} }
@Override @Override
protected int getResId(Context context, int value) { protected String getCaption(Resources res, int value) {
if (value == DOCK_AUDIO_MEDIA_DISABLED) return R.string.dock_audio_media_disabled; switch(value) {
if (value == DOCK_AUDIO_MEDIA_ENABLED) return R.string.dock_audio_media_enabled; case DOCK_AUDIO_MEDIA_DISABLED:
throw new IllegalArgumentException(); return res.getString(R.string.dock_audio_media_disabled);
case DOCK_AUDIO_MEDIA_ENABLED:
return res.getString(R.string.dock_audio_media_enabled);
default:
throw new IllegalArgumentException();
}
} }
}; };
@@ -131,11 +137,17 @@ public class OtherSoundSettings extends SettingsPreferenceFragment implements In
} }
@Override @Override
protected int getResId(Context context, int value) { protected String getCaption(Resources res, int value) {
if (value == EMERGENCY_TONE_SILENT) return R.string.emergency_tone_silent; switch(value) {
if (value == EMERGENCY_TONE_ALERT) return R.string.emergency_tone_alert; case EMERGENCY_TONE_SILENT:
if (value == EMERGENCY_TONE_VIBRATE) return R.string.emergency_tone_vibrate; return res.getString(R.string.emergency_tone_silent);
throw new IllegalArgumentException(); case EMERGENCY_TONE_ALERT:
return res.getString(R.string.emergency_tone_alert);
case EMERGENCY_TONE_VIBRATE:
return res.getString(R.string.emergency_tone_vibrate);
default:
throw new IllegalArgumentException();
}
} }
}; };

View File

@@ -18,6 +18,7 @@ package com.android.settings.notification;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.res.Resources;
import android.net.Uri; import android.net.Uri;
import android.preference.Preference; import android.preference.Preference;
import android.preference.TwoStatePreference; import android.preference.TwoStatePreference;
@@ -55,7 +56,7 @@ public class SettingPref {
return true; return true;
} }
protected int getResId(Context context, int value) { protected String getCaption(Resources res, int value) {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }
@@ -71,7 +72,7 @@ public class SettingPref {
} else if (p instanceof DropDownPreference) { } else if (p instanceof DropDownPreference) {
mDropDown = (DropDownPreference) p; mDropDown = (DropDownPreference) p;
for (int value : mValues) { for (int value : mValues) {
mDropDown.addItem(getResId(context, value), value); mDropDown.addItem(getCaption(context.getResources(), value), value);
} }
} }
update(context); update(context);

View File

@@ -30,6 +30,7 @@ import com.android.settings.WirelessSettings;
import com.android.settings.accessibility.AccessibilitySettings; import com.android.settings.accessibility.AccessibilitySettings;
import com.android.settings.bluetooth.BluetoothSettings; import com.android.settings.bluetooth.BluetoothSettings;
import com.android.settings.deviceinfo.Memory; import com.android.settings.deviceinfo.Memory;
import com.android.settings.fuelgauge.BatterySaverSettings;
import com.android.settings.fuelgauge.PowerUsageSummary; import com.android.settings.fuelgauge.PowerUsageSummary;
import com.android.settings.inputmethod.InputMethodAndLanguageSettings; import com.android.settings.inputmethod.InputMethodAndLanguageSettings;
import com.android.settings.location.LocationSettings; import com.android.settings.location.LocationSettings;
@@ -103,6 +104,7 @@ public final class Ranking {
sRankMap.put(Memory.class.getName(), RANK_MEMORY); sRankMap.put(Memory.class.getName(), RANK_MEMORY);
sRankMap.put(PowerUsageSummary.class.getName(), RANK_POWER_USAGE); sRankMap.put(PowerUsageSummary.class.getName(), RANK_POWER_USAGE);
sRankMap.put(BatterySaverSettings.class.getName(), RANK_POWER_USAGE);
sRankMap.put(UserSettings.class.getName(), RANK_USERS); sRankMap.put(UserSettings.class.getName(), RANK_USERS);

View File

@@ -33,6 +33,7 @@ import com.android.settings.WirelessSettings;
import com.android.settings.accessibility.AccessibilitySettings; import com.android.settings.accessibility.AccessibilitySettings;
import com.android.settings.bluetooth.BluetoothSettings; import com.android.settings.bluetooth.BluetoothSettings;
import com.android.settings.deviceinfo.Memory; import com.android.settings.deviceinfo.Memory;
import com.android.settings.fuelgauge.BatterySaverSettings;
import com.android.settings.fuelgauge.PowerUsageSummary; import com.android.settings.fuelgauge.PowerUsageSummary;
import com.android.settings.inputmethod.InputMethodAndLanguageSettings; import com.android.settings.inputmethod.InputMethodAndLanguageSettings;
import com.android.settings.location.LocationSettings; import com.android.settings.location.LocationSettings;
@@ -154,6 +155,13 @@ public final class SearchIndexableResources {
PowerUsageSummary.class.getName(), PowerUsageSummary.class.getName(),
R.drawable.ic_settings_battery)); R.drawable.ic_settings_battery));
sResMap.put(BatterySaverSettings.class.getName(),
new SearchIndexableResource(
Ranking.getRankForClassName(BatterySaverSettings.class.getName()),
R.xml.battery_saver_settings,
BatterySaverSettings.class.getName(),
R.drawable.ic_settings_battery));
sResMap.put(UserSettings.class.getName(), sResMap.put(UserSettings.class.getName(),
new SearchIndexableResource( new SearchIndexableResource(
Ranking.getRankForClassName(UserSettings.class.getName()), Ranking.getRankForClassName(UserSettings.class.getName()),