1348bcc1e81ab264a4eb3805fda894bdc349b5573jackqdyulei/*
2348bcc1e81ab264a4eb3805fda894bdc349b5573jackqdyulei * Copyright (C) 2016 The Android Open Source Project
3348bcc1e81ab264a4eb3805fda894bdc349b5573jackqdyulei *
4348bcc1e81ab264a4eb3805fda894bdc349b5573jackqdyulei * Licensed under the Apache License, Version 2.0 (the "License");
5348bcc1e81ab264a4eb3805fda894bdc349b5573jackqdyulei * you may not use this file except in compliance with the License.
6348bcc1e81ab264a4eb3805fda894bdc349b5573jackqdyulei * You may obtain a copy of the License at
7348bcc1e81ab264a4eb3805fda894bdc349b5573jackqdyulei *
8348bcc1e81ab264a4eb3805fda894bdc349b5573jackqdyulei *      http://www.apache.org/licenses/LICENSE-2.0
9348bcc1e81ab264a4eb3805fda894bdc349b5573jackqdyulei *
10348bcc1e81ab264a4eb3805fda894bdc349b5573jackqdyulei * Unless required by applicable law or agreed to in writing, software
11348bcc1e81ab264a4eb3805fda894bdc349b5573jackqdyulei * distributed under the License is distributed on an "AS IS" BASIS,
12348bcc1e81ab264a4eb3805fda894bdc349b5573jackqdyulei * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13348bcc1e81ab264a4eb3805fda894bdc349b5573jackqdyulei * See the License for the specific language governing permissions and
14348bcc1e81ab264a4eb3805fda894bdc349b5573jackqdyulei * limitations under the License.
15348bcc1e81ab264a4eb3805fda894bdc349b5573jackqdyulei */
16348bcc1e81ab264a4eb3805fda894bdc349b5573jackqdyulei
17348bcc1e81ab264a4eb3805fda894bdc349b5573jackqdyuleipackage com.android.settings.fuelgauge;
18348bcc1e81ab264a4eb3805fda894bdc349b5573jackqdyulei
19126c032afaa523bb27dc09a45215bb3d0b0f9196Salvador Martinezimport android.content.Context;
206a43a06cac12494cd27e5b5cad4149a272d90038Jaewoong Jungimport android.content.Intent;
21126c032afaa523bb27dc09a45215bb3d0b0f9196Salvador Martinezimport android.database.Cursor;
22126c032afaa523bb27dc09a45215bb3d0b0f9196Salvador Martinezimport android.net.Uri;
2382dbcd973dc8b3aa73c877cc53ef538c62cb8c75Alex Kuleszaimport android.util.SparseIntArray;
2482dbcd973dc8b3aa73c877cc53ef538c62cb8c75Alex Kulesza
25238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyuleiimport com.android.internal.os.BatterySipper;
266a43a06cac12494cd27e5b5cad4149a272d90038Jaewoong Jung
27348bcc1e81ab264a4eb3805fda894bdc349b5573jackqdyulei/**
28348bcc1e81ab264a4eb3805fda894bdc349b5573jackqdyulei * Feature Provider used in power usage
29348bcc1e81ab264a4eb3805fda894bdc349b5573jackqdyulei */
30348bcc1e81ab264a4eb3805fda894bdc349b5573jackqdyuleipublic interface PowerUsageFeatureProvider {
31238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei    /**
32238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei     * Check whether location setting is enabled
33238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei     */
34238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei    boolean isLocationSettingEnabled(String[] packages);
35238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei
36238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei    /**
37238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei     * Check whether additional battery info feature is enabled.
38238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei     */
39238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei    boolean isAdditionalBatteryInfoEnabled();
40238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei
41238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei    /**
42238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei     * Gets an {@link Intent} to show additional battery info.
43238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei     */
44238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei    Intent getAdditionalBatteryInfoIntent();
45238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei
46238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei    /**
47238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei     * Check whether advanced ui is enabled
48238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei     */
49238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei    boolean isAdvancedUiEnabled();
50238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei
51238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei    /**
52238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei     * Check whether it is type service
53238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei     */
54238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei    boolean isTypeService(BatterySipper sipper);
55238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei
56238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei    /**
57238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei     * Check whether it is type system
58238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei     */
59238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei    boolean isTypeSystem(BatterySipper sipper);
60238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei
61238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei    /**
62238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei     * Check whether the toggle for power accounting is enabled
63238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei     */
64238c1c000bac1fbe20b3dd56692d2989e79bef21jackqdyulei    boolean isPowerAccountingToggleEnabled();
65d1a1fede6f6e96ecd64455efe12631b39c138f3ajackqdyulei
66d1a1fede6f6e96ecd64455efe12631b39c138f3ajackqdyulei    /**
67126c032afaa523bb27dc09a45215bb3d0b0f9196Salvador Martinez     * Returns an improved prediction for battery time remaining.
68126c032afaa523bb27dc09a45215bb3d0b0f9196Salvador Martinez     */
69126c032afaa523bb27dc09a45215bb3d0b0f9196Salvador Martinez    long getEnhancedBatteryPrediction(Context context);
70126c032afaa523bb27dc09a45215bb3d0b0f9196Salvador Martinez
71126c032afaa523bb27dc09a45215bb3d0b0f9196Salvador Martinez    /**
7282dbcd973dc8b3aa73c877cc53ef538c62cb8c75Alex Kulesza     * Returns an improved projection curve for future battery level.
7382dbcd973dc8b3aa73c877cc53ef538c62cb8c75Alex Kulesza     * @param zeroTime timestamps (array keys) are shifted by this amount
7482dbcd973dc8b3aa73c877cc53ef538c62cb8c75Alex Kulesza     */
7582dbcd973dc8b3aa73c877cc53ef538c62cb8c75Alex Kulesza    SparseIntArray getEnhancedBatteryPredictionCurve(Context context, long zeroTime);
7682dbcd973dc8b3aa73c877cc53ef538c62cb8c75Alex Kulesza
7782dbcd973dc8b3aa73c877cc53ef538c62cb8c75Alex Kulesza    /**
78126c032afaa523bb27dc09a45215bb3d0b0f9196Salvador Martinez     * Checks whether the toggle for enhanced battery predictions is enabled.
79126c032afaa523bb27dc09a45215bb3d0b0f9196Salvador Martinez     */
80126c032afaa523bb27dc09a45215bb3d0b0f9196Salvador Martinez    boolean isEnhancedBatteryPredictionEnabled(Context context);
81126c032afaa523bb27dc09a45215bb3d0b0f9196Salvador Martinez
82126c032afaa523bb27dc09a45215bb3d0b0f9196Salvador Martinez    /**
83126c032afaa523bb27dc09a45215bb3d0b0f9196Salvador Martinez     * Returns the Uri used to query for an enhanced battery prediction from a cursor loader.
84126c032afaa523bb27dc09a45215bb3d0b0f9196Salvador Martinez     */
85126c032afaa523bb27dc09a45215bb3d0b0f9196Salvador Martinez    Uri getEnhancedBatteryPredictionUri();
86126c032afaa523bb27dc09a45215bb3d0b0f9196Salvador Martinez
87126c032afaa523bb27dc09a45215bb3d0b0f9196Salvador Martinez    /**
88126c032afaa523bb27dc09a45215bb3d0b0f9196Salvador Martinez     * Returns the the estimate in the cursor as a long or -1 if the cursor is null
89126c032afaa523bb27dc09a45215bb3d0b0f9196Salvador Martinez     */
90126c032afaa523bb27dc09a45215bb3d0b0f9196Salvador Martinez    long getTimeRemainingEstimate(Cursor cursor);
910dce3c076410e7a14b236a8bbd74083c01325e92jackqdyulei
920dce3c076410e7a14b236a8bbd74083c01325e92jackqdyulei    /**
93f4727ea07fe5613d81a91080353bd3a02dd71388Salvador Martinez     * Checks whether debugging should be enabled for battery estimates.
94f4727ea07fe5613d81a91080353bd3a02dd71388Salvador Martinez     * @return
95f4727ea07fe5613d81a91080353bd3a02dd71388Salvador Martinez     */
96f4727ea07fe5613d81a91080353bd3a02dd71388Salvador Martinez    boolean isEstimateDebugEnabled();
97f4727ea07fe5613d81a91080353bd3a02dd71388Salvador Martinez
98f4727ea07fe5613d81a91080353bd3a02dd71388Salvador Martinez    /**
99f4727ea07fe5613d81a91080353bd3a02dd71388Salvador Martinez     * Converts the provided string containing the remaining time into a debug string for enhanced
100f4727ea07fe5613d81a91080353bd3a02dd71388Salvador Martinez     * estimates.
101f4727ea07fe5613d81a91080353bd3a02dd71388Salvador Martinez     * @param timeRemaining
102f4727ea07fe5613d81a91080353bd3a02dd71388Salvador Martinez     * @return A string containing the estimate and a label indicating it is an enhanced estimate
103f4727ea07fe5613d81a91080353bd3a02dd71388Salvador Martinez     */
104f4727ea07fe5613d81a91080353bd3a02dd71388Salvador Martinez    String getEnhancedEstimateDebugString(String timeRemaining);
105f4727ea07fe5613d81a91080353bd3a02dd71388Salvador Martinez
106f4727ea07fe5613d81a91080353bd3a02dd71388Salvador Martinez    /**
107f4727ea07fe5613d81a91080353bd3a02dd71388Salvador Martinez     * Converts the provided string containing the remaining time into a debug string.
108f4727ea07fe5613d81a91080353bd3a02dd71388Salvador Martinez     * @param timeRemaining
109f4727ea07fe5613d81a91080353bd3a02dd71388Salvador Martinez     * @return A string containing the estimate and a label indicating it is a normal estimate
110f4727ea07fe5613d81a91080353bd3a02dd71388Salvador Martinez     */
111f4727ea07fe5613d81a91080353bd3a02dd71388Salvador Martinez    String getOldEstimateDebugString(String timeRemaining);
112cbefbc261f7f1f9d6a12909e66d1764a3c1031a9Salvador Martinez
113cbefbc261f7f1f9d6a12909e66d1764a3c1031a9Salvador Martinez    /**
114cbefbc261f7f1f9d6a12909e66d1764a3c1031a9Salvador Martinez     * Returns the string to show in the advanced usage battery page when enhanced estimates are
115cbefbc261f7f1f9d6a12909e66d1764a3c1031a9Salvador Martinez     * enabled. This string notifies users that the estimate is using enhanced prediction.
116cbefbc261f7f1f9d6a12909e66d1764a3c1031a9Salvador Martinez     */
117cbefbc261f7f1f9d6a12909e66d1764a3c1031a9Salvador Martinez    String getAdvancedUsageScreenInfoString();
118348bcc1e81ab264a4eb3805fda894bdc349b5573jackqdyulei}
119