From 12e327608b96a54084fcb317d076c9f7d605998f Mon Sep 17 00:00:00 2001 From: Salvador Martinez Date: Thu, 4 Jan 2018 16:50:02 -0800 Subject: [PATCH] Improve messaging for enhanced notifications The message displayed in battery settings will now more accurately reflect when an estimate is enhanced based on our updated definition of what that means. Test: robotests Bug: 64833846 Change-Id: Id635d78d8f56d10253e22df2705af93f2693db70 --- .../android/settings/fuelgauge/BatteryInfo.java | 7 ++++--- .../android/settings/fuelgauge/BatteryUtils.java | 14 ++++++-------- .../settings/fuelgauge/DebugEstimatesLoader.java | 11 ++++++----- src/com/android/settings/fuelgauge/Estimate.java | 12 ++++++++++++ .../fuelgauge/PowerUsageFeatureProvider.java | 15 ++------------- .../fuelgauge/PowerUsageFeatureProviderImpl.java | 15 ++------------- 6 files changed, 32 insertions(+), 42 deletions(-) create mode 100644 src/com/android/settings/fuelgauge/Estimate.java diff --git a/src/com/android/settings/fuelgauge/BatteryInfo.java b/src/com/android/settings/fuelgauge/BatteryInfo.java index 7a0cd276369..acd81446b57 100644 --- a/src/com/android/settings/fuelgauge/BatteryInfo.java +++ b/src/com/android/settings/fuelgauge/BatteryInfo.java @@ -170,11 +170,12 @@ public class BatteryInfo { if (discharging && provider != null && provider.isEnhancedBatteryPredictionEnabled(context)) { - final long prediction = provider.getEnhancedBatteryPrediction(context); + Estimate estimate = provider.getEnhancedBatteryPrediction(context); BatteryUtils.logRuntime(LOG_TAG, "time for enhanced BatteryInfo", startTime); return BatteryInfo.getBatteryInfo(context, batteryBroadcast, stats, - elapsedRealtimeUs, shortString, BatteryUtils.convertMsToUs(prediction), - true); + elapsedRealtimeUs, shortString, + BatteryUtils.convertMsToUs(estimate.estimateMillis), + estimate.isBasedOnUsage); } else { long prediction = discharging ? stats.computeBatteryTimeRemaining(elapsedRealtimeUs) : 0; diff --git a/src/com/android/settings/fuelgauge/BatteryUtils.java b/src/com/android/settings/fuelgauge/BatteryUtils.java index c623396ed8e..68677fab2de 100644 --- a/src/com/android/settings/fuelgauge/BatteryUtils.java +++ b/src/com/android/settings/fuelgauge/BatteryUtils.java @@ -21,8 +21,6 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; -import android.database.Cursor; -import android.net.Uri; import android.os.BatteryManager; import android.os.BatteryStats; import android.os.Bundle; @@ -410,19 +408,19 @@ public class BatteryUtils { final boolean discharging = batteryBroadcast.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1) == 0; // Get enhanced prediction if available and discharging, otherwise use the old code - Cursor cursor = null; + Estimate estimate = null; if (discharging && mPowerUsageFeatureProvider != null && mPowerUsageFeatureProvider.isEnhancedBatteryPredictionEnabled(mContext)) { - final Uri queryUri = mPowerUsageFeatureProvider.getEnhancedBatteryPredictionUri(); - cursor = mContext.getContentResolver().query(queryUri, null, null, null, null); + estimate = mPowerUsageFeatureProvider.getEnhancedBatteryPrediction(mContext); } final BatteryStats stats = statsHelper.getStats(); BatteryUtils.logRuntime(tag, "BatteryInfoLoader post query", startTime); - if (cursor != null && cursor.moveToFirst()) { - long enhancedEstimate = mPowerUsageFeatureProvider.getTimeRemainingEstimate(cursor); + + if (estimate != null) { batteryInfo = BatteryInfo.getBatteryInfo(mContext, batteryBroadcast, stats, elapsedRealtimeUs, false /* shortString */, - BatteryUtils.convertMsToUs(enhancedEstimate), true /* basedOnUsage */); + BatteryUtils.convertMsToUs(estimate.estimateMillis), + estimate.isBasedOnUsage); } else { batteryInfo = BatteryInfo.getBatteryInfo(mContext, batteryBroadcast, stats, elapsedRealtimeUs, false /* shortString */, diff --git a/src/com/android/settings/fuelgauge/DebugEstimatesLoader.java b/src/com/android/settings/fuelgauge/DebugEstimatesLoader.java index 19aa6390393..a080e2b7300 100644 --- a/src/com/android/settings/fuelgauge/DebugEstimatesLoader.java +++ b/src/com/android/settings/fuelgauge/DebugEstimatesLoader.java @@ -54,14 +54,15 @@ public class DebugEstimatesLoader extends AsyncLoader> { BatteryInfo oldinfo = BatteryInfo.getBatteryInfoOld(getContext(), batteryBroadcast, stats, elapsedRealtimeUs, false); - final long timeRemainingEnhanced = BatteryUtils.convertMsToUs( - powerUsageFeatureProvider.getEnhancedBatteryPrediction(getContext())); - BatteryInfo newinfo = BatteryInfo.getBatteryInfo(getContext(), batteryBroadcast, stats, - elapsedRealtimeUs, false, timeRemainingEnhanced, true); + Estimate estimate = powerUsageFeatureProvider.getEnhancedBatteryPrediction(context); + BatteryInfo newInfo = BatteryInfo.getBatteryInfo(getContext(), batteryBroadcast, stats, + elapsedRealtimeUs, false, + BatteryUtils.convertMsToUs(estimate.estimateMillis), + estimate.isBasedOnUsage); List infos = new ArrayList<>(); infos.add(oldinfo); - infos.add(newinfo); + infos.add(newInfo); return infos; } } diff --git a/src/com/android/settings/fuelgauge/Estimate.java b/src/com/android/settings/fuelgauge/Estimate.java new file mode 100644 index 00000000000..541678c91fa --- /dev/null +++ b/src/com/android/settings/fuelgauge/Estimate.java @@ -0,0 +1,12 @@ +package com.android.settings.fuelgauge; + +public class Estimate { + + public final long estimateMillis; + public final boolean isBasedOnUsage; + + public Estimate(long estimateMillis, boolean isBasedOnUsage) { + this.estimateMillis = estimateMillis; + this.isBasedOnUsage = isBasedOnUsage; + } +} diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java index 1fb02c4aafa..67bdada24a0 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java +++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java @@ -18,8 +18,6 @@ package com.android.settings.fuelgauge; import android.content.Context; import android.content.Intent; -import android.database.Cursor; -import android.net.Uri; import android.util.SparseIntArray; import com.android.internal.os.BatterySipper; @@ -28,6 +26,7 @@ import com.android.internal.os.BatterySipper; * Feature Provider used in power usage */ public interface PowerUsageFeatureProvider { + /** * Check whether location setting is enabled */ @@ -66,7 +65,7 @@ public interface PowerUsageFeatureProvider { /** * Returns an improved prediction for battery time remaining. */ - long getEnhancedBatteryPrediction(Context context); + Estimate getEnhancedBatteryPrediction(Context context); /** * Returns an improved projection curve for future battery level. @@ -79,16 +78,6 @@ public interface PowerUsageFeatureProvider { */ boolean isEnhancedBatteryPredictionEnabled(Context context); - /** - * Returns the Uri used to query for an enhanced battery prediction from a cursor loader. - */ - Uri getEnhancedBatteryPredictionUri(); - - /** - * Returns the the estimate in the cursor as a long or -1 if the cursor is null - */ - long getTimeRemainingEstimate(Cursor cursor); - /** * Checks whether debugging should be enabled for battery estimates. * @return diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java index cda4d3d7be9..3d9938651a8 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java +++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java @@ -21,7 +21,6 @@ import static com.android.settings.core.FeatureFlags.BATTERY_SETTINGS_V2; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; -import android.database.Cursor; import android.net.Uri; import android.os.Process; import android.util.FeatureFlagUtils; @@ -95,8 +94,8 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider } @Override - public long getEnhancedBatteryPrediction(Context context) { - return -1; + public Estimate getEnhancedBatteryPrediction(Context context) { + return null; } @Override @@ -109,16 +108,6 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider return false; } - @Override - public Uri getEnhancedBatteryPredictionUri() { - return null; - } - - @Override - public long getTimeRemainingEstimate(Cursor cursor) { - return 0; - } - @Override public String getEnhancedEstimateDebugString(String timeRemaining) { return null;