public long averageTimeToDischarge = Estimate.AVERAGE_TIME_TO_DISCHARGE_UNKNOWN;
public String batteryPercentString;
public String statusLabel;
+ public String suggestionLabel;
private boolean mCharging;
private BatteryStats mStats;
private static final String LOG_TAG = "BatteryInfo";
final int status = batteryBroadcast.getIntExtra(BatteryManager.EXTRA_STATUS,
BatteryManager.BATTERY_STATUS_UNKNOWN);
info.discharging = false;
+ info.suggestionLabel = null;
if (chargeTime > 0 && status != BatteryManager.BATTERY_STATUS_FULL) {
info.remainingTimeUs = chargeTime;
CharSequence timeString = StringUtil.formatElapsedTime(context,
info.batteryPercentString,
estimate.isBasedOnUsage && !shortString
);
+ info.suggestionLabel = PowerUtil.getBatteryTipStringFormatted(
+ context, PowerUtil.convertUsToMs(drainTimeUs));
} else {
info.remainingLabel = null;
+ info.suggestionLabel = null;
info.chargeLabel = info.batteryPercentString;
}
}
private static final String STATUS_NOT_CHARGING = "Not charging";
private static final long REMAINING_TIME_NULL = -1;
private static final long REMAINING_TIME = 2;
+ // Strings are defined in frameworks/base/packages/SettingsLib/res/values/strings.xml
private static final String ENHANCED_STRING_SUFFIX = "based on your usage";
+ private static final String EXTEND_PREFIX = "Extend battery life past";
private static final long TEST_CHARGE_TIME_REMAINING = TimeUnit.MINUTES.toMicros(1);
private static final String TEST_CHARGE_TIME_REMAINING_STRINGIFIED =
"1 min left until fully charged";
// We only add special mention for the long string
assertThat(info.remainingLabel.toString()).contains(ENHANCED_STRING_SUFFIX);
+ assertThat(info.suggestionLabel).contains(EXTEND_PREFIX);
// shortened string should not have extra text
assertThat(info2.remainingLabel.toString()).doesNotContain(ENHANCED_STRING_SUFFIX);
+ assertThat(info2.suggestionLabel).contains(EXTEND_PREFIX);
}
@Test
mContext.getString(R.string.power_remaining_duration_only_shutdown_imminent));
assertThat(info2.remainingLabel.toString()).isEqualTo(
mContext.getString(R.string.power_remaining_duration_only_shutdown_imminent));
+ assertThat(info2.suggestionLabel).contains(EXTEND_PREFIX);
+ }
+
+ @Test
+ public void getBatteryInfo_MoreThanOneDay_suggestionLabelIsCorrectString() {
+ Estimate estimate = new Estimate(Duration.ofDays(3).toMillis(),
+ true /* isBasedOnUsage */,
+ 1000 /* averageDischargeTime */);
+ BatteryInfo info = BatteryInfo.getBatteryInfo(mContext, mDisChargingBatteryBroadcast,
+ mBatteryStats, estimate, SystemClock.elapsedRealtime() * 1000,
+ false /* shortString */);
+
+ assertThat(info.suggestionLabel).doesNotContain(EXTEND_PREFIX);
}
@Test