Enhance battery settings limit charge tip
- Add dialog for limit charge tips - Add action button to make limit charge tips can bypass charge limited - Fix layout typo Screenshot: https://screenshot.googleplex.com/5ngtD2sJAKSQZD3.png Bug: 196315151 Bug: 197769934 Test: make SettingsRoboTests Change-Id: I0901c56ae93691c984376852da78cde9078caaf0 Merged-In: I0901c56ae93691c984376852da78cde9078caaf0
This commit is contained in:
@@ -138,6 +138,11 @@ public interface PowerUsageFeatureProvider {
|
||||
*/
|
||||
boolean isChartGraphSlotsEnabled(Context context);
|
||||
|
||||
/**
|
||||
* Gets a intent for one time bypass charge limited to resume charging.
|
||||
*/
|
||||
Intent getResumeChargeIntent();
|
||||
|
||||
/**
|
||||
* Returns battery history data with corresponding timestamp key.
|
||||
*/
|
||||
|
@@ -165,6 +165,11 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Intent getResumeChargeIntent() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<Long, Map<String, BatteryHistEntry>> getBatteryHistory(Context context) {
|
||||
return null;
|
||||
|
@@ -20,6 +20,9 @@ import android.app.Dialog;
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.os.BatteryManager;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
|
||||
@@ -40,6 +43,7 @@ import com.android.settings.fuelgauge.batterytip.tips.HighUsageTip;
|
||||
import com.android.settings.fuelgauge.batterytip.tips.RestrictAppTip;
|
||||
import com.android.settings.fuelgauge.batterytip.tips.UnrestrictAppTip;
|
||||
|
||||
import java.text.NumberFormat;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -50,6 +54,7 @@ public class BatteryTipDialogFragment extends InstrumentedDialogFragment impleme
|
||||
|
||||
private static final String ARG_BATTERY_TIP = "battery_tip";
|
||||
private static final String ARG_METRICS_KEY = "metrics_key";
|
||||
private static final double CHARGE_LIMIT_LEVEL = 0.8f;
|
||||
|
||||
@VisibleForTesting
|
||||
BatteryTip mBatteryTip;
|
||||
@@ -138,6 +143,28 @@ public class BatteryTipDialogFragment extends InstrumentedDialogFragment impleme
|
||||
.setPositiveButton(R.string.battery_tip_unrestrict_app_dialog_ok, this)
|
||||
.setNegativeButton(R.string.battery_tip_unrestrict_app_dialog_cancel, null)
|
||||
.create();
|
||||
case BatteryTip.TipType.BATTERY_DEFENDER:
|
||||
mMetricsFeatureProvider.action(context,
|
||||
SettingsEnums.ACTION_TIP_BATTERY_DEFENDER, mMetricsKey);
|
||||
final String percentage =
|
||||
NumberFormat.getPercentInstance().format(CHARGE_LIMIT_LEVEL);
|
||||
final String message = context.getString(
|
||||
R.string.battery_tip_limited_temporarily_dialog_msg, percentage);
|
||||
final boolean isPluggedIn = isPluggedIn();
|
||||
final AlertDialog.Builder dialogBuilder =
|
||||
new AlertDialog.Builder(context)
|
||||
.setTitle(R.string.battery_tip_limited_temporarily_title)
|
||||
.setMessage(message);
|
||||
if (isPluggedIn) {
|
||||
dialogBuilder
|
||||
.setPositiveButton(
|
||||
R.string.battery_tip_limited_temporarily_dialog_resume_charge,
|
||||
this)
|
||||
.setNegativeButton(R.string.okay, null);
|
||||
} else {
|
||||
dialogBuilder.setPositiveButton(R.string.okay, null);
|
||||
}
|
||||
return dialogBuilder.create();
|
||||
default:
|
||||
throw new IllegalArgumentException("unknown type " + mBatteryTip.getType());
|
||||
}
|
||||
@@ -163,4 +190,11 @@ public class BatteryTipDialogFragment extends InstrumentedDialogFragment impleme
|
||||
lsn.onBatteryTipHandled(mBatteryTip);
|
||||
}
|
||||
|
||||
private boolean isPluggedIn() {
|
||||
final Intent batteryIntent = getContext().registerReceiver(null /* receiver */,
|
||||
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
|
||||
return batteryIntent != null && batteryIntent.getIntExtra(
|
||||
BatteryManager.EXTRA_PLUGGED, 0) != 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -16,12 +16,11 @@
|
||||
|
||||
package com.android.settings.fuelgauge.batterytip.actions;
|
||||
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.content.Intent;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SettingsActivity;
|
||||
import com.android.settingslib.HelpUtils;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import android.os.AsyncTask;
|
||||
|
||||
/**
|
||||
* Action to open the Support Center article
|
||||
@@ -34,19 +33,13 @@ public class BatteryDefenderAction extends BatteryTipAction {
|
||||
mSettingsActivity = settingsActivity;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the action when user clicks positive button
|
||||
*/
|
||||
@Override
|
||||
public void handlePositiveAction(int metricsKey) {
|
||||
mMetricsFeatureProvider.action(mContext,
|
||||
SettingsEnums.ACTION_TIP_BATTERY_DEFENDER, metricsKey);
|
||||
final Intent intent = HelpUtils.getHelpIntent(
|
||||
mContext,
|
||||
mContext.getString(R.string.help_url_battery_defender),
|
||||
getClass().getName());
|
||||
final Intent intent = FeatureFactory.getFactory(mContext)
|
||||
.getPowerUsageFeatureProvider(mContext).getResumeChargeIntent();
|
||||
if (intent != null) {
|
||||
mSettingsActivity.startActivityForResult(intent, 0);
|
||||
// Post intent to background thread to avoid UI flaky
|
||||
AsyncTask.execute(() -> mContext.sendBroadcast(intent));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -17,7 +17,6 @@
|
||||
package com.android.settings.fuelgauge.batterytip.detectors;
|
||||
|
||||
import com.android.settings.fuelgauge.BatteryInfo;
|
||||
import com.android.settings.fuelgauge.BatteryUtils;
|
||||
import com.android.settings.fuelgauge.batterytip.tips.BatteryDefenderTip;
|
||||
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
|
||||
|
||||
@@ -34,7 +33,7 @@ public class BatteryDefenderDetector implements BatteryTipDetector {
|
||||
@Override
|
||||
public BatteryTip detect() {
|
||||
final int state =
|
||||
BatteryUtils.isBatteryDefenderOn(mBatteryInfo)
|
||||
mBatteryInfo.isOverheated
|
||||
? BatteryTip.StateType.NEW
|
||||
: BatteryTip.StateType.INVISIBLE;
|
||||
return new BatteryDefenderTip(state);
|
||||
|
@@ -29,7 +29,7 @@ import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||
public class BatteryDefenderTip extends BatteryTip {
|
||||
|
||||
public BatteryDefenderTip(@StateType int state) {
|
||||
super(TipType.BATTERY_DEFENDER, state, false /* showDialog */);
|
||||
super(TipType.BATTERY_DEFENDER, state, true /* showDialog */);
|
||||
}
|
||||
|
||||
private BatteryDefenderTip(Parcel in) {
|
||||
|
Reference in New Issue
Block a user