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:
@@ -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=""
|
||||||
|
@@ -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>
|
||||||
|
@@ -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 device’s performance.\n\nBattery saver will turn off when your device is plugged in.</string>
|
||||||
|
|
||||||
<!-- Process Stats strings -->
|
<!-- Process Stats strings -->
|
||||||
<skip />
|
<skip />
|
||||||
|
|
||||||
|
34
res/xml/battery_saver_settings.xml
Normal file
34
res/xml/battery_saver_settings.xml
Normal 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>
|
@@ -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) {
|
||||||
|
@@ -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 */ }
|
||||||
|
@@ -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;
|
||||||
|
171
src/com/android/settings/fuelgauge/BatterySaverSettings.java
Normal file
171
src/com/android/settings/fuelgauge/BatterySaverSettings.java
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -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);
|
||||||
|
@@ -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);
|
||||||
|
|
||||||
|
@@ -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()),
|
||||||
|
Reference in New Issue
Block a user