Merge "Add dialog for summary tip" into pi-dev

This commit is contained in:
TreeHugger Robot
2018-03-14 05:47:12 +00:00
committed by Android (Google) Code Review
10 changed files with 171 additions and 16 deletions

View File

@@ -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(

View File

@@ -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;

View File

@@ -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));
}

View File

@@ -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);
}
}

View File

@@ -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);