Merge "Add dialog for summary tip" into pi-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
349c9b2691
@@ -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