| /* |
| * Copyright (C) 2012 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.server.power; |
| |
| import android.os.PowerManager; |
| |
| /** |
| * Describes the requested power state of the display. |
| * |
| * This object is intended to describe the general characteristics of the |
| * power state, such as whether the screen should be on or off and the current |
| * brightness controls leaving the {@link DisplayPowerController} to manage the |
| * details of how the transitions between states should occur. The goal is for |
| * the {@link PowerManagerService} to focus on the global power state and not |
| * have to micro-manage screen off animations, auto-brightness and other effects. |
| */ |
| final class DisplayPowerRequest { |
| public static final int SCREEN_STATE_OFF = 0; |
| public static final int SCREEN_STATE_DIM = 1; |
| public static final int SCREEN_STATE_BRIGHT = 2; |
| |
| // The requested minimum screen power state: off, dim or bright. |
| public int screenState; |
| |
| // If true, the proximity sensor overrides the screen state when an object is |
| // nearby, turning it off temporarily until the object is moved away. |
| public boolean useProximitySensor; |
| |
| // The desired screen brightness in the range 0 (minimum / off) to 255 (brightest). |
| // The display power controller may choose to clamp the brightness. |
| // When auto-brightness is enabled, this field should specify a nominal default |
| // value to use while waiting for the light sensor to report enough data. |
| public int screenBrightness; |
| |
| // The screen auto-brightness adjustment factor in the range -1 (dimmer) to 1 (brighter). |
| public float screenAutoBrightnessAdjustment; |
| |
| // If true, enables automatic brightness control. |
| public boolean useAutoBrightness; |
| |
| // If true, prevents the screen from completely turning on if it is currently off. |
| // The display does not enter a "ready" state if this flag is true and screen on is |
| // blocked. The window manager policy blocks screen on while it prepares the keyguard to |
| // prevent the user from seeing intermediate updates. |
| // |
| // Technically, we may not block the screen itself from turning on (because that introduces |
| // extra unnecessary latency) but we do prevent content on screen from becoming |
| // visible to the user. |
| public boolean blockScreenOn; |
| |
| public DisplayPowerRequest() { |
| screenState = SCREEN_STATE_BRIGHT; |
| useProximitySensor = false; |
| screenBrightness = PowerManager.BRIGHTNESS_ON; |
| screenAutoBrightnessAdjustment = 0.0f; |
| useAutoBrightness = false; |
| blockScreenOn = false; |
| } |
| |
| public DisplayPowerRequest(DisplayPowerRequest other) { |
| copyFrom(other); |
| } |
| |
| public void copyFrom(DisplayPowerRequest other) { |
| screenState = other.screenState; |
| useProximitySensor = other.useProximitySensor; |
| screenBrightness = other.screenBrightness; |
| screenAutoBrightnessAdjustment = other.screenAutoBrightnessAdjustment; |
| useAutoBrightness = other.useAutoBrightness; |
| blockScreenOn = other.blockScreenOn; |
| } |
| |
| @Override |
| public boolean equals(Object o) { |
| return o instanceof DisplayPowerRequest |
| && equals((DisplayPowerRequest)o); |
| } |
| |
| public boolean equals(DisplayPowerRequest other) { |
| return other != null |
| && screenState == other.screenState |
| && useProximitySensor == other.useProximitySensor |
| && screenBrightness == other.screenBrightness |
| && screenAutoBrightnessAdjustment == other.screenAutoBrightnessAdjustment |
| && useAutoBrightness == other.useAutoBrightness |
| && blockScreenOn == other.blockScreenOn; |
| } |
| |
| @Override |
| public int hashCode() { |
| return 0; // don't care |
| } |
| |
| @Override |
| public String toString() { |
| return "screenState=" + screenState |
| + ", useProximitySensor=" + useProximitySensor |
| + ", screenBrightness=" + screenBrightness |
| + ", screenAutoBrightnessAdjustment=" + screenAutoBrightnessAdjustment |
| + ", useAutoBrightness=" + useAutoBrightness |
| + ", blockScreenOn=" + blockScreenOn; |
| } |
| } |