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