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