16f357d3284a833cc50a990e14b39f389b8972254Jeff Brown/* 26f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * Copyright (C) 2014 The Android Open Source Project 36f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * 46f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * Licensed under the Apache License, Version 2.0 (the "License"); 56f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * you may not use this file except in compliance with the License. 66f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * You may obtain a copy of the License at 76f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * 86f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * http://www.apache.org/licenses/LICENSE-2.0 96f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * 106f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * Unless required by applicable law or agreed to in writing, software 116f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * distributed under the License is distributed on an "AS IS" BASIS, 126f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * See the License for the specific language governing permissions and 146f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * limitations under the License. 156f357d3284a833cc50a990e14b39f389b8972254Jeff Brown */ 166f357d3284a833cc50a990e14b39f389b8972254Jeff Brown 176f357d3284a833cc50a990e14b39f389b8972254Jeff Brownpackage android.os; 186f357d3284a833cc50a990e14b39f389b8972254Jeff Brown 19970d4132ea28e748c1010be39450a98bbf7466f3Jeff Brownimport android.view.Display; 20970d4132ea28e748c1010be39450a98bbf7466f3Jeff Brown 216f357d3284a833cc50a990e14b39f389b8972254Jeff Brown/** 226f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * Power manager local system service interface. 236f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * 246f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * @hide Only for use within the system server. 256f357d3284a833cc50a990e14b39f389b8972254Jeff Brown */ 264ccb823a9f62e57f9d221f83a97e82967e79a9e5Jeff Brownpublic abstract class PowerManagerInternal { 276f357d3284a833cc50a990e14b39f389b8972254Jeff Brown /** 28fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown * Wakefulness: The device is asleep. It can only be awoken by a call to wakeUp(). 29fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown * The screen should be off or in the process of being turned off by the display controller. 30fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown * The device typically passes through the dozing state first. 31fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown */ 32fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown public static final int WAKEFULNESS_ASLEEP = 0; 33fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown 34fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown /** 35fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown * Wakefulness: The device is fully awake. It can be put to sleep by a call to goToSleep(). 36fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown * When the user activity timeout expires, the device may start dreaming or go to sleep. 37fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown */ 38fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown public static final int WAKEFULNESS_AWAKE = 1; 39fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown 40fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown /** 41fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown * Wakefulness: The device is dreaming. It can be awoken by a call to wakeUp(), 42fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown * which ends the dream. The device goes to sleep when goToSleep() is called, when 43fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown * the dream ends or when unplugged. 44fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown * User activity may brighten the screen but does not end the dream. 45fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown */ 46fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown public static final int WAKEFULNESS_DREAMING = 2; 47fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown 48fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown /** 49fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown * Wakefulness: The device is dozing. It is almost asleep but is allowing a special 50fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown * low-power "doze" dream to run which keeps the display on but lets the application 51fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown * processor be suspended. It can be awoken by a call to wakeUp() which ends the dream. 52fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown * The device fully goes to sleep if the dream cannot be started or ends on its own. 53fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown */ 54fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown public static final int WAKEFULNESS_DOZING = 3; 55fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown 56a4d22d718affbc7145d1012157feb819557b5c06Michael Wright 57a4d22d718affbc7145d1012157feb819557b5c06Michael Wright /** 5843e38de2530fecbbdea81c52d0fde90333432356Ruchi Kandoi * Power hint: 5943e38de2530fecbbdea81c52d0fde90333432356Ruchi Kandoi * Interaction: The user is interacting with the device. The corresponding data field must be 6098f03f98acb4bf8020be21be0f261f3d285b7d2eWei Wang * the expected duration of the interaction, or 0 if unknown. 61a4d22d718affbc7145d1012157feb819557b5c06Michael Wright * 6298f03f98acb4bf8020be21be0f261f3d285b7d2eWei Wang * Sustained Performance Mode: The corresponding data field must be Enable/Disable 6398f03f98acb4bf8020be21be0f261f3d285b7d2eWei Wang * Sustained Performance Mode. 6498f03f98acb4bf8020be21be0f261f3d285b7d2eWei Wang * 6598f03f98acb4bf8020be21be0f261f3d285b7d2eWei Wang * Launch: This is specific for activity launching. The corresponding data field must be 6698f03f98acb4bf8020be21be0f261f3d285b7d2eWei Wang * the expected duration of the required boost, or 0 if unknown. 6743e38de2530fecbbdea81c52d0fde90333432356Ruchi Kandoi * 6843e38de2530fecbbdea81c52d0fde90333432356Ruchi Kandoi * These must be kept in sync with the values in hardware/libhardware/include/hardware/power.h 69a4d22d718affbc7145d1012157feb819557b5c06Michael Wright */ 70a4d22d718affbc7145d1012157feb819557b5c06Michael Wright public static final int POWER_HINT_INTERACTION = 2; 7143e38de2530fecbbdea81c52d0fde90333432356Ruchi Kandoi public static final int POWER_HINT_SUSTAINED_PERFORMANCE_MODE = 6; 7298f03f98acb4bf8020be21be0f261f3d285b7d2eWei Wang public static final int POWER_HINT_LAUNCH = 8; 73a4d22d718affbc7145d1012157feb819557b5c06Michael Wright 74fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown public static String wakefulnessToString(int wakefulness) { 75fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown switch (wakefulness) { 76fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown case WAKEFULNESS_ASLEEP: 77fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown return "Asleep"; 78fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown case WAKEFULNESS_AWAKE: 79fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown return "Awake"; 80fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown case WAKEFULNESS_DREAMING: 81fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown return "Dreaming"; 82fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown case WAKEFULNESS_DOZING: 83fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown return "Dozing"; 84fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown default: 85fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown return Integer.toString(wakefulness); 86fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown } 87fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown } 88fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown 89fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown /** 90fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown * Returns true if the wakefulness state represents an interactive state 91fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown * as defined by {@link android.os.PowerManager#isInteractive}. 92fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown */ 93fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown public static boolean isInteractive(int wakefulness) { 94fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown return wakefulness == WAKEFULNESS_AWAKE || wakefulness == WAKEFULNESS_DREAMING; 95fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown } 96fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown 97fbe96706bb9754f9ea3f6345f32e058a45ad10b4Jeff Brown /** 986f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * Used by the window manager to override the screen brightness based on the 996f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * current foreground activity. 1006f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * 1016f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * This method must only be called by the window manager. 1026f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * 1036f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * @param brightness The overridden brightness, or -1 to disable the override. 1046f357d3284a833cc50a990e14b39f389b8972254Jeff Brown */ 1054ccb823a9f62e57f9d221f83a97e82967e79a9e5Jeff Brown public abstract void setScreenBrightnessOverrideFromWindowManager(int brightness); 1066f357d3284a833cc50a990e14b39f389b8972254Jeff Brown 1076f357d3284a833cc50a990e14b39f389b8972254Jeff Brown /** 1086f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * Used by the window manager to override the button brightness based on the 1096f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * current foreground activity. 1106f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * 1116f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * This method must only be called by the window manager. 1126f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * 1136f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * @param brightness The overridden brightness, or -1 to disable the override. 1146f357d3284a833cc50a990e14b39f389b8972254Jeff Brown */ 1154ccb823a9f62e57f9d221f83a97e82967e79a9e5Jeff Brown public abstract void setButtonBrightnessOverrideFromWindowManager(int brightness); 1166f357d3284a833cc50a990e14b39f389b8972254Jeff Brown 1176f357d3284a833cc50a990e14b39f389b8972254Jeff Brown /** 1186f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * Used by the window manager to override the user activity timeout based on the 1196f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * current foreground activity. It can only be used to make the timeout shorter 1206f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * than usual, not longer. 1216f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * 1226f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * This method must only be called by the window manager. 1236f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * 1246f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * @param timeoutMillis The overridden timeout, or -1 to disable the override. 1256f357d3284a833cc50a990e14b39f389b8972254Jeff Brown */ 1264ccb823a9f62e57f9d221f83a97e82967e79a9e5Jeff Brown public abstract void setUserActivityTimeoutOverrideFromWindowManager(long timeoutMillis); 1276f357d3284a833cc50a990e14b39f389b8972254Jeff Brown 128970d4132ea28e748c1010be39450a98bbf7466f3Jeff Brown /** 12956ecfcce6c88fc80cf509effcebb124bbe0c79f8Nick Armstrong-Crews * Used by the window manager to tell the power manager that the user is no longer actively 13056ecfcce6c88fc80cf509effcebb124bbe0c79f8Nick Armstrong-Crews * using the device. 13156ecfcce6c88fc80cf509effcebb124bbe0c79f8Nick Armstrong-Crews */ 13256ecfcce6c88fc80cf509effcebb124bbe0c79f8Nick Armstrong-Crews public abstract void setUserInactiveOverrideFromWindowManager(); 13356ecfcce6c88fc80cf509effcebb124bbe0c79f8Nick Armstrong-Crews 13456ecfcce6c88fc80cf509effcebb124bbe0c79f8Nick Armstrong-Crews /** 1355ce1cb240b13db98fbdc21e1ef069b5f9cec8d72Jeff Brown * Used by device administration to set the maximum screen off timeout. 1365ce1cb240b13db98fbdc21e1ef069b5f9cec8d72Jeff Brown * 1375ce1cb240b13db98fbdc21e1ef069b5f9cec8d72Jeff Brown * This method must only be called by the device administration policy manager. 1385ce1cb240b13db98fbdc21e1ef069b5f9cec8d72Jeff Brown */ 1395ce1cb240b13db98fbdc21e1ef069b5f9cec8d72Jeff Brown public abstract void setMaximumScreenOffTimeoutFromDeviceAdmin(int timeMs); 1405ce1cb240b13db98fbdc21e1ef069b5f9cec8d72Jeff Brown 1415ce1cb240b13db98fbdc21e1ef069b5f9cec8d72Jeff Brown /** 142970d4132ea28e748c1010be39450a98bbf7466f3Jeff Brown * Used by the dream manager to override certain properties while dozing. 143970d4132ea28e748c1010be39450a98bbf7466f3Jeff Brown * 14488e98dfa59e68a860d8c3b462ec03bc0b06d6b5cDianne Hackborn * @param screenState The overridden screen state, or {@link Display#STATE_UNKNOWN} 145970d4132ea28e748c1010be39450a98bbf7466f3Jeff Brown * to disable the override. 146970d4132ea28e748c1010be39450a98bbf7466f3Jeff Brown * @param screenBrightness The overridden screen brightness, or 147970d4132ea28e748c1010be39450a98bbf7466f3Jeff Brown * {@link PowerManager#BRIGHTNESS_DEFAULT} to disable the override. 148970d4132ea28e748c1010be39450a98bbf7466f3Jeff Brown */ 149970d4132ea28e748c1010be39450a98bbf7466f3Jeff Brown public abstract void setDozeOverrideFromDreamManager( 150970d4132ea28e748c1010be39450a98bbf7466f3Jeff Brown int screenState, int screenBrightness); 151970d4132ea28e748c1010be39450a98bbf7466f3Jeff Brown 152cbefd8dd2befcb768f911a63becc427ec4c13250Dianne Hackborn public abstract boolean getLowPowerModeEnabled(); 153cbefd8dd2befcb768f911a63becc427ec4c13250Dianne Hackborn 1542c43c339de5aaf4fef58aa9b5ac3af48609263a8Jeff Brown public abstract void registerLowPowerModeObserver(LowPowerModeListener listener); 1552c43c339de5aaf4fef58aa9b5ac3af48609263a8Jeff Brown 156cbefd8dd2befcb768f911a63becc427ec4c13250Dianne Hackborn public interface LowPowerModeListener { 157cbefd8dd2befcb768f911a63becc427ec4c13250Dianne Hackborn public void onLowPowerModeChanged(boolean enabled); 158cbefd8dd2befcb768f911a63becc427ec4c13250Dianne Hackborn } 15988e98dfa59e68a860d8c3b462ec03bc0b06d6b5cDianne Hackborn 16008c47a5dece977a55d250d98bda9e2a8df8b6ed0Dianne Hackborn public abstract boolean setDeviceIdleMode(boolean enabled); 16108c47a5dece977a55d250d98bda9e2a8df8b6ed0Dianne Hackborn 16208c47a5dece977a55d250d98bda9e2a8df8b6ed0Dianne Hackborn public abstract boolean setLightDeviceIdleMode(boolean enabled); 1638d66b3fbf5d8036e25d64a8472bcd2b6b7892a1aDianne Hackborn 1648d66b3fbf5d8036e25d64a8472bcd2b6b7892a1aDianne Hackborn public abstract void setDeviceIdleWhitelist(int[] appids); 165d23e0d6901935588f9472bd7073fea0009581e9bDianne Hackborn 166af575b9f8e1b59be9c8862b6a65c0dcb88145a23Amith Yamasani public abstract void setDeviceIdleTempWhitelist(int[] appids); 167af575b9f8e1b59be9c8862b6a65c0dcb88145a23Amith Yamasani 168d23e0d6901935588f9472bd7073fea0009581e9bDianne Hackborn public abstract void updateUidProcState(int uid, int procState); 169d23e0d6901935588f9472bd7073fea0009581e9bDianne Hackborn 170d23e0d6901935588f9472bd7073fea0009581e9bDianne Hackborn public abstract void uidGone(int uid); 171a4d22d718affbc7145d1012157feb819557b5c06Michael Wright 172a4d22d718affbc7145d1012157feb819557b5c06Michael Wright public abstract void powerHint(int hintId, int data); 1736f357d3284a833cc50a990e14b39f389b8972254Jeff Brown} 174