Files
app_Settings/src/com/android/settings/fuelgauge/PowerUsageTimeController.java
mxyyiyi 1b9eb170dd Refactor Power Usage Time Page.
- Show use time category

Screenshot:
[Screen time with hint] https://screenshot.googleplex.com/3cRLrwevzw4iytb
[Background time with hint] https://screenshot.googleplex.com/zEf8PcWopCVCRZR
[without hint] https://screenshot.googleplex.com/9bao9sVd8s7VRwM
[enter from app info (without category)] https://screenshot.googleplex.com/8sozxMrq8ojadiF

Bug: 302063050
Test: Manual
Change-Id: Ic967d05a173afa76c2a958e1332dedd9f83cd687
2023-10-02 02:34:35 +08:00

109 lines
4.4 KiB
Java

/*
* Copyright (C) 2023 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.fuelgauge;
import static com.android.settings.fuelgauge.BatteryUtils.formatElapsedTimeWithoutComma;
import android.content.Context;
import android.text.TextUtils;
import android.text.format.DateUtils;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;
import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
public class PowerUsageTimeController extends BasePreferenceController {
private static final String TAG = "PowerUsageTimeController";
private static final String KEY_POWER_USAGE_TIME = "battery_usage_time_category";
private static final String KEY_SCREEN_TIME_PREF = "battery_usage_screen_time";
private static final String KEY_BACKGROUND_TIME_PREF = "battery_usage_background_time";
@VisibleForTesting
PreferenceCategory mPowerUsageTimeCategory;
@VisibleForTesting
PowerUsageTimePreference mScreenTimePreference;
@VisibleForTesting
PowerUsageTimePreference mBackgroundTimePreference;
public PowerUsageTimeController(Context context) {
super(context, KEY_POWER_USAGE_TIME);
}
@Override
public int getAvailabilityStatus() {
return AVAILABLE;
}
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
mPowerUsageTimeCategory = screen.findPreference(KEY_POWER_USAGE_TIME);
mScreenTimePreference = screen.findPreference(KEY_SCREEN_TIME_PREF);
mBackgroundTimePreference = screen.findPreference(KEY_BACKGROUND_TIME_PREF);
mPowerUsageTimeCategory.setVisible(false);
}
void handleScreenTimeUpdated(final String slotTime,
final long screenOnTimeInMs, final long backgroundTimeInMs,
final String anomalyHintPrefKey, final String anomalyHintText) {
final boolean isShowScreenOnTime = showTimePreference(
mScreenTimePreference, R.string.power_usage_detail_screen_time,
screenOnTimeInMs, anomalyHintPrefKey, anomalyHintText);
final boolean isShowBackgroundTime = showTimePreference(
mBackgroundTimePreference, R.string.power_usage_detail_background_time,
backgroundTimeInMs, anomalyHintPrefKey, anomalyHintText);
if (isShowScreenOnTime || isShowBackgroundTime) {
showCategoryTitle(slotTime);
}
}
boolean showTimePreference(PowerUsageTimePreference preference,
int titleResId, long summaryTimeMs, String anomalyHintKey, String anomalyHintText) {
if (preference == null
|| (summaryTimeMs == 0 && !TextUtils.equals(anomalyHintKey, preference.getKey()))) {
return false;
}
preference.setTimeTitle(mContext.getString(titleResId));
preference.setTimeSummary(getPowerUsageTimeInfo(summaryTimeMs));
if (TextUtils.equals(anomalyHintKey, preference.getKey())) {
preference.setAnomalyHint(anomalyHintText);
}
preference.setVisible(true);
return true;
}
private CharSequence getPowerUsageTimeInfo(long timeInMs) {
if (timeInMs < DateUtils.MINUTE_IN_MILLIS) {
return mContext.getString(R.string.power_usage_time_less_than_one_minute);
}
return formatElapsedTimeWithoutComma(mContext, (double) timeInMs,
/*withSeconds=*/ false, /*collapseTimeUnit=*/ false);
}
@VisibleForTesting
void showCategoryTitle(String slotTimestamp) {
mPowerUsageTimeCategory.setTitle(slotTimestamp == null
? mContext.getString(R.string.battery_app_usage)
: mContext.getString(R.string.battery_app_usage_for, slotTimestamp));
mPowerUsageTimeCategory.setVisible(true);
}
}