displaymanager

来源:互联网 发布:杭州龙席网络官网 编辑:程序博客网 时间:2024/06/08 12:11

frameworks\base\core\java\android\hardware\display\DisplayManagerInternal.java

/** * Display manager local system service interface. * * @hide Only for use within the system server. */public abstract class DisplayManagerInternal {    /**     * Called by the power manager to initialize power management facilities.     */    public abstract void initPowerManagement(DisplayPowerCallbacks callbacks,            Handler handler, SensorManager sensorManager);    /**     * Called by the power manager to request a new power state.


/** * Asynchronous callbacks from the power controller to the power manager service. */public interface DisplayPowerCallbacks {    void onStateChanged();    void onProximityPositive();    void onProximityNegative();    void onDisplayStateChange(int state); // one of the Display state constants    void acquireSuspendBlocker();    void releaseSuspendBlocker();}

}



frameworks\base\services\core\java\com\android\server\display\DisplayManagerService.java

public final class DisplayManagerService extends SystemService {    private static final String TAG = "DisplayManagerService";    private static final boolean DEBUG = true;
public DisplayManagerService(Context context) {    super(context);    mContext = context;    mHandler = new DisplayManagerHandler(DisplayThread.get().getLooper());  //显示进程,运行在其looper中    mUiHandler = UiThread.getHandler();    mDisplayAdapterListener = new DisplayAdapterListener();    mSingleDisplayDemoMode = SystemProperties.getBoolean("persist.demo.singledisplay", false);    PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);    mGlobalDisplayBrightness = pm.getDefaultScreenBrightnessSetting();}


private final class LocalService extends DisplayManagerInternal {    @Override    public void initPowerManagement(final DisplayPowerCallbacks callbacks, Handler handler,            SensorManager sensorManager) {        synchronized (mSyncRoot) {            DisplayBlanker blanker = new DisplayBlanker() {                @Override                public void requestDisplayState(int state, int brightness) {                    // The order of operations is important for legacy reasons.                    if (state == Display.STATE_OFF) {                        requestGlobalDisplayStateInternal(state, brightness);                    }                    callbacks.onDisplayStateChange(state);                    if (state != Display.STATE_OFF) {                        requestGlobalDisplayStateInternal(state, brightness);                    }                }            };            mDisplayPowerController = new DisplayPowerController(                    mContext, callbacks, handler, sensorManager, blanker);        }    }

}



frameworks\base\services\core\java\com\android\server\display\DisplayPowerController.java

final class DisplayPowerController implements AutomaticBrightnessController.Callbacks {

public DisplayPowerController(Context context,
    /**     * Creates the display power controller.     */public DisplayPowerController(Context context,        DisplayPowerCallbacks callbacks, Handler handler,        SensorManager sensorManager, DisplayBlanker blanker) {    mHandler = new DisplayControllerHandler(handler.getLooper());           //电源服务handler    mCallbacks = callbacks;    mBatteryStats = BatteryStatsService.getService();    mSensorManager = sensorManager;    mWindowManagerPolicy = LocalServices.getService(WindowManagerPolicy.class);    mBlanker = blanker;    mContext = context;    final Resources resources = context.getResources();
mAutomaticBrightnessController = new AutomaticBrightnessController(this,     //运行在电源服务handler        handler.getLooper(), sensorManager, screenAutoBrightnessSpline,        lightSensorWarmUpTimeConfig, screenBrightnessRangeMinimum,        mScreenBrightnessRangeMaximum, dozeScaleFactor, lightSensorRate,        brighteningLightDebounce, darkeningLightDebounce,        autoBrightnessResetAmbientLuxAfterWarmUp,        ambientLightHorizon, autoBrightnessAdjustmentMaxGamma);

      }

}


frameworks\base\services\core\java\com\android\server\power\PowerManagerService.java

// Initialize display power management.mDisplayManagerInternal.initPowerManagement(        mDisplayPowerCallbacks, mHandler, sensorManager);

第一个参数数显示管理服务回到会电源服务接口

private final DisplayManagerInternal.DisplayPowerCallbacks mDisplayPowerCallbacks =        new DisplayManagerInternal.DisplayPowerCallbacks() {    private int mDisplayState = Display.STATE_UNKNOWN;    @Override    public void onStateChanged() {        synchronized (mLock) {            mDirty |= DIRTY_ACTUAL_DISPLAY_POWER_STATE_UPDATED;            updatePowerStateLocked();        }    }

第二个参数就电源服务中handler



frameworks\base\core\java\android\hardware\display\DisplayManagerGlobal.java

/** * Manager communication with the display manager service on behalf of * an application process.  You're probably looking for {@link DisplayManager}. * * @hide */public final class DisplayManagerGlobal {    private static final String TAG = "DisplayManager";    private static final boolean DEBUG = false;

}