blob: 1d8e03ac7b579c1f70471dec9a25f198c934a565 [file] [log] [blame]
jackqdyuleia224b012017-01-27 16:11:13 -08001/*
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
17package com.android.settings.fuelgauge;
18
jackqdyulei238c1c02017-02-23 17:31:00 -080019import android.content.Context;
jackqdyuleia224b012017-01-27 16:11:13 -080020import android.content.Intent;
jackqdyulei238c1c02017-02-23 17:31:00 -080021import android.content.pm.PackageManager;
Salvador Martinez126c0322017-05-03 18:58:27 -070022import android.database.Cursor;
23import android.net.Uri;
jackqdyulei238c1c02017-02-23 17:31:00 -080024import android.os.Process;
25import com.android.internal.os.BatterySipper;
26import com.android.internal.util.ArrayUtils;
jackqdyulei0dce3c02017-05-03 15:15:41 -070027import com.android.settings.fuelgauge.anomaly.Anomaly;
jackqdyuleia224b012017-01-27 16:11:13 -080028
29public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider {
jackqdyulei238c1c02017-02-23 17:31:00 -080030
31 private static final String PACKAGE_CALENDAR_PROVIDER = "com.android.providers.calendar";
jackqdyulei44e89682017-02-28 13:51:24 -080032 private static final String PACKAGE_MEDIA_PROVIDER = "com.android.providers.media";
jackqdyulei1e95b742017-03-27 16:38:47 -070033 private static final String PACKAGE_SYSTEMUI = "com.android.systemui";
jackqdyulei44e89682017-02-28 13:51:24 -080034 private static final String[] PACKAGES_SYSTEM = {PACKAGE_MEDIA_PROVIDER,
jackqdyulei1e95b742017-03-27 16:38:47 -070035 PACKAGE_CALENDAR_PROVIDER, PACKAGE_SYSTEMUI};
jackqdyulei238c1c02017-02-23 17:31:00 -080036
37 protected PackageManager mPackageManager;
38
39 public PowerUsageFeatureProviderImpl(Context context) {
40 mPackageManager = context.getPackageManager();
41 }
42
43 @Override
44 public boolean isTypeService(BatterySipper sipper) {
45 return false;
46 }
47
48 @Override
49 public boolean isTypeSystem(BatterySipper sipper) {
50 final int uid = sipper.uidObj == null ? -1 : sipper.getUid();
51 sipper.mPackages = mPackageManager.getPackagesForUid(uid);
52 // Classify all the sippers to type system if the range of uid is 0...FIRST_APPLICATION_UID
53 if (uid >= Process.ROOT_UID && uid < Process.FIRST_APPLICATION_UID) {
54 return true;
jackqdyulei44e89682017-02-28 13:51:24 -080055 } else if (sipper.mPackages != null) {
56 for (final String packageName : sipper.mPackages) {
57 if (ArrayUtils.contains(PACKAGES_SYSTEM, packageName)) {
58 return true;
59 }
60 }
jackqdyulei238c1c02017-02-23 17:31:00 -080061 }
jackqdyulei44e89682017-02-28 13:51:24 -080062
63 return false;
jackqdyulei238c1c02017-02-23 17:31:00 -080064 }
65
jackqdyuleia224b012017-01-27 16:11:13 -080066 @Override
67 public boolean isLocationSettingEnabled(String[] packages) {
68 return false;
69 }
70
71 @Override
72 public boolean isAdditionalBatteryInfoEnabled() {
73 return false;
74 }
75
76 @Override
77 public Intent getAdditionalBatteryInfoIntent() {
78 return null;
79 }
80
81 @Override
82 public boolean isAdvancedUiEnabled() {
jackqdyulei1d51b3c2017-05-23 15:35:54 -070083 return true;
jackqdyuleia224b012017-01-27 16:11:13 -080084 }
jackqdyuleiacc195f2017-02-13 15:14:51 -080085
86 @Override
jackqdyulei51152652017-02-15 16:27:03 -080087 public boolean isPowerAccountingToggleEnabled() {
jackqdyulei1d51b3c2017-05-23 15:35:54 -070088 return true;
jackqdyulei51152652017-02-15 16:27:03 -080089 }
jackqdyuleid1a1fed2017-04-26 10:48:05 -070090
91 @Override
92 public boolean isAnomalyDetectionEnabled() {
93 return false;
94 }
Salvador Martinez126c0322017-05-03 18:58:27 -070095
96 @Override
97 public long getEnhancedBatteryPrediction(Context context) {
98 return -1;
99 }
100
101 @Override
102 public boolean isEnhancedBatteryPredictionEnabled(Context context) {
103 return false;
104 }
105
106 @Override
107 public Uri getEnhancedBatteryPredictionUri() {
108 return null;
109 }
110
111 @Override
112 public long getTimeRemainingEstimate(Cursor cursor) {
113 return 0;
114 }
jackqdyulei0dce3c02017-05-03 15:15:41 -0700115
116 @Override
117 public boolean isAnomalyDetectorEnabled(@Anomaly.AnomalyType int type) {
118 return false;
119 }
Salvador Martinezf4727ea2017-05-22 17:26:39 -0700120
121 @Override
122 public String getEnhancedEstimateDebugString(String timeRemaining) {
123 return null;
124 }
125
126 @Override
127 public boolean isEstimateDebugEnabled() {
128 return false;
129 }
130
131 @Override
132 public String getOldEstimateDebugString(String timeRemaining) {
133 return null;
134 }
Salvador Martinezcbefbc22017-06-19 10:33:41 -0700135
136 @Override
137 public String getAdvancedUsageScreenInfoString() {
138 return null;
139 }
jackqdyuleia224b012017-01-27 16:11:13 -0800140}