Loading src/com/android/settings/deviceinfo/batteryinfo/BatteryFirstUseDatePreferenceController.java +23 −4 Original line number Diff line number Diff line Loading @@ -17,32 +17,51 @@ package com.android.settings.deviceinfo.batteryinfo; import android.content.Context; import android.os.BatteryManager; import com.android.settings.core.BasePreferenceController; import com.android.settings.fuelgauge.BatterySettingsFeatureProvider; import com.android.settings.fuelgauge.BatteryUtils; import com.android.settings.overlay.FeatureFactory; import java.util.concurrent.TimeUnit; /** * A controller that manages the information about battery first use date. */ public class BatteryFirstUseDatePreferenceController extends BasePreferenceController { private BatterySettingsFeatureProvider mBatterySettingsFeatureProvider; private final BatterySettingsFeatureProvider mBatterySettingsFeatureProvider; private final BatteryManager mBatteryManager; private long mFirstUseDateInMs; public BatteryFirstUseDatePreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); mBatterySettingsFeatureProvider = FeatureFactory.getFactory( context).getBatterySettingsFeatureProvider(context); context).getBatterySettingsFeatureProvider(); mBatteryManager = mContext.getSystemService(BatteryManager.class); } @Override public int getAvailabilityStatus() { return mBatterySettingsFeatureProvider.isFirstUseDateAvailable() return mBatterySettingsFeatureProvider.isFirstUseDateAvailable(getFirstUseDate()) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; } @Override public CharSequence getSummary() { return mBatterySettingsFeatureProvider.getFirstUseDateSummary(); return isAvailable() ? BatteryUtils.getBatteryInfoFormattedDate(mFirstUseDateInMs) : null; } private 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; } } src/com/android/settings/deviceinfo/batteryinfo/BatteryManufactureDatePreferenceController.java +24 −4 Original line number Diff line number Diff line Loading @@ -17,32 +17,52 @@ package com.android.settings.deviceinfo.batteryinfo; import android.content.Context; import android.os.BatteryManager; import com.android.settings.core.BasePreferenceController; import com.android.settings.fuelgauge.BatterySettingsFeatureProvider; import com.android.settings.fuelgauge.BatteryUtils; import com.android.settings.overlay.FeatureFactory; import java.util.concurrent.TimeUnit; /** * A controller that manages the information about battery manufacture date. */ public class BatteryManufactureDatePreferenceController extends BasePreferenceController { private BatterySettingsFeatureProvider mBatterySettingsFeatureProvider; private final BatterySettingsFeatureProvider mBatterySettingsFeatureProvider; private final BatteryManager mBatteryManager; private long mManufactureDateInMs; public BatteryManufactureDatePreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); mBatterySettingsFeatureProvider = FeatureFactory.getFactory( context).getBatterySettingsFeatureProvider(context); context).getBatterySettingsFeatureProvider(); mBatteryManager = mContext.getSystemService(BatteryManager.class); } @Override public int getAvailabilityStatus() { return mBatterySettingsFeatureProvider.isManufactureDateAvailable() return mBatterySettingsFeatureProvider.isManufactureDateAvailable(getManufactureDate()) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; } @Override public CharSequence getSummary() { return mBatterySettingsFeatureProvider.getManufactureDateSummary(); return isAvailable() ? BatteryUtils.getBatteryInfoFormattedDate(mManufactureDateInMs) : null; } private long getManufactureDate() { if (mManufactureDateInMs == 0L) { final long manufactureDateInSec = mBatteryManager.getLongProperty( BatteryManager.BATTERY_PROPERTY_MANUFACTURING_DATE); mManufactureDateInMs = TimeUnit.MILLISECONDS.convert(manufactureDateInSec, TimeUnit.SECONDS); } return mManufactureDateInMs; } } src/com/android/settings/fuelgauge/BatterySettingsFeatureProvider.java +2 −9 Original line number Diff line number Diff line Loading @@ -20,15 +20,8 @@ package com.android.settings.fuelgauge; public interface BatterySettingsFeatureProvider { /** Returns true if manufacture date should be shown */ boolean isManufactureDateAvailable(); boolean isManufactureDateAvailable(long manufactureDateMs); /** 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(); boolean isFirstUseDateAvailable(long firstUseDateMs); } src/com/android/settings/fuelgauge/BatterySettingsFeatureProviderImpl.java +2 −63 Original line number Diff line number Diff line Loading @@ -16,77 +16,16 @@ 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() { public boolean isManufactureDateAvailable(long manufactureDateMs) { return false; } @Override public boolean isFirstUseDateAvailable() { public boolean isFirstUseDateAvailable(long firstUseDateMs) { 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; } } src/com/android/settings/fuelgauge/BatteryUtils.java +11 −1 Original line number Diff line number Diff line Loading @@ -64,8 +64,10 @@ import com.google.protobuf.MessageLite; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.time.Duration; import java.time.Instant; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.time.format.FormatStyle; import java.util.List; /** Loading Loading @@ -671,6 +673,14 @@ public class BatteryUtils { } return summary.toString(); } /** Format the date of battery related info */ public static CharSequence getBatteryInfoFormattedDate(long dateInMs) { final Instant instant = Instant.ofEpochMilli(dateInMs); final String localDate = instant.atZone(ZoneId.systemDefault()).toLocalDate().format( DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG)); return localDate; } /** Builds the battery usage time information for one timestamp. */ private static String buildBatteryUsageTimeInfo(final Context context, long timeInMs, Loading Loading
src/com/android/settings/deviceinfo/batteryinfo/BatteryFirstUseDatePreferenceController.java +23 −4 Original line number Diff line number Diff line Loading @@ -17,32 +17,51 @@ package com.android.settings.deviceinfo.batteryinfo; import android.content.Context; import android.os.BatteryManager; import com.android.settings.core.BasePreferenceController; import com.android.settings.fuelgauge.BatterySettingsFeatureProvider; import com.android.settings.fuelgauge.BatteryUtils; import com.android.settings.overlay.FeatureFactory; import java.util.concurrent.TimeUnit; /** * A controller that manages the information about battery first use date. */ public class BatteryFirstUseDatePreferenceController extends BasePreferenceController { private BatterySettingsFeatureProvider mBatterySettingsFeatureProvider; private final BatterySettingsFeatureProvider mBatterySettingsFeatureProvider; private final BatteryManager mBatteryManager; private long mFirstUseDateInMs; public BatteryFirstUseDatePreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); mBatterySettingsFeatureProvider = FeatureFactory.getFactory( context).getBatterySettingsFeatureProvider(context); context).getBatterySettingsFeatureProvider(); mBatteryManager = mContext.getSystemService(BatteryManager.class); } @Override public int getAvailabilityStatus() { return mBatterySettingsFeatureProvider.isFirstUseDateAvailable() return mBatterySettingsFeatureProvider.isFirstUseDateAvailable(getFirstUseDate()) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; } @Override public CharSequence getSummary() { return mBatterySettingsFeatureProvider.getFirstUseDateSummary(); return isAvailable() ? BatteryUtils.getBatteryInfoFormattedDate(mFirstUseDateInMs) : null; } private 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; } }
src/com/android/settings/deviceinfo/batteryinfo/BatteryManufactureDatePreferenceController.java +24 −4 Original line number Diff line number Diff line Loading @@ -17,32 +17,52 @@ package com.android.settings.deviceinfo.batteryinfo; import android.content.Context; import android.os.BatteryManager; import com.android.settings.core.BasePreferenceController; import com.android.settings.fuelgauge.BatterySettingsFeatureProvider; import com.android.settings.fuelgauge.BatteryUtils; import com.android.settings.overlay.FeatureFactory; import java.util.concurrent.TimeUnit; /** * A controller that manages the information about battery manufacture date. */ public class BatteryManufactureDatePreferenceController extends BasePreferenceController { private BatterySettingsFeatureProvider mBatterySettingsFeatureProvider; private final BatterySettingsFeatureProvider mBatterySettingsFeatureProvider; private final BatteryManager mBatteryManager; private long mManufactureDateInMs; public BatteryManufactureDatePreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); mBatterySettingsFeatureProvider = FeatureFactory.getFactory( context).getBatterySettingsFeatureProvider(context); context).getBatterySettingsFeatureProvider(); mBatteryManager = mContext.getSystemService(BatteryManager.class); } @Override public int getAvailabilityStatus() { return mBatterySettingsFeatureProvider.isManufactureDateAvailable() return mBatterySettingsFeatureProvider.isManufactureDateAvailable(getManufactureDate()) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; } @Override public CharSequence getSummary() { return mBatterySettingsFeatureProvider.getManufactureDateSummary(); return isAvailable() ? BatteryUtils.getBatteryInfoFormattedDate(mManufactureDateInMs) : null; } private long getManufactureDate() { if (mManufactureDateInMs == 0L) { final long manufactureDateInSec = mBatteryManager.getLongProperty( BatteryManager.BATTERY_PROPERTY_MANUFACTURING_DATE); mManufactureDateInMs = TimeUnit.MILLISECONDS.convert(manufactureDateInSec, TimeUnit.SECONDS); } return mManufactureDateInMs; } }
src/com/android/settings/fuelgauge/BatterySettingsFeatureProvider.java +2 −9 Original line number Diff line number Diff line Loading @@ -20,15 +20,8 @@ package com.android.settings.fuelgauge; public interface BatterySettingsFeatureProvider { /** Returns true if manufacture date should be shown */ boolean isManufactureDateAvailable(); boolean isManufactureDateAvailable(long manufactureDateMs); /** 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(); boolean isFirstUseDateAvailable(long firstUseDateMs); }
src/com/android/settings/fuelgauge/BatterySettingsFeatureProviderImpl.java +2 −63 Original line number Diff line number Diff line Loading @@ -16,77 +16,16 @@ 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() { public boolean isManufactureDateAvailable(long manufactureDateMs) { return false; } @Override public boolean isFirstUseDateAvailable() { public boolean isFirstUseDateAvailable(long firstUseDateMs) { 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; } }
src/com/android/settings/fuelgauge/BatteryUtils.java +11 −1 Original line number Diff line number Diff line Loading @@ -64,8 +64,10 @@ import com.google.protobuf.MessageLite; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.time.Duration; import java.time.Instant; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.time.format.FormatStyle; import java.util.List; /** Loading Loading @@ -671,6 +673,14 @@ public class BatteryUtils { } return summary.toString(); } /** Format the date of battery related info */ public static CharSequence getBatteryInfoFormattedDate(long dateInMs) { final Instant instant = Instant.ofEpochMilli(dateInMs); final String localDate = instant.atZone(ZoneId.systemDefault()).toLocalDate().format( DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG)); return localDate; } /** Builds the battery usage time information for one timestamp. */ private static String buildBatteryUsageTimeInfo(final Context context, long timeInMs, Loading