19630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown/* 29630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown * Copyright (C) 2012 The Android Open Source Project 39630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown * 49630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown * Licensed under the Apache License, Version 2.0 (the "License"); 59630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown * you may not use this file except in compliance with the License. 69630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown * You may obtain a copy of the License at 79630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown * 89630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown * http://www.apache.org/licenses/LICENSE-2.0 99630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown * 109630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown * Unless required by applicable law or agreed to in writing, software 119630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown * distributed under the License is distributed on an "AS IS" BASIS, 129630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown * See the License for the specific language governing permissions and 149630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown * limitations under the License. 159630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown */ 169630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown 179630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brownpackage com.android.server.power; 189630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown 199630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brownimport android.os.PowerManager; 209630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown 219630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown/** 229630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown * Describes the requested power state of the display. 239630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown * 249630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown * This object is intended to describe the general characteristics of the 259630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown * power state, such as whether the screen should be on or off and the current 269630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown * brightness controls leaving the {@link DisplayPowerController} to manage the 279630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown * details of how the transitions between states should occur. The goal is for 289630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown * the {@link PowerManagerService} to focus on the global power state and not 299630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown * have to micro-manage screen off animations, auto-brightness and other effects. 309630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown */ 319630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brownfinal class DisplayPowerRequest { 329630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown public static final int SCREEN_STATE_OFF = 0; 339630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown public static final int SCREEN_STATE_DIM = 1; 349630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown public static final int SCREEN_STATE_BRIGHT = 2; 359630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown 369630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown // The requested minimum screen power state: off, dim or bright. 379630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown public int screenState; 389630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown 399630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown // If true, the proximity sensor overrides the screen state when an object is 409630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown // nearby, turning it off temporarily until the object is moved away. 419630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown public boolean useProximitySensor; 429630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown 439630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown // The desired screen brightness in the range 0 (minimum / off) to 255 (brightest). 449630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown // The display power controller may choose to clamp the brightness. 459630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown // When auto-brightness is enabled, this field should specify a nominal default 469630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown // value to use while waiting for the light sensor to report enough data. 479630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown public int screenBrightness; 489630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown 49330560f53bccd06be805fee1b7988162119d1295Jeff Brown // The screen auto-brightness adjustment factor in the range -1 (dimmer) to 1 (brighter). 50330560f53bccd06be805fee1b7988162119d1295Jeff Brown public float screenAutoBrightnessAdjustment; 51330560f53bccd06be805fee1b7988162119d1295Jeff Brown 529630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown // If true, enables automatic brightness control. 539630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown public boolean useAutoBrightness; 549630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown 558b9cf1c8000eb581457713a5c0ce41c59f90c353Jeff Brown // If true, prevents the screen from completely turning on if it is currently off. 568b9cf1c8000eb581457713a5c0ce41c59f90c353Jeff Brown // The display does not enter a "ready" state if this flag is true and screen on is 578b9cf1c8000eb581457713a5c0ce41c59f90c353Jeff Brown // blocked. The window manager policy blocks screen on while it prepares the keyguard to 588b9cf1c8000eb581457713a5c0ce41c59f90c353Jeff Brown // prevent the user from seeing intermediate updates. 598b9cf1c8000eb581457713a5c0ce41c59f90c353Jeff Brown // 608b9cf1c8000eb581457713a5c0ce41c59f90c353Jeff Brown // Technically, we may not block the screen itself from turning on (because that introduces 618b9cf1c8000eb581457713a5c0ce41c59f90c353Jeff Brown // extra unnecessary latency) but we do prevent content on screen from becoming 628b9cf1c8000eb581457713a5c0ce41c59f90c353Jeff Brown // visible to the user. 63c38c9be031ddad5cf551b55458889f11e01dc5b2Jeff Brown public boolean blockScreenOn; 64c38c9be031ddad5cf551b55458889f11e01dc5b2Jeff Brown 659630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown public DisplayPowerRequest() { 669630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown screenState = SCREEN_STATE_BRIGHT; 679630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown useProximitySensor = false; 689630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown screenBrightness = PowerManager.BRIGHTNESS_ON; 69330560f53bccd06be805fee1b7988162119d1295Jeff Brown screenAutoBrightnessAdjustment = 0.0f; 709630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown useAutoBrightness = false; 71c38c9be031ddad5cf551b55458889f11e01dc5b2Jeff Brown blockScreenOn = false; 729630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown } 739630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown 749630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown public DisplayPowerRequest(DisplayPowerRequest other) { 759630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown copyFrom(other); 769630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown } 779630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown 789630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown public void copyFrom(DisplayPowerRequest other) { 799630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown screenState = other.screenState; 809630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown useProximitySensor = other.useProximitySensor; 819630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown screenBrightness = other.screenBrightness; 82330560f53bccd06be805fee1b7988162119d1295Jeff Brown screenAutoBrightnessAdjustment = other.screenAutoBrightnessAdjustment; 839630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown useAutoBrightness = other.useAutoBrightness; 84c38c9be031ddad5cf551b55458889f11e01dc5b2Jeff Brown blockScreenOn = other.blockScreenOn; 859630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown } 869630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown 879630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown @Override 889630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown public boolean equals(Object o) { 899630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown return o instanceof DisplayPowerRequest 909630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown && equals((DisplayPowerRequest)o); 919630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown } 929630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown 939630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown public boolean equals(DisplayPowerRequest other) { 949630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown return other != null 959630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown && screenState == other.screenState 969630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown && useProximitySensor == other.useProximitySensor 979630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown && screenBrightness == other.screenBrightness 98330560f53bccd06be805fee1b7988162119d1295Jeff Brown && screenAutoBrightnessAdjustment == other.screenAutoBrightnessAdjustment 99c38c9be031ddad5cf551b55458889f11e01dc5b2Jeff Brown && useAutoBrightness == other.useAutoBrightness 100c38c9be031ddad5cf551b55458889f11e01dc5b2Jeff Brown && blockScreenOn == other.blockScreenOn; 1019630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown } 1029630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown 1039630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown @Override 1049630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown public int hashCode() { 1059630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown return 0; // don't care 1069630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown } 1079630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown 1089630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown @Override 1099630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown public String toString() { 1109630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown return "screenState=" + screenState 1119630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown + ", useProximitySensor=" + useProximitySensor 1129630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown + ", screenBrightness=" + screenBrightness 113330560f53bccd06be805fee1b7988162119d1295Jeff Brown + ", screenAutoBrightnessAdjustment=" + screenAutoBrightnessAdjustment 114c38c9be031ddad5cf551b55458889f11e01dc5b2Jeff Brown + ", useAutoBrightness=" + useAutoBrightness 115c38c9be031ddad5cf551b55458889f11e01dc5b2Jeff Brown + ", blockScreenOn=" + blockScreenOn; 1169630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown } 1179630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown} 118