• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2017 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 android.content.Context;
20 import android.content.Intent;
21 import android.content.pm.PackageManager;
22 import android.os.Process;
23 import android.util.SparseIntArray;
24 
25 import com.android.internal.os.BatterySipper;
26 import com.android.internal.util.ArrayUtils;
27 
28 public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider {
29 
30     private static final String PACKAGE_CALENDAR_PROVIDER = "com.android.providers.calendar";
31     private static final String PACKAGE_MEDIA_PROVIDER = "com.android.providers.media";
32     private static final String PACKAGE_SYSTEMUI = "com.android.systemui";
33     private static final String[] PACKAGES_SYSTEM = {PACKAGE_MEDIA_PROVIDER,
34             PACKAGE_CALENDAR_PROVIDER, PACKAGE_SYSTEMUI};
35 
36     protected PackageManager mPackageManager;
37     protected Context mContext;
38 
PowerUsageFeatureProviderImpl(Context context)39     public PowerUsageFeatureProviderImpl(Context context) {
40         mPackageManager = context.getPackageManager();
41         mContext = context.getApplicationContext();
42     }
43 
44     @Override
isTypeService(BatterySipper sipper)45     public boolean isTypeService(BatterySipper sipper) {
46         return false;
47     }
48 
49     @Override
isTypeSystem(BatterySipper sipper)50     public boolean isTypeSystem(BatterySipper sipper) {
51         final int uid = sipper.uidObj == null ? -1 : sipper.getUid();
52         sipper.mPackages = mPackageManager.getPackagesForUid(uid);
53         // Classify all the sippers to type system if the range of uid is 0...FIRST_APPLICATION_UID
54         if (uid >= Process.ROOT_UID && uid < Process.FIRST_APPLICATION_UID) {
55             return true;
56         } else if (sipper.mPackages != null) {
57             for (final String packageName : sipper.mPackages) {
58                 if (ArrayUtils.contains(PACKAGES_SYSTEM, packageName)) {
59                     return true;
60                 }
61             }
62         }
63 
64         return false;
65     }
66 
67     @Override
isLocationSettingEnabled(String[] packages)68     public boolean isLocationSettingEnabled(String[] packages) {
69         return false;
70     }
71 
72     @Override
isAdditionalBatteryInfoEnabled()73     public boolean isAdditionalBatteryInfoEnabled() {
74         return false;
75     }
76 
77     @Override
getAdditionalBatteryInfoIntent()78     public Intent getAdditionalBatteryInfoIntent() {
79         return null;
80     }
81 
82     @Override
isAdvancedUiEnabled()83     public boolean isAdvancedUiEnabled() {
84         return true;
85     }
86 
87     @Override
isPowerAccountingToggleEnabled()88     public boolean isPowerAccountingToggleEnabled() {
89         return true;
90     }
91 
92     @Override
getEnhancedBatteryPrediction(Context context)93     public Estimate getEnhancedBatteryPrediction(Context context) {
94         return null;
95     }
96 
97     @Override
getEnhancedBatteryPredictionCurve(Context context, long zeroTime)98     public SparseIntArray getEnhancedBatteryPredictionCurve(Context context, long zeroTime) {
99         return null;
100     }
101 
102     @Override
isEnhancedBatteryPredictionEnabled(Context context)103     public boolean isEnhancedBatteryPredictionEnabled(Context context) {
104         return false;
105     }
106 
107     @Override
getEnhancedEstimateDebugString(String timeRemaining)108     public String getEnhancedEstimateDebugString(String timeRemaining) {
109         return null;
110     }
111 
112     @Override
isEstimateDebugEnabled()113     public boolean isEstimateDebugEnabled() {
114         return false;
115     }
116 
117     @Override
getOldEstimateDebugString(String timeRemaining)118     public String getOldEstimateDebugString(String timeRemaining) {
119         return null;
120     }
121 
122     @Override
getAdvancedUsageScreenInfoString()123     public String getAdvancedUsageScreenInfoString() {
124         return null;
125     }
126 
127     @Override
getEarlyWarningSignal(Context context, String id)128     public boolean getEarlyWarningSignal(Context context, String id) {
129         return false;
130     }
131 
132     @Override
isSmartBatterySupported()133     public boolean isSmartBatterySupported() {
134         return mContext.getResources().getBoolean(
135                 com.android.internal.R.bool.config_smart_battery_available);
136     }
137 }
138