1 /* 2 * Copyright (C) 2018 The Android Open Source Project 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 * 15 */ 16 package com.android.settings.fuelgauge.batterysaver; 17 18 import android.content.ContentResolver; 19 import android.content.Context; 20 import android.os.PowerManager; 21 import android.provider.Settings; 22 import android.provider.Settings.Global; 23 24 import androidx.annotation.VisibleForTesting; 25 import androidx.preference.Preference; 26 import androidx.preference.PreferenceScreen; 27 28 import com.android.settings.R; 29 import com.android.settings.Utils; 30 import com.android.settings.core.BasePreferenceController; 31 import com.android.settingslib.fuelgauge.BatterySaverUtils; 32 33 /** 34 * Simple controller to navigate users to the scheduling page from 35 * "Settings > Battery > Battery Saver". Also updates the summary for preference based on 36 * the currently selected settings. 37 */ 38 public class BatterySaverSchedulePreferenceController extends BasePreferenceController { 39 40 @VisibleForTesting 41 Preference mBatterySaverSchedulePreference; 42 public static final String KEY_BATTERY_SAVER_SCHEDULE = "battery_saver_schedule"; 43 44 BatterySaverSchedulePreferenceController(Context context)45 public BatterySaverSchedulePreferenceController(Context context) { 46 super(context, KEY_BATTERY_SAVER_SCHEDULE); 47 BatterySaverUtils.revertScheduleToNoneIfNeeded(context); 48 } 49 50 @Override getPreferenceKey()51 public String getPreferenceKey() { 52 return KEY_BATTERY_SAVER_SCHEDULE; 53 } 54 55 @Override displayPreference(PreferenceScreen screen)56 public void displayPreference(PreferenceScreen screen) { 57 super.displayPreference(screen); 58 mBatterySaverSchedulePreference = screen.findPreference(KEY_BATTERY_SAVER_SCHEDULE); 59 } 60 61 @Override getSummary()62 public CharSequence getSummary() { 63 final ContentResolver resolver = mContext.getContentResolver(); 64 final int mode = Settings.Global.getInt(resolver, Global.AUTOMATIC_POWER_SAVE_MODE, 65 PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE); 66 if (mode == PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE) { 67 final int threshold = 68 Settings.Global.getInt(resolver, Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0); 69 if (threshold <= 0) { 70 return mContext.getText(R.string.battery_saver_auto_no_schedule); 71 } else { 72 return mContext.getString(R.string.battery_saver_auto_percentage_summary, 73 Utils.formatPercentage(threshold)); 74 } 75 } else { 76 return mContext.getText(R.string.battery_saver_auto_routine); 77 } 78 } 79 80 @Override getAvailabilityStatus()81 public int getAvailabilityStatus() { 82 return AVAILABLE; 83 } 84 } 85