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 56 57 /** 58 * Power hint: The user is interacting with the device. The corresponding data field must be 59 * the expected duration of the fling, or 0 if unknown. 60 * 61 * This must be kept in sync with the values in hardware/libhardware/include/hardware/power.h 62 */ 63 public static final int POWER_HINT_INTERACTION = 2; 64 wakefulnessToString(int wakefulness)65 public static String wakefulnessToString(int wakefulness) { 66 switch (wakefulness) { 67 case WAKEFULNESS_ASLEEP: 68 return "Asleep"; 69 case WAKEFULNESS_AWAKE: 70 return "Awake"; 71 case WAKEFULNESS_DREAMING: 72 return "Dreaming"; 73 case WAKEFULNESS_DOZING: 74 return "Dozing"; 75 default: 76 return Integer.toString(wakefulness); 77 } 78 } 79 80 /** 81 * Returns true if the wakefulness state represents an interactive state 82 * as defined by {@link android.os.PowerManager#isInteractive}. 83 */ isInteractive(int wakefulness)84 public static boolean isInteractive(int wakefulness) { 85 return wakefulness == WAKEFULNESS_AWAKE || wakefulness == WAKEFULNESS_DREAMING; 86 } 87 88 /** 89 * Used by the window manager to override the screen brightness based on the 90 * current foreground activity. 91 * 92 * This method must only be called by the window manager. 93 * 94 * @param brightness The overridden brightness, or -1 to disable the override. 95 */ setScreenBrightnessOverrideFromWindowManager(int brightness)96 public abstract void setScreenBrightnessOverrideFromWindowManager(int brightness); 97 98 /** 99 * Used by the window manager to override the button brightness based on the 100 * current foreground activity. 101 * 102 * This method must only be called by the window manager. 103 * 104 * @param brightness The overridden brightness, or -1 to disable the override. 105 */ setButtonBrightnessOverrideFromWindowManager(int brightness)106 public abstract void setButtonBrightnessOverrideFromWindowManager(int brightness); 107 108 /** 109 * Used by the window manager to override the user activity timeout based on the 110 * current foreground activity. It can only be used to make the timeout shorter 111 * than usual, not longer. 112 * 113 * This method must only be called by the window manager. 114 * 115 * @param timeoutMillis The overridden timeout, or -1 to disable the override. 116 */ setUserActivityTimeoutOverrideFromWindowManager(long timeoutMillis)117 public abstract void setUserActivityTimeoutOverrideFromWindowManager(long timeoutMillis); 118 119 /** 120 * Used by device administration to set the maximum screen off timeout. 121 * 122 * This method must only be called by the device administration policy manager. 123 */ setMaximumScreenOffTimeoutFromDeviceAdmin(int timeMs)124 public abstract void setMaximumScreenOffTimeoutFromDeviceAdmin(int timeMs); 125 126 /** 127 * Used by the dream manager to override certain properties while dozing. 128 * 129 * @param screenState The overridden screen state, or {@link Display#STATE_UNKNOWN} 130 * to disable the override. 131 * @param screenBrightness The overridden screen brightness, or 132 * {@link PowerManager#BRIGHTNESS_DEFAULT} to disable the override. 133 */ setDozeOverrideFromDreamManager( int screenState, int screenBrightness)134 public abstract void setDozeOverrideFromDreamManager( 135 int screenState, int screenBrightness); 136 getLowPowerModeEnabled()137 public abstract boolean getLowPowerModeEnabled(); 138 registerLowPowerModeObserver(LowPowerModeListener listener)139 public abstract void registerLowPowerModeObserver(LowPowerModeListener listener); 140 141 public interface LowPowerModeListener { onLowPowerModeChanged(boolean enabled)142 public void onLowPowerModeChanged(boolean enabled); 143 } 144 setDeviceIdleMode(boolean enabled)145 public abstract void setDeviceIdleMode(boolean enabled); 146 setDeviceIdleWhitelist(int[] appids)147 public abstract void setDeviceIdleWhitelist(int[] appids); 148 setDeviceIdleTempWhitelist(int[] appids)149 public abstract void setDeviceIdleTempWhitelist(int[] appids); 150 updateUidProcState(int uid, int procState)151 public abstract void updateUidProcState(int uid, int procState); 152 uidGone(int uid)153 public abstract void uidGone(int uid); 154 powerHint(int hintId, int data)155 public abstract void powerHint(int hintId, int data); 156 } 157