• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.settings.fuelgauge;
18 
19 import static com.android.settings.Utils.SYSTEMUI_PACKAGE_NAME;
20 
21 import android.content.Context;
22 import android.content.Intent;
23 import android.content.pm.PackageManager;
24 import android.os.Process;
25 import android.util.ArrayMap;
26 import android.util.ArraySet;
27 import android.util.SparseIntArray;
28 
29 import com.android.internal.util.ArrayUtils;
30 import com.android.settings.fuelgauge.batteryusage.PowerAnomalyEventList;
31 import com.android.settingslib.fuelgauge.Estimate;
32 
33 import java.util.ArrayList;
34 import java.util.List;
35 import java.util.Set;
36 
37 /** Implementation of {@code PowerUsageFeatureProvider} */
38 public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider {
39 
40     private static final String PACKAGE_CALENDAR_PROVIDER = "com.android.providers.calendar";
41     private static final String PACKAGE_MEDIA_PROVIDER = "com.android.providers.media";
42     private static final String[] PACKAGES_SYSTEM = {PACKAGE_MEDIA_PROVIDER,
43             PACKAGE_CALENDAR_PROVIDER, SYSTEMUI_PACKAGE_NAME};
44 
45     protected PackageManager mPackageManager;
46     protected Context mContext;
47 
PowerUsageFeatureProviderImpl(Context context)48     public PowerUsageFeatureProviderImpl(Context context) {
49         mPackageManager = context.getPackageManager();
50         mContext = context.getApplicationContext();
51     }
52 
53     @Override
isTypeService(int uid)54     public boolean isTypeService(int uid) {
55         return false;
56     }
57 
58     @Override
isTypeSystem(int uid, String[] packages)59     public boolean isTypeSystem(int uid, String[] packages) {
60         // Classify all the sippers to type system if the range of uid is 0...FIRST_APPLICATION_UID
61         if (uid >= Process.ROOT_UID && uid < Process.FIRST_APPLICATION_UID) {
62             return true;
63         } else if (packages != null) {
64             for (final String packageName : packages) {
65                 if (ArrayUtils.contains(PACKAGES_SYSTEM, packageName)) {
66                     return true;
67                 }
68             }
69         }
70         return false;
71     }
72 
73     @Override
isBatteryUsageEnabled()74     public boolean isBatteryUsageEnabled() {
75         return true;
76     }
77 
78     @Override
isBatteryTipsEnabled()79     public boolean isBatteryTipsEnabled() {
80         return false;
81     }
82 
83     @Override
getBatteryUsageListScreenOnTimeThresholdInMs()84     public double getBatteryUsageListScreenOnTimeThresholdInMs() {
85         return 0;
86     }
87 
88     @Override
getBatteryUsageListConsumePowerThreshold()89     public double getBatteryUsageListConsumePowerThreshold() {
90         return 0;
91     }
92 
93     @Override
getSystemAppsAllowlist()94     public List<String> getSystemAppsAllowlist() {
95         return new ArrayList<>();
96     }
97 
98     @Override
isLocationSettingEnabled(String[] packages)99     public boolean isLocationSettingEnabled(String[] packages) {
100         return false;
101     }
102 
103     @Override
getAdditionalBatteryInfoIntent()104     public Intent getAdditionalBatteryInfoIntent() {
105         return null;
106     }
107 
108     @Override
getEnhancedBatteryPrediction(Context context)109     public Estimate getEnhancedBatteryPrediction(Context context) {
110         return null;
111     }
112 
113     @Override
getEnhancedBatteryPredictionCurve(Context context, long zeroTime)114     public SparseIntArray getEnhancedBatteryPredictionCurve(Context context, long zeroTime) {
115         return null;
116     }
117 
118     @Override
isEnhancedBatteryPredictionEnabled(Context context)119     public boolean isEnhancedBatteryPredictionEnabled(Context context) {
120         return false;
121     }
122 
123     @Override
getEnhancedEstimateDebugString(String timeRemaining)124     public String getEnhancedEstimateDebugString(String timeRemaining) {
125         return null;
126     }
127 
128     @Override
isEstimateDebugEnabled()129     public boolean isEstimateDebugEnabled() {
130         return false;
131     }
132 
133     @Override
getOldEstimateDebugString(String timeRemaining)134     public String getOldEstimateDebugString(String timeRemaining) {
135         return null;
136     }
137 
138     @Override
isSmartBatterySupported()139     public boolean isSmartBatterySupported() {
140         return mContext.getResources().getBoolean(
141                 com.android.internal.R.bool.config_smart_battery_available);
142     }
143 
144     @Override
isChartGraphSlotsEnabled(Context context)145     public boolean isChartGraphSlotsEnabled(Context context) {
146         return false;
147     }
148 
149     @Override
getResumeChargeIntent(boolean isDockDefender)150     public Intent getResumeChargeIntent(boolean isDockDefender) {
151         return null;
152     }
153 
154     @Override
getFullChargeIntentAction()155     public String getFullChargeIntentAction() {
156         return Intent.ACTION_BATTERY_LEVEL_CHANGED;
157     }
158 
159     @Override
isExtraDefend()160     public boolean isExtraDefend() {
161         return false;
162     }
163 
164     @Override
delayHourlyJobWhenBooting()165     public boolean delayHourlyJobWhenBooting() {
166         return true;
167     }
168 
169     @Override
insertSettingsData(Context context, double displayDrain)170     public void insertSettingsData(Context context, double displayDrain) {}
171 
172     @Override
detectSettingsAnomaly(Context context, double displayDrain)173     public PowerAnomalyEventList detectSettingsAnomaly(Context context, double displayDrain) {
174         return null;
175     }
176 
177     @Override
getOthersSystemComponentSet()178     public Set<Integer> getOthersSystemComponentSet() {
179         return new ArraySet<>();
180     }
181 
182     @Override
getOthersCustomComponentNameSet()183     public Set<String> getOthersCustomComponentNameSet() {
184         return new ArraySet<>();
185     }
186 
187     @Override
getHideSystemComponentSet()188     public Set<Integer> getHideSystemComponentSet() {
189         return new ArraySet<>();
190     }
191 
192     @Override
getHideApplicationSet()193     public Set<String> getHideApplicationSet() {
194         return new ArraySet<>();
195     }
196 
197     @Override
getHideBackgroundUsageTimeSet()198     public Set<String> getHideBackgroundUsageTimeSet() {
199         return new ArraySet<>();
200     }
201 
202     @Override
getIgnoreScreenOnTimeTaskRootSet()203     public Set<String> getIgnoreScreenOnTimeTaskRootSet() {
204         return new ArraySet<>();
205     }
206 
207     @Override
getBuildMetadata1(Context context)208     public String getBuildMetadata1(Context context) {
209         return null;
210     }
211 
212     @Override
getBuildMetadata2(Context context)213     public String getBuildMetadata2(Context context) {
214         return null;
215     }
216 
217     @Override
isValidToRestoreOptimizationMode(ArrayMap<String, String> deviceInfoMap)218     public boolean isValidToRestoreOptimizationMode(ArrayMap<String, String> deviceInfoMap) {
219         return false;
220     }
221 }
222