/* * Copyright (C) 2022 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 android.content.Context; import android.content.Intent; import android.util.SparseIntArray; import com.android.settingslib.fuelgauge.Estimate; import java.util.List; import java.util.Set; /** * Feature Provider used in power usage */ public interface PowerUsageFeatureProvider { /** * Check whether the battery usage button is enabled in the battery page */ boolean isBatteryUsageEnabled(); /** * Returns a threshold (in milliseconds) for the minimal screen on time in battery usage list */ double getBatteryUsageListScreenOnTimeThresholdInMs(); /** * Returns a threshold (mA) for the minimal comsume power in battery usage list */ double getBatteryUsageListConsumePowerThreshold(); /** * Returns an allowlist of app names combined into the system-apps item */ List getSystemAppsAllowlist(); /** * Check whether location setting is enabled */ boolean isLocationSettingEnabled(String[] packages); /** * Gets an {@link Intent} to show additional battery info */ Intent getAdditionalBatteryInfoIntent(); /** * Check whether it is type service */ boolean isTypeService(int uid); /** * Check whether it is type system */ boolean isTypeSystem(int uid, String[] packages); /** * Returns an improved prediction for battery time remaining */ Estimate getEnhancedBatteryPrediction(Context context); /** * Returns an improved projection curve for future battery level * * @param zeroTime timestamps (array keys) are shifted by this amount */ SparseIntArray getEnhancedBatteryPredictionCurve(Context context, long zeroTime); /** * Checks whether the toggle for enhanced battery predictions is enabled */ boolean isEnhancedBatteryPredictionEnabled(Context context); /** * Checks whether debugging should be enabled for battery estimates */ boolean isEstimateDebugEnabled(); /** * Converts the provided string containing the remaining time into a debug string for enhanced * estimates * * @return A string containing the estimate and a label indicating it is an enhanced estimate */ String getEnhancedEstimateDebugString(String timeRemaining); /** * Converts the provided string containing the remaining time into a debug string * * @return A string containing the estimate and a label indicating it is a normal estimate */ String getOldEstimateDebugString(String timeRemaining); /** * Checks whether smart battery feature is supported in this device */ boolean isSmartBatterySupported(); /** * Checks whether we should show usage information by slots or not */ boolean isChartGraphSlotsEnabled(Context context); /** * Returns {@code true} if current defender mode is extra defend */ boolean isExtraDefend(); /** * Returns {@code true} if delay the hourly job when device is booting */ boolean delayHourlyJobWhenBooting(); /** * Gets an intent for one time bypass charge limited to resume charging. */ Intent getResumeChargeIntent(boolean isDockDefender); /** * Returns the intent action used to mark as the full charge start event. */ String getFullChargeIntentAction(); /** * Returns {@link Set} for the system component ids which are combined into others */ Set getOthersSystemComponentSet(); /** * Returns {@link Set} for the custom system component names which are combined into others */ Set getOthersCustomComponentNameSet(); /** * Returns {@link Set} for hiding system component ids in the usage screen */ Set getHideSystemComponentSet(); /** * Returns {@link Set} for hiding application package names in the usage screen */ Set getHideApplicationSet(); /** * Returns {@link Set} for hiding applications background usage time */ Set getHideBackgroundUsageTimeSet(); /** * Returns {@link Set} for ignoring task root class names for screen on time */ Set getIgnoreScreenOnTimeTaskRootSet(); /** * Returns the customized device build information for data backup */ String getBuildMetadata1(Context context); /** * Returns the customized device build information for data backup */ String getBuildMetadata2(Context context); }