blob: 9bbe8f951834694a7ce3ceb169bd6345f1f9fb14 [file] [log] [blame]
Jeff Brown6f357d32014-01-15 20:40:55 -08001/*
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
17package android.os;
18
Jeff Brown970d4132014-07-19 11:33:47 -070019import android.view.Display;
20
Jeff Brown6f357d32014-01-15 20:40:55 -080021/**
22 * Power manager local system service interface.
23 *
24 * @hide Only for use within the system server.
25 */
Jeff Brown4ccb8232014-01-16 22:16:42 -080026public abstract class PowerManagerInternal {
Jeff Brown6f357d32014-01-15 20:40:55 -080027 /**
Jeff Brownfbe96702014-11-19 18:30:58 -080028 * 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
Michael Wrighta4d22d72015-09-16 23:19:26 +010056
57 /**
Ruchi Kandoi43e38de2016-04-14 19:34:53 -070058 * Power hint:
59 * Interaction: The user is interacting with the device. The corresponding data field must be
Wei Wang98f03f92016-05-18 11:32:52 -070060 * the expected duration of the interaction, or 0 if unknown.
Michael Wrighta4d22d72015-09-16 23:19:26 +010061 *
Wei Wang98f03f92016-05-18 11:32:52 -070062 * 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.
Ruchi Kandoi43e38de2016-04-14 19:34:53 -070067 *
68 * These must be kept in sync with the values in hardware/libhardware/include/hardware/power.h
Michael Wrighta4d22d72015-09-16 23:19:26 +010069 */
70 public static final int POWER_HINT_INTERACTION = 2;
Ruchi Kandoi43e38de2016-04-14 19:34:53 -070071 public static final int POWER_HINT_SUSTAINED_PERFORMANCE_MODE = 6;
Wei Wang98f03f92016-05-18 11:32:52 -070072 public static final int POWER_HINT_LAUNCH = 8;
Michael Wrighta4d22d72015-09-16 23:19:26 +010073
Jeff Brownfbe96702014-11-19 18:30:58 -080074 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 */
93 public static boolean isInteractive(int wakefulness) {
94 return wakefulness == WAKEFULNESS_AWAKE || wakefulness == WAKEFULNESS_DREAMING;
95 }
96
97 /**
Jeff Brown6f357d32014-01-15 20:40:55 -080098 * 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 */
Jeff Brown4ccb8232014-01-16 22:16:42 -0800105 public abstract void setScreenBrightnessOverrideFromWindowManager(int brightness);
Jeff Brown6f357d32014-01-15 20:40:55 -0800106
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 */
Jeff Brown4ccb8232014-01-16 22:16:42 -0800115 public abstract void setButtonBrightnessOverrideFromWindowManager(int brightness);
Jeff Brown6f357d32014-01-15 20:40:55 -0800116
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 */
Jeff Brown4ccb8232014-01-16 22:16:42 -0800126 public abstract void setUserActivityTimeoutOverrideFromWindowManager(long timeoutMillis);
Jeff Brown6f357d32014-01-15 20:40:55 -0800127
Jeff Brown970d4132014-07-19 11:33:47 -0700128 /**
Nick Armstrong-Crews56ecfcc2015-09-07 21:46:50 -0700129 * Used by the window manager to tell the power manager that the user is no longer actively
130 * using the device.
131 */
132 public abstract void setUserInactiveOverrideFromWindowManager();
133
134 /**
Jeff Brown5ce1cb22014-11-06 19:05:33 -0800135 * 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 */
139 public abstract void setMaximumScreenOffTimeoutFromDeviceAdmin(int timeMs);
140
141 /**
Jeff Brown970d4132014-07-19 11:33:47 -0700142 * Used by the dream manager to override certain properties while dozing.
143 *
Dianne Hackborn88e98df2015-03-23 13:29:14 -0700144 * @param screenState The overridden screen state, or {@link Display#STATE_UNKNOWN}
Jeff Brown970d4132014-07-19 11:33:47 -0700145 * to disable the override.
146 * @param screenBrightness The overridden screen brightness, or
147 * {@link PowerManager#BRIGHTNESS_DEFAULT} to disable the override.
148 */
149 public abstract void setDozeOverrideFromDreamManager(
150 int screenState, int screenBrightness);
151
Dianne Hackborncbefd8d2014-05-14 11:42:00 -0700152 public abstract boolean getLowPowerModeEnabled();
153
Jeff Brown2c43c332014-06-12 22:38:59 -0700154 public abstract void registerLowPowerModeObserver(LowPowerModeListener listener);
155
Dianne Hackborncbefd8d2014-05-14 11:42:00 -0700156 public interface LowPowerModeListener {
157 public void onLowPowerModeChanged(boolean enabled);
158 }
Dianne Hackborn88e98df2015-03-23 13:29:14 -0700159
Dianne Hackborn08c47a52015-10-15 12:38:14 -0700160 public abstract boolean setDeviceIdleMode(boolean enabled);
161
162 public abstract boolean setLightDeviceIdleMode(boolean enabled);
Dianne Hackborn8d66b3f2015-05-08 17:21:48 -0700163
164 public abstract void setDeviceIdleWhitelist(int[] appids);
Dianne Hackbornd23e0d62015-05-15 16:36:12 -0700165
Amith Yamasaniaf575b92015-05-29 15:35:26 -0700166 public abstract void setDeviceIdleTempWhitelist(int[] appids);
167
Dianne Hackbornd23e0d62015-05-15 16:36:12 -0700168 public abstract void updateUidProcState(int uid, int procState);
169
170 public abstract void uidGone(int uid);
Michael Wrighta4d22d72015-09-16 23:19:26 +0100171
172 public abstract void powerHint(int hintId, int data);
Jeff Brown6f357d32014-01-15 20:40:55 -0800173}