Refactor battery related feature provider
Merge BatteryInfoFeatureProvider to BatterySettingsFeatureProvider. Also add a new string to indicate the unavailability when there's error fetching the cycle count value. Bug: 276399056 Test: robotests Change-Id: Ic6a641d72d5bb295f2a0766dcebdcbe855d91125
This commit is contained in:
@@ -16,9 +16,19 @@
|
||||
|
||||
package com.android.settings.fuelgauge;
|
||||
|
||||
import android.content.ComponentName;
|
||||
|
||||
/** Feature provider for battery settings usage. */
|
||||
public interface BatterySettingsFeatureProvider {
|
||||
|
||||
/** Returns true if manufacture date should be shown */
|
||||
boolean isManufactureDateAvailable();
|
||||
|
||||
/** Returns true if first use date should be shown */
|
||||
boolean isFirstUseDateAvailable();
|
||||
|
||||
/** Returns the summary of battery manufacture date */
|
||||
CharSequence getManufactureDateSummary();
|
||||
|
||||
/** Returns the summary of battery first use date */
|
||||
CharSequence getFirstUseDateSummary();
|
||||
|
||||
}
|
||||
|
||||
@@ -17,13 +17,76 @@
|
||||
package com.android.settings.fuelgauge;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.BatteryManager;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.ZoneId;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.format.FormatStyle;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/** Feature provider implementation for battery settings usage. */
|
||||
public class BatterySettingsFeatureProviderImpl implements BatterySettingsFeatureProvider {
|
||||
|
||||
protected Context mContext;
|
||||
|
||||
private BatteryManager mBatteryManager;
|
||||
private long mManufactureDateInMs;
|
||||
private long mFirstUseDateInMs;
|
||||
|
||||
public BatterySettingsFeatureProviderImpl(Context context) {
|
||||
mContext = context.getApplicationContext();
|
||||
mBatteryManager = mContext.getSystemService(BatteryManager.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isManufactureDateAvailable() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFirstUseDateAvailable() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CharSequence getManufactureDateSummary() {
|
||||
return isManufactureDateAvailable()
|
||||
? getFormattedDate(getManufactureDate())
|
||||
: null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CharSequence getFirstUseDateSummary() {
|
||||
return isFirstUseDateAvailable()
|
||||
? getFormattedDate(getFirstUseDate())
|
||||
: null;
|
||||
}
|
||||
|
||||
protected long getManufactureDate() {
|
||||
if (mManufactureDateInMs == 0L) {
|
||||
final long manufactureDateInSec = mBatteryManager.getLongProperty(
|
||||
BatteryManager.BATTERY_PROPERTY_MANUFACTURING_DATE);
|
||||
mManufactureDateInMs = TimeUnit.MILLISECONDS.convert(manufactureDateInSec,
|
||||
TimeUnit.SECONDS);
|
||||
}
|
||||
return mManufactureDateInMs;
|
||||
}
|
||||
|
||||
protected long getFirstUseDate() {
|
||||
if (mFirstUseDateInMs == 0L) {
|
||||
final long firstUseDateInSec = mBatteryManager.getLongProperty(
|
||||
BatteryManager.BATTERY_PROPERTY_FIRST_USAGE_DATE);
|
||||
mFirstUseDateInMs = TimeUnit.MILLISECONDS.convert(firstUseDateInSec, TimeUnit.SECONDS);
|
||||
}
|
||||
return mFirstUseDateInMs;
|
||||
}
|
||||
|
||||
private CharSequence getFormattedDate(long dateInMs) {
|
||||
final Instant instant = Instant.ofEpochMilli(dateInMs);
|
||||
final String localDate = instant.atZone(ZoneId.systemDefault()).toLocalDate().format(
|
||||
DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG));
|
||||
|
||||
return localDate;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user