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 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 */ 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 */ 87 public abstract void setScreenBrightnessOverrideFromWindowManager(int brightness); 88 89 /** 90 * Used by the window manager to override the button brightness based on the 91 * current foreground activity. 92 * 93 * This method must only be called by the window manager. 94 * 95 * @param brightness The overridden brightness, or -1 to disable the override. 96 */ 97 public abstract void setButtonBrightnessOverrideFromWindowManager(int brightness); 98 99 /** 100 * Used by the window manager to override the user activity timeout based on the 101 * current foreground activity. It can only be used to make the timeout shorter 102 * than usual, not longer. 103 * 104 * This method must only be called by the window manager. 105 * 106 * @param timeoutMillis The overridden timeout, or -1 to disable the override. 107 */ 108 public abstract void setUserActivityTimeoutOverrideFromWindowManager(long timeoutMillis); 109 110 /** 111 * Used by device administration to set the maximum screen off timeout. 112 * 113 * This method must only be called by the device administration policy manager. 114 */ 115 public abstract void setMaximumScreenOffTimeoutFromDeviceAdmin(int timeMs); 116 117 /** 118 * Used by the dream manager to override certain properties while dozing. 119 * 120 * @param screenState The overridden screen state, or {@link Display.STATE_UNKNOWN} 121 * to disable the override. 122 * @param screenBrightness The overridden screen brightness, or 123 * {@link PowerManager#BRIGHTNESS_DEFAULT} to disable the override. 124 */ 125 public abstract void setDozeOverrideFromDreamManager( 126 int screenState, int screenBrightness); 127 128 public abstract boolean getLowPowerModeEnabled(); 129 130 public abstract void registerLowPowerModeObserver(LowPowerModeListener listener); 131 132 public interface LowPowerModeListener { 133 public void onLowPowerModeChanged(boolean enabled); 134 } 135 } 136