displaymanager

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;

}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值