1 /* 2 * Copyright (C) 2014 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 17 package android.os; 18 19 import android.view.Display; 20 21 /** 22 * Power manager local system service interface. 23 * 24 * @hide Only for use within the system server. 25 */ 26 public abstract class PowerManagerInternal { 27 /** 28 * Wakefulness: The device is asleep. It can only be awoken by a call to wakeUp(). 29 * The screen should be off or in the process of being turned off by the display controller. 30 * The device typically passes through the dozing state first. 31 */ 32 public static final int WAKEFULNESS_ASLEEP = 0; 33 34 /** 35 * Wakefulness: The device is fully awake. It can be put to sleep by a call to goToSleep(). 36 * When the user activity timeout expires, the device may start dreaming or go to sleep. 37 */ 38 public static final int WAKEFULNESS_AWAKE = 1; 39 40 /** 41 * Wakefulness: The device is dreaming. It can be awoken by a call to wakeUp(), 42 * which ends the dream. The device goes to sleep when goToSleep() is called, when 43 * the dream ends or when unplugged. 44 * User activity may brighten the screen but does not end the dream. 45 */ 46 public static final int WAKEFULNESS_DREAMING = 2; 47 48 /** 49 * Wakefulness: The device is dozing. It is almost asleep but is allowing a special 50 * low-power "doze" dream to run which keeps the display on but lets the application 51 * processor be suspended. It can be awoken by a call to wakeUp() which ends the dream. 52 * The device fully goes to sleep if the dream cannot be started or ends on its own. 53 */ 54 public static final int WAKEFULNESS_DOZING = 3; 55 wakefulnessToString(int wakefulness)56 public static String wakefulnessToString(int wakefulness) { 57 switch (wakefulness) { 58 case WAKEFULNESS_ASLEEP: 59 return "Asleep"; 60 case WAKEFULNESS_AWAKE: 61 return "Awake"; 62 case WAKEFULNESS_DREAMING: 63 return "Dreaming"; 64 case WAKEFULNESS_DOZING: 65 return "Dozing"; 66 default: 67 return Integer.toString(wakefulness); 68 } 69 } 70 71 /** 72 * Returns true if the wakefulness state represents an interactive state 73 * as defined by {@link android.os.PowerManager#isInteractive}. 74 */ isInteractive(int wakefulness)75 public static boolean isInteractive(int wakefulness) { 76 return wakefulness == WAKEFULNESS_AWAKE || wakefulness == WAKEFULNESS_DREAMING; 77 } 78 79 /** 80 * Used by the window manager to override the screen brightness based on the 81 * current foreground activity. 82 * 83 * This method must only be called by the window manager. 84 * 85 * @param brightness The overridden brightness, or -1 to disable the override. 86 */ setScreenBrightnessOverrideFromWindowManager(int brightness)87 public abstract void setScreenBrightnessOverrideFromWindowManager(int brightness); 88 89 /** 90 * Used by the window manager to override the user activity timeout based on the 91 * current foreground activity. It can only be used to make the timeout shorter 92 * than usual, not longer. 93 * 94 * This method must only be called by the window manager. 95 * 96 * @param timeoutMillis The overridden timeout, or -1 to disable the override. 97 */ setUserActivityTimeoutOverrideFromWindowManager(long timeoutMillis)98 public abstract void setUserActivityTimeoutOverrideFromWindowManager(long timeoutMillis); 99 100 /** 101 * Used by the window manager to tell the power manager that the user is no longer actively 102 * using the device. 103 */ setUserInactiveOverrideFromWindowManager()104 public abstract void setUserInactiveOverrideFromWindowManager(); 105 106 /** 107 * Used by device administration to set the maximum screen off timeout. 108 * 109 * This method must only be called by the device administration policy manager. 110 */ setMaximumScreenOffTimeoutFromDeviceAdmin(int timeMs)111 public abstract void setMaximumScreenOffTimeoutFromDeviceAdmin(int timeMs); 112 113 /** 114 * Used by the dream manager to override certain properties while dozing. 115 * 116 * @param screenState The overridden screen state, or {@link Display#STATE_UNKNOWN} 117 * to disable the override. 118 * @param screenBrightness The overridden screen brightness, or 119 * {@link PowerManager#BRIGHTNESS_DEFAULT} to disable the override. 120 */ setDozeOverrideFromDreamManager( int screenState, int screenBrightness)121 public abstract void setDozeOverrideFromDreamManager( 122 int screenState, int screenBrightness); 123 getLowPowerState(int serviceType)124 public abstract PowerSaveState getLowPowerState(int serviceType); 125 registerLowPowerModeObserver(LowPowerModeListener listener)126 public abstract void registerLowPowerModeObserver(LowPowerModeListener listener); 127 128 public interface LowPowerModeListener { getServiceType()129 int getServiceType(); onLowPowerModeChanged(PowerSaveState state)130 void onLowPowerModeChanged(PowerSaveState state); 131 } 132 setDeviceIdleMode(boolean enabled)133 public abstract boolean setDeviceIdleMode(boolean enabled); 134 setLightDeviceIdleMode(boolean enabled)135 public abstract boolean setLightDeviceIdleMode(boolean enabled); 136 setDeviceIdleWhitelist(int[] appids)137 public abstract void setDeviceIdleWhitelist(int[] appids); 138 setDeviceIdleTempWhitelist(int[] appids)139 public abstract void setDeviceIdleTempWhitelist(int[] appids); 140 startUidChanges()141 public abstract void startUidChanges(); 142 finishUidChanges()143 public abstract void finishUidChanges(); 144 updateUidProcState(int uid, int procState)145 public abstract void updateUidProcState(int uid, int procState); 146 uidGone(int uid)147 public abstract void uidGone(int uid); 148 uidActive(int uid)149 public abstract void uidActive(int uid); 150 uidIdle(int uid)151 public abstract void uidIdle(int uid); 152 153 /** 154 * The hintId sent through this method should be in-line with the 155 * PowerHint defined in android/hardware/power/<version 1.0 & up>/IPower.h 156 */ powerHint(int hintId, int data)157 public abstract void powerHint(int hintId, int data); 158 } 159