Add dialog for summary tip
Also change SummaryTip to store the time data, which is used in the dialog. If "Full last charge" time is available, show normal message otherwise show message without it. Bug: 72997971 Test: RunSettingsRoboTests Change-Id: I4ce94f0935465a18275edb13e3be343313427c3b
This commit is contained in:
@@ -32,11 +32,13 @@ import com.android.settings.SettingsActivity;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.core.InstrumentedPreferenceFragment;
|
||||
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
||||
import com.android.settings.fuelgauge.Estimate;
|
||||
import com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController.BatteryTipListener;
|
||||
import com.android.settings.fuelgauge.batterytip.actions.BatteryTipAction;
|
||||
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
|
||||
import com.android.settings.fuelgauge.batterytip.tips.HighUsageTip;
|
||||
import com.android.settings.fuelgauge.batterytip.tips.RestrictAppTip;
|
||||
import com.android.settings.fuelgauge.batterytip.tips.SummaryTip;
|
||||
import com.android.settings.fuelgauge.batterytip.tips.UnrestrictAppTip;
|
||||
import com.android.settingslib.utils.StringUtil;
|
||||
|
||||
@@ -72,9 +74,18 @@ public class BatteryTipDialogFragment extends InstrumentedDialogFragment impleme
|
||||
|
||||
switch (mBatteryTip.getType()) {
|
||||
case BatteryTip.TipType.SUMMARY:
|
||||
case BatteryTip.TipType.LOW_BATTERY:
|
||||
//TODO(b/70570352): add dialog
|
||||
return null;
|
||||
final long averageTimeMs = ((SummaryTip) mBatteryTip).getAverageTimeMs();
|
||||
final String message = context.getString(
|
||||
averageTimeMs == Estimate.AVERAGE_TIME_TO_DISCHARGE_UNKNOWN
|
||||
? R.string.battery_tip_dialog_summary_message_no_estimation
|
||||
: R.string.battery_tip_dialog_summary_message,
|
||||
StringUtil.formatElapsedTime(context, averageTimeMs,
|
||||
false /* withSeconds */));
|
||||
|
||||
return new AlertDialog.Builder(context)
|
||||
.setMessage(message)
|
||||
.setPositiveButton(android.R.string.ok, null)
|
||||
.create();
|
||||
case BatteryTip.TipType.HIGH_DEVICE_USAGE:
|
||||
final HighUsageTip highUsageTip = (HighUsageTip) mBatteryTip;
|
||||
final RecyclerView view = (RecyclerView) LayoutInflater.from(context).inflate(
|
||||
|
@@ -22,6 +22,7 @@ import android.support.annotation.VisibleForTesting;
|
||||
import com.android.internal.os.BatteryStatsHelper;
|
||||
import com.android.settings.fuelgauge.BatteryInfo;
|
||||
import com.android.settings.fuelgauge.BatteryUtils;
|
||||
import com.android.settings.fuelgauge.Estimate;
|
||||
import com.android.settings.fuelgauge.batterytip.detectors.EarlyWarningDetector;
|
||||
import com.android.settings.fuelgauge.batterytip.detectors.HighUsageDetector;
|
||||
import com.android.settings.fuelgauge.batterytip.detectors.LowBatteryDetector;
|
||||
@@ -70,7 +71,7 @@ public class BatteryTipLoader extends AsyncLoader<List<BatteryTip>> {
|
||||
tips.add(new HighUsageDetector(context, policy, mBatteryStatsHelper).detect());
|
||||
tips.add(new SmartBatteryDetector(policy, context.getContentResolver()).detect());
|
||||
tips.add(new EarlyWarningDetector(policy, context).detect());
|
||||
tips.add(new SummaryDetector(policy).detect());
|
||||
tips.add(new SummaryDetector(policy, batteryInfo.averageTimeToDischarge).detect());
|
||||
tips.add(new RestrictAppDetector(context, policy).detect());
|
||||
|
||||
Collections.sort(tips);
|
||||
@@ -83,7 +84,8 @@ public class BatteryTipLoader extends AsyncLoader<List<BatteryTip>> {
|
||||
|
||||
private List<BatteryTip> getFakeData() {
|
||||
final List<BatteryTip> tips = new ArrayList<>();
|
||||
tips.add(new SummaryTip(BatteryTip.StateType.NEW));
|
||||
tips.add(new SummaryTip(BatteryTip.StateType.NEW,
|
||||
Estimate.AVERAGE_TIME_TO_DISCHARGE_UNKNOWN));
|
||||
tips.add(new LowBatteryTip(BatteryTip.StateType.NEW));
|
||||
|
||||
return tips;
|
||||
|
@@ -27,6 +27,7 @@ import com.android.internal.logging.nano.MetricsProto;
|
||||
import com.android.settings.SettingsActivity;
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
import com.android.settings.core.InstrumentedPreferenceFragment;
|
||||
import com.android.settings.fuelgauge.Estimate;
|
||||
import com.android.settings.fuelgauge.batterytip.actions.BatteryTipAction;
|
||||
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
|
||||
import com.android.settings.fuelgauge.batterytip.tips.SummaryTip;
|
||||
@@ -82,7 +83,8 @@ public class BatteryTipPreferenceController extends BasePreferenceController {
|
||||
mPreferenceGroup = (PreferenceGroup) screen.findPreference(getPreferenceKey());
|
||||
|
||||
// Add summary tip in advance to avoid UI flakiness
|
||||
final SummaryTip summaryTip = new SummaryTip(BatteryTip.StateType.NEW);
|
||||
final SummaryTip summaryTip = new SummaryTip(BatteryTip.StateType.NEW,
|
||||
Estimate.AVERAGE_TIME_TO_DISCHARGE_UNKNOWN);
|
||||
mPreferenceGroup.addPreference(summaryTip.buildPreference(mPrefContext));
|
||||
}
|
||||
|
||||
|
@@ -26,9 +26,11 @@ import com.android.settings.fuelgauge.batterytip.tips.SummaryTip;
|
||||
*/
|
||||
public class SummaryDetector implements BatteryTipDetector {
|
||||
private BatteryTipPolicy mPolicy;
|
||||
private long mAverageTimeMs;
|
||||
|
||||
public SummaryDetector(BatteryTipPolicy policy) {
|
||||
public SummaryDetector(BatteryTipPolicy policy, long averageTimeMs) {
|
||||
mPolicy = policy;
|
||||
mAverageTimeMs = averageTimeMs;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -37,6 +39,6 @@ public class SummaryDetector implements BatteryTipDetector {
|
||||
final int state = mPolicy.summaryEnabled
|
||||
? BatteryTip.StateType.NEW
|
||||
: BatteryTip.StateType.INVISIBLE;
|
||||
return new SummaryTip(state);
|
||||
return new SummaryTip(state, mAverageTimeMs);
|
||||
}
|
||||
}
|
||||
|
@@ -19,6 +19,7 @@ package com.android.settings.fuelgauge.batterytip.tips;
|
||||
import android.content.Context;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.support.annotation.VisibleForTesting;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto;
|
||||
import com.android.settings.R;
|
||||
@@ -28,13 +29,17 @@ import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||
* Tip to show general summary about battery life
|
||||
*/
|
||||
public class SummaryTip extends BatteryTip {
|
||||
private long mAverageTimeMs;
|
||||
|
||||
public SummaryTip(@StateType int state) {
|
||||
super(TipType.SUMMARY, state, false /* showDialog */);
|
||||
public SummaryTip(@StateType int state, long averageTimeMs) {
|
||||
super(TipType.SUMMARY, state, true /* showDialog */);
|
||||
mAverageTimeMs = averageTimeMs;
|
||||
}
|
||||
|
||||
private SummaryTip(Parcel in) {
|
||||
@VisibleForTesting
|
||||
SummaryTip(Parcel in) {
|
||||
super(in);
|
||||
mAverageTimeMs = in.readLong();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -57,12 +62,22 @@ public class SummaryTip extends BatteryTip {
|
||||
mState = tip.mState;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToParcel(Parcel dest, int flags) {
|
||||
super.writeToParcel(dest, flags);
|
||||
dest.writeLong(mAverageTimeMs);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void log(Context context, MetricsFeatureProvider metricsFeatureProvider) {
|
||||
metricsFeatureProvider.action(context, MetricsProto.MetricsEvent.ACTION_SUMMARY_TIP,
|
||||
mState);
|
||||
}
|
||||
|
||||
public long getAverageTimeMs() {
|
||||
return mAverageTimeMs;
|
||||
}
|
||||
|
||||
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
|
||||
public BatteryTip createFromParcel(Parcel in) {
|
||||
return new SummaryTip(in);
|
||||
|
Reference in New Issue
Block a user