Add BatteryStatusFeatureProvider

This allows the battery header status line to be overridden.

Bug: 150239363
Test: implemented provider and changed status line text
Signed-off-by: Jeffrey Carlyle <jcarlyle@google.com>
Change-Id: I05bedbee641f087de5ee1b25a00724ce2de51f87
This commit is contained in:
Jeffrey Carlyle
2020-05-27 09:28:17 -07:00
parent 1050599da3
commit 4e2071ae78
6 changed files with 111 additions and 4 deletions

View File

@@ -34,6 +34,7 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.widget.EntityHeaderController;
import com.android.settingslib.Utils;
import com.android.settingslib.core.lifecycle.Lifecycle;
@@ -49,6 +50,8 @@ public class BatteryHeaderPreferenceController extends BasePreferenceController
@VisibleForTesting
static final String KEY_BATTERY_HEADER = "battery_header";
@VisibleForTesting
BatteryStatusFeatureProvider mBatteryStatusFeatureProvider;
@VisibleForTesting
BatteryMeterView mBatteryMeterView;
@VisibleForTesting
@@ -66,6 +69,8 @@ public class BatteryHeaderPreferenceController extends BasePreferenceController
public BatteryHeaderPreferenceController(Context context, String key) {
super(context, key);
mPowerManager = context.getSystemService(PowerManager.class);
mBatteryStatusFeatureProvider = FeatureFactory.getFactory(context)
.getBatteryStatusFeatureProvider(context);
}
public void setActivity(Activity activity) {
@@ -107,10 +112,12 @@ public class BatteryHeaderPreferenceController extends BasePreferenceController
public void updateHeaderPreference(BatteryInfo info) {
mBatteryPercentText.setText(formatBatteryPercentageText(info.batteryLevel));
if (info.remainingLabel == null) {
mSummary1.setText(info.statusLabel);
} else {
mSummary1.setText(info.remainingLabel);
if (!mBatteryStatusFeatureProvider.triggerBatteryStatusUpdate(this, info)) {
if (info.remainingLabel == null) {
mSummary1.setText(info.statusLabel);
} else {
mSummary1.setText(info.remainingLabel);
}
}
mBatteryMeterView.setBatteryLevel(info.batteryLevel);
@@ -118,6 +125,13 @@ public class BatteryHeaderPreferenceController extends BasePreferenceController
mBatteryMeterView.setPowerSave(mPowerManager.isPowerSaveMode());
}
/**
* Callback which receives text for the summary line.
*/
public void updateBatteryStatus(String statusLabel) {
mSummary1.setText(statusLabel);
}
public void quickUpdateHeaderPreference() {
Intent batteryBroadcast = mContext.registerReceiver(null,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));