blob: 08143645ef7b71b9520086b74728223321d028d7 [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;
Alex Kulesza82dbcd92017-06-29 12:26:59 -040025import android.util.SparseIntArray;
26
jackqdyulei238c1c02017-02-23 17:31:00 -080027import com.android.internal.os.BatterySipper;
28import com.android.internal.util.ArrayUtils;
jackqdyuleia224b012017-01-27 16:11:13 -080029
30public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider {
jackqdyulei238c1c02017-02-23 17:31:00 -080031
32 private static final String PACKAGE_CALENDAR_PROVIDER = "com.android.providers.calendar";
jackqdyulei44e89682017-02-28 13:51:24 -080033 private static final String PACKAGE_MEDIA_PROVIDER = "com.android.providers.media";
jackqdyulei1e95b742017-03-27 16:38:47 -070034 private static final String PACKAGE_SYSTEMUI = "com.android.systemui";
jackqdyulei44e89682017-02-28 13:51:24 -080035 private static final String[] PACKAGES_SYSTEM = {PACKAGE_MEDIA_PROVIDER,
jackqdyulei1e95b742017-03-27 16:38:47 -070036 PACKAGE_CALENDAR_PROVIDER, PACKAGE_SYSTEMUI};
jackqdyulei238c1c02017-02-23 17:31:00 -080037
38 protected PackageManager mPackageManager;
39
40 public PowerUsageFeatureProviderImpl(Context context) {
41 mPackageManager = context.getPackageManager();
42 }
43
44 @Override
45 public boolean isTypeService(BatterySipper sipper) {
46 return false;
47 }
48
49 @Override
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;
jackqdyulei44e89682017-02-28 13:51:24 -080056 } else if (sipper.mPackages != null) {
57 for (final String packageName : sipper.mPackages) {
58 if (ArrayUtils.contains(PACKAGES_SYSTEM, packageName)) {
59 return true;
60 }
61 }
jackqdyulei238c1c02017-02-23 17:31:00 -080062 }
jackqdyulei44e89682017-02-28 13:51:24 -080063
64 return false;
jackqdyulei238c1c02017-02-23 17:31:00 -080065 }
66
jackqdyuleia224b012017-01-27 16:11:13 -080067 @Override
68 public boolean isLocationSettingEnabled(String[] packages) {
69 return false;
70 }
71
72 @Override
73 public boolean isAdditionalBatteryInfoEnabled() {
74 return false;
75 }
76
77 @Override
78 public Intent getAdditionalBatteryInfoIntent() {
79 return null;
80 }
81
82 @Override
83 public boolean isAdvancedUiEnabled() {
jackqdyulei1d51b3c2017-05-23 15:35:54 -070084 return true;
jackqdyuleia224b012017-01-27 16:11:13 -080085 }
jackqdyuleiacc195f2017-02-13 15:14:51 -080086
87 @Override
jackqdyulei51152652017-02-15 16:27:03 -080088 public boolean isPowerAccountingToggleEnabled() {
jackqdyulei1d51b3c2017-05-23 15:35:54 -070089 return true;
jackqdyulei51152652017-02-15 16:27:03 -080090 }
jackqdyuleid1a1fed2017-04-26 10:48:05 -070091
92 @Override
Salvador Martinez126c0322017-05-03 18:58:27 -070093 public long getEnhancedBatteryPrediction(Context context) {
94 return -1;
95 }
96
97 @Override
Alex Kulesza82dbcd92017-06-29 12:26:59 -040098 public SparseIntArray getEnhancedBatteryPredictionCurve(Context context, long zeroTime) {
99 return null;
100 }
101
102 @Override
Salvador Martinez126c0322017-05-03 18:58:27 -0700103 public boolean isEnhancedBatteryPredictionEnabled(Context context) {
104 return false;
105 }
106
107 @Override
108 public Uri getEnhancedBatteryPredictionUri() {
109 return null;
110 }
111
112 @Override
113 public long getTimeRemainingEstimate(Cursor cursor) {
114 return 0;
115 }
jackqdyulei0dce3c02017-05-03 15:15:41 -0700116
117 @Override
Salvador Martinezf4727ea2017-05-22 17:26:39 -0700118 public String getEnhancedEstimateDebugString(String timeRemaining) {
119 return null;
120 }
121
122 @Override
123 public boolean isEstimateDebugEnabled() {
124 return false;
125 }
126
127 @Override
128 public String getOldEstimateDebugString(String timeRemaining) {
129 return null;
130 }
Salvador Martinezcbefbc22017-06-19 10:33:41 -0700131
132 @Override
133 public String getAdvancedUsageScreenInfoString() {
134 return null;
135 }
jackqdyuleia224b012017-01-27 16:11:13 -0800136}