Android DisplayManagerService 之 Display

754 阅读11分钟

多屏显示成主流

车机屏、电视屏、折叠屏

DisplayManagerService

image.png

显示屏 Display 获取方法

通过 DisplayService 系统 service 获取 DisplayManager 然后 getDisplays() 获取到所有显示设备

// 注册屏幕变化监听器
public void registerDisplayListener(){
     
    DisplayManager displayManager = (DisplayManager) mContext.getSystemService(Context.DISPLAY_SERVICE);
    displayManager.registerDisplayListener(new DisplayManager.DisplayListener() {
        @Override
        public void onDisplayAdded(int displayId) {

        }

        @Override
        public void onDisplayRemoved(int displayId) {

        }

        @Override
        public void onDisplayChanged(int displayId) {

        }
    }, dealingHandler);
}

// 获取当前刷新率
public double getRefreshRate() {
    
  return ((WindowManager) mContext
      .getSystemService(Context.WINDOW_SERVICE))
      .getDefaultDisplay()
      .getRefreshRate();
}

方法一通过 displayManager.getDisplays(DISPLAY_CATEGORY_PRESENTATION) 过滤

         val displayManager = application.getSystemService(Context.DISPLAY_SERVICE) as DisplayManager
        val builder = StringBuilder()
        val displays = displayManager.getDisplays(DISPLAY_CATEGORY_PRESENTATION)
        val displayDefault = displayManager.getDisplay(Display.DEFAULT_DISPLAY)
        println("displayDefault $displayDefault")
        println("displayDefault.mode ${displayDefault.mode}")
        if (displays != null && displays.isNotEmpty()) {
            for (display in displays) {
                // 这不是默认显示器,可能是一个通过HDMI连接的外部显示器
                println("display $display \n ${display.mode}")
                println("display.state ${display.state}")
                builder.append("$display\n ${display.mode}")
            }
        } else {
            builder.append("$displayDefault\n ${displayDefault.mode}")
        }
 

这个方法在一加 ace3 Pro 上判断错误

日志:

Display id 10004: DisplayInfo{"Mirage_keepalive_display_004", displayId 10004, displayGroupId 0, FLAG_SECURE, FLAG_PRESENTATION, FLAG_TRUSTED, real 2376 x 1080, largest app 2376 x 2376, smallest app 1080 x 1080, appVsyncOff 0, presDeadline 0, mode 80.0, defaultMode 8, modes [{id=8, width=1080, height=2376, fps=120.00001, alternativeRefreshRates=[], supportedHdrTypes=[]}], hdrCapabilities null, userDisabledHdrTypes [], minimalPostProcessingSupported false, rotation 1, state ON, committedState UNKNOWN}, DisplayMetrics{density=3.0, width=2376, height=1080, scaledDensity=3.0, xdpi=452.0, ydpi=449.0}, isValid=true
 {id=8, width=1080, height=2376, fps=120.00001, alternativeRefreshRates=[], supportedHdrTypes=[]}

方法二 通过 display.getFlags() & Display.FLAG_PRESENTATION 过滤

第一个方法在一加 ace3 Pro 上判断错误

DisplayManager displayManager = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE);
Display[] displays = displayManager.getDisplays();

if (displays != null) {
    for (Display display : displays) {
        if (display.getDisplayId() != Display.DEFAULT_DISPLAY 
        && display.getDisplayId() != Display.INVALID_DISPLAY
                && (display.getFlags() & Display.FLAG_PRESENTATION) ==
                Display.FLAG_PRESENTATION 
                && display.getState() == Display.STATE_ON) {
                
            }
                
        }
   }
  • Presentation 演示屏

Display id 5: DisplayInfo{"华为智慧屏 SE55", displayId 5", displayGroupId 0, FLAG_PRESENTATION, FLAG_TRUSTED, real 1920 x 1080, largest app 1920 x 1920, smallest app 1080 x 1080, appVsyncOff 0, presDeadline 16666666, mode 4, defaultMode 4, modes [{id=4, width=1920, height=1080, fps=60.0, alternativeRefreshRates=[]}], hdrCapabilities null, userDisabledHdrTypes [], minimalPostProcessingSupported false, rotation 0, state ON}, DisplayMetrics{density=1.0, width=1920, height=1080, scaledDensity=1.0, xdpi=160.0, ydpi=160.0, densityDpi=160, noncompatWidthPixels=1920, noncompatHeightPixels=1080, noncompatDensity=1.0, noncompatDensityDpi=160, noncompatXdpi=160.0, noncompatYdpi=160.0}, isValid=true

  • displayDefault 内置屏

Display id 0: DisplayInfo{"内置屏幕", displayId 0", displayGroupId 0, FLAG_SECURE, FLAG_SUPPORTS_PROTECTED_BUFFERS, FLAG_TRUSTED, real 2340 x 1080, largest app 2235 x 2235, smallest app 1080 x 975, appVsyncOff 2000000, presDeadline 15666666, mode 1, defaultMode 1, modes [{id=1, width=1080, height=2340, fps=60.000004, alternativeRefreshRates=[]}], hdrCapabilities HdrCapabilities{mSupportedHdrTypes=[2, 3], mMaxLuminance=500.0, mMaxAverageLuminance=102.0, mMinLuminance=1.0}, userDisabledHdrTypes [], minimalPostProcessingSupported false, rotation 1, state ON}, DisplayMetrics{density=3.0, width=2235, height=1080, scaledDensity=3.0, xdpi=391.885, ydpi=391.026, densityDpi=480, noncompatWidthPixels=2235, noncompatHeightPixels=1080, noncompatDensity=3.0, noncompatDensityDpi=480, noncompatXdpi=391.885, noncompatYdpi=391.026}, isValid=true

Display 属性分析

  • displayId:显示设备的标识符,用于区分不同的显示设备 。
  • uniqueId:在 Android 10 中更新,提供了一个稳定的标识符,用于区分本地、网络和虚拟屏幕。格式可能为 local:<stable-id>network:<mac-address>virtual:<package-name-and-name>
  • name:显示设备的名称,提供人类可读的描述 。
  • flags:描述显示功能的一系列标志,如 FLAG_SECURE 表示显示器具有安全视频输出 , FLAG_PRESENTATION 表示演示和展示。
  • widthheight:显示设备的宽度和高度,单位为像素 。
  • refreshRate:显示设备的刷新率,单位为赫兹 。
  • density:显示设备的逻辑密度,影响布局和图像的缩放 。
  • xdpiydpi:显示设备的 X 轴和 Y 轴方向每英寸的确切物理像素数 。
  • rotation:屏幕的旋转角度,从自然方向开始计算 。
  • state:显示设备的状态,如 STATE_ON 表示显示器打开 。
  • modeId:显示设备的模式 ID,用于标识当前显示模式 。
  • colorMode:显示设备的色域模式,例如 sRGB、DCI-P3 等 。
  • mType: TYPE_UNKNOWN, TYPE_INTERNAL, TYPE_EXTERNAL, TYPE_WIFI, TYPE_OVERLAY, TYPE_VIRTUAL

dumpsys display

HWTAS:/ $ dumpsys display
DISPLAY MANAGER (dumpsys display)
  mOnlyCode=false
  mSafeMode=false
  mPendingTraversal=false
  mViewports=[DisplayViewport{type=INTERNAL, valid=true, isActive=true, displayId=0, uniqueId='local:0', physicalPort=0, orientation=0, logicalFrame=Rect(0, 0 - 1080, 2340), physicalFrame=Rect(0, 0 - 1080, 2340), deviceWidth=1080, deviceHeight=2340}]
  mDefaultDisplayDefaultColorMode=0
  mWifiDisplayScanRequestCount=0
  mStableDisplaySize=Point(1080, 2340)
  mMinimumBrightnessCurve=[(0.0, 0.0), (2000.0, 50.0), (4000.0, 90.0)]


Display States: size=1
  Display Id=0
  Display State=ON
  Display Brightness=0.21568628
  Display SdrBrightness=0.21568628

Display Adapters: size=5
  LocalDisplayAdapter
  VirtualDisplayAdapter
  OverlayDisplayAdapter
    mCurrentOverlaySetting=
    mOverlays: size=0
  WifiDisplayAdapter
    mCurrentStatus=WifiDisplayStatus{featureState=3, scanState=0, activeDisplayState=0, activeDisplay=null, displays=[荣耀智慧屏 (02:bb:1c:90:96:13), isAvailable false, canConnect false, isRemembered true, 华为智慧屏 SE55 畅连版 (fa:89:d2:), isAvailable false, canConnect false, isRemembered true, SPro mini65_a2ca (4e:31:2d:eb:a2:ca), isAvailable false, canConnect false, isRemembered true, A Pro 55_2eb9 (8a:12:ac:f4:2e:b9), isAvailable false, canConnect false, isRemembered true, ESPro65_68f7 (1a:ef:3a:ce:68:f7), isAvailable false, canConnect false, isRemembered true, K75C12G (4a:9e:9d:fe:21:cc), isAvailable false, canConnect false, isRemembered true, TCL 75C11G Pro-4D25 (86:c8:a0:66:fe:df), isAvailable false, canConnect false, isRemembered true, TCL 85C78H-38B3 (d2:12:55:e2:5d:dc), isAvailable false, canConnect false, isRemembered true, ES55_eef3 (62:1d:9d:de:ee:f3), isAvailable false, canConnect false, isRemembered true, 小米电视75_2945 (5e:c:99:29:45), isAvailable false, canConnect false, isRemembered true, 华为智慧屏 SE55 (7a:66:9d:0e:f6:9e), isAvailable true, canConnect true, isRemembered true], sessionInfo=WifiDisplaySessionInfo:
        Client/Owner: Client
        GroupId: 
        Passphrase: 
        SessionId: 0
        IP Address: }
    mFeatureState=3
    mScanState=0
    mActiveDisplayState=0
    mActiveDisplay=null
    mDisplays=[荣耀智慧屏 (02:bb:1c:90:96:13), isAvailable false, canConnect false, isRemembered true, 华为智慧屏 SE55 畅连版 (fa:89:d2:40:94:23), isAvailable false, canConnect false, isRemembered true, SPro mini65_a2ca (4e:31:2d:eb:a2:ca) false, canConnect false, isRemembered true, A Pro 55_2eb9 (8a:12:ac:f4:2e:b9), isAvailable false, canConnect false, isRemembered true, ESPro65_68f7 (1a:ef:3a:ce:68:f7), isAvailable false, canConnect false, isRemembered true, K75C12G (4a:9e:9d:fe:21:cc), isAvailable false, canConnect false, isRemembered true, TCL 75C11G Pro-4D25 (86:c8:a0:66:fe:df), isAvailable false, canConnect false, isRemembered true, TCL 85C78H-38B3 (d2:12:55:e2:5d:dc), isAvailable false, canConnect false, isRemembered true, ES55_eef3 (62:1d:9d:de:ee:f3), isAvailable false, canConnect false, isRemembered true, 小米电视75_2945 (5e:c3:36:99:29:45), isAvailable false, canConnect false, isRemembered true, 华为智慧屏 SE55 (7a:66:9d:0e:f6:9e),ble true, canConnect true, isRemembered true]
    mAvailableDisplays=[]
    mRememberedDisplays=[荣耀智慧屏 (02:bb:1c:90:96:13), isAvailable false, canConnect false, isRemembered false, 华为智慧屏 SE55 畅连版 (fa:89:d2:40:94:23), isAvailable false, canConnect false, isRemembered false, SPro mini65_a2ca (4e:31: isAvailable false, canConnect false, isRemembered false, A Pro 55_2eb9 (8a:12:ac:f4:2e:b9), isAvailable false, canConnect false, isRemembered false, ESPro65_68f7 (1a:ef:3a:ce:68:f7), isAvailable false, canConnect false, isRemembered false, K75C12G (4a:9e:9d:fe:21:cc), isAvailable false, canConnect false, isRemembered false, TCL 75C11G Pro-4D25 (86:c8:a0:66:fe:df), isAvailable false, canConnect false, isRemembered false, TCL 85C78H-38B3 (d2:12:55:e2:5d:dc), isAvailable false, canConnect false, isRemembered false, ES55_eef3 (62:1d:9d:de:ee:f3), isAvailable false, canConnect false, isRemembered false, 小米电视75_2945 (5e:c3:36:99:29:45), isAvailable false, canConnect false, isRemembered false, 华为智慧屏 SE55 :0e:f6:9e), isAvailable true, canConnect true, isRemembered false]
    mPendingStatusChangeBroadcast=false
    mSupportsProtectedBuffers=false
    mDisplayController:
      mWifiDisplayOnSetting=true
      mWifiP2pEnabled=true
      mWfdEnabled=true
      mWfdEnabling=false
      mNetworkInfo=[type: WIFI_P2P[], state: DISCONNECTED/DISCONNECTED, reason: (unspecified), extra: (none), failover: false, available: false, roaming: false]
      mScanRequested=false
      mDiscoverPeersInProgress=false
      mDesiredDevice=null
      mConnectingDisplay=null
      mDisconnectingDisplay=null
      mCancelingDisplay=null
      mConnectedDevice=null
      mConnectionRetriesLeft=0
      mRemoteDisplay=null
      mRemoteDisplayInterface=null
      mRemoteDisplayConnected=false
      mAdvertisedDisplay=null
      mAdvertisedDisplaySurface=null
      mAdvertisedDisplayWidth=0
      mAdvertisedDisplayHeight=0
      mAdvertisedDisplayFlags=0
      mAvailableWifiDisplayPeers: size=0
  DefaultHwVrDisplayAdapter

Display Devices: size=1
  DisplayDeviceInfo{"内置屏幕": uniqueId="****", 1080 x 2340, modeId 1, defaultModeId 1, supportedModes [{id=1, width=1080, height=2340, fps=60.000004, alternativeRefreshRates=[]}], colorMode 0, supportedColorModes [0, 7], hdrCapabilities apabilities{mSupportedHdrTypes=[2, 3], mMaxLuminance=500.0, mMaxAverageLuminance=102.0, mMinLuminance=1.0}, allmSupported false, gameContentTypeSupported false, density 480, 391.885 x 391.026 dpi, appVsyncOff 2000000, presDeadline 15666666, cutout DisplayCutout{insets=Rect(0, 105 - 0, 0) waterfall=Insets{left=0, top=0, right=0, bottom=0} boundingRect={Bounds=[Rect(0, 0 - 0, 0), Rect(396, 0 - 684, 105), Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0)]} cutoutPathParserInfo={CutoutPathParserInfo{displayWidth=1080 displayHeight=2340 density={3.0} cutoutSpec={M147,0 L-147,0 C-134.9,1 -125.3,11.3 -125.3,23.8 L-125.3,23.8 C-125,55.3 -99.4,105 -68.2,105 L68.3,105 C99.6,105 125.2,55.2 125.4,23.5 C125.5,11.1 135,1 147,0} rotation={0} scale={1.0}}}}, touch INTERNAL, rotation 0, type INTERNAL, address ****, deviceProductInfo null, state ON, frameRateOverride , brightnessMinimum 0.0, brightnessMaximum 1.0, brightnessDefault 0.4, FLAG_DEFAULT_DISPLAY, FLAG_ROTATES_WITH_CONTENT, FLAG_SECURE, FLAG_SUPPORTS_PROTECTED_BUFFERS}
    mAdapter=LocalDisplayAdapter
    mUniqueId=local:0
    mDisplayToken=android.os.BinderProxy@7c7887c
    mCurrentLayerStack=0
    mCurrentOrientation=0
    mCurrentLayerStackRect=Rect(0, 0 - 1080, 2340)
    mCurrentDisplayRect=Rect(0, 0 - 1080, 2340)
    mCurrentSurface=null
    mPhysicalDisplayId=0
    mDisplayModeSpecs={baseModeId=1 allowGroupSwitching=false primaryRefreshRateRange=[0 60] appRequestRefreshRateRange=[0 Infinity]}
    mDisplayModeSpecsInvalid=false
    mActiveModeId=1
    mActiveColorMode=0
    mDefaultModeId=1
    mState=ON
    mBrightnessState=0.21568628
    mBacklightAdapter=BacklightAdapter [useSurfaceControl=false (force_anyway? false), backlight=com.android.server.lights.LightsService$LightImpl@f8eca21]
    mAllmSupported=false
    mAllmRequested=false
    mGameContentTypeSupported=false
    mGameContentTypeRequested=false
    mStaticDisplayInfo=StaticDisplayInfo{isInternal=true, density=3.0, secure=true, deviceProductInfo=null}
    mSfDisplayModes=
      DisplayMode{id=0, width=1080, height=2340, xDpi=391.885, yDpi=391.026, refreshRate=60.000004, appVsyncOffsetNanos=2000000, presentationDeadlineNanos=15666666, group=-1}
      DisplayMode{id=1, width=1080, height=2340, xDpi=391.885, yDpi=391.026, refreshRate=60.000004, appVsyncOffsetNanos=2000000, presentationDeadlineNanos=15666666, group=-1}
      DisplayMode{id=2, width=1080, height=2340, xDpi=391.885, yDpi=391.026, refreshRate=60.000004, appVsyncOffsetNanos=2000000, presentationDeadlineNanos=15666666, group=-1}
      DisplayMode{id=3, width=1080, height=2340, xDpi=391.885, yDpi=391.026, refreshRate=60.000004, appVsyncOffsetNanos=2000000, presentationDeadlineNanos=15666666, group=-1}
    mActiveSfDisplayMode=DisplayMode{id=2, width=1080, height=2340, xDpi=391.885, yDpi=391.026, refreshRate=60.000004, appVsyncOffsetNanos=2000000, presentationDeadlineNanos=15666666, group=-1}
    mSupportedModes=
      DisplayModeRecord{mMode={id=1, width=1080, height=2340, fps=60.000004, alternativeRefreshRates=[]}}
    mSupportedColorModes=[0, 7]
    mDisplayDeviceConfig=DisplayDeviceConfig{mLoadedFrom=<config.xml>, mBacklight=null, mNits=null, mRawBacklight=null, mRawNits=null, mBrightness=null, mBrightnessToBacklightSpline=MonotoneCubicSpline{[(0.0, 0.0: 1.0), (1.0, 1.0: 1.0)]}, mBacklightToBrightnessSpline=MonotoneCubicSpline{[(0.0, 0.0: 1.0), (1.0, 1.0: 1.0)]}, mBacklightMinimum=0.015686, mBacklightMaximum=1.0, mBrightnessDefault=0.4, mQuirks=null, isHbmEnabled=false, mHbmData=null, mBrightnessRampFastDecrease=0.7058824, mBrightnessRampFastIncrease=0.7058824, mBrightnessRampSlowDecrease=0.23529412, mBrightnessRampSlowIncrease=0.23529412, mAmbientLightSensor=Sensor{type: , name: , refreshRateRange: [0.0, Infinity]} , mProximitySensor=Sensor{type: , name: , refreshRateRange: [0.0, Infinity]} , mRefreshRateLimitations= []}

LogicalDisplayMapper:
  mSingleDisplayDemoMode=false
  mCurrentLayout=[{addr: {port=0}, dispId: 0(ON)}]
  
  Logical Displays: size=1
  Display 0:
    mDisplayId=0
    mPhase=1
    mLayerStack=0
    mHasContent=true
    mDesiredDisplayModeSpecs={baseModeId=1 allowGroupSwitching=false primaryRefreshRateRange=[0 60] appRequestRefreshRateRange=[0 Infinity]}
    mRequestedColorMode=0
    mDisplayOffset=(0, 0)
    mDisplayScalingDisabled=false
    mPrimaryDisplayDevice=内置屏幕
    mBaseDisplayInfo=DisplayInfo{"内置屏幕", displayId 0", displayGroupId 0, FLAG_SECURE, FLAG_SUPPORTS_PROTECTED_BUFFERS, FLAG_TRUSTED, real 1080 x 2340, largest app 1080 x 2340, smallest app 1080 x 2340, appVsyncOff 2000000, presDeadline 15666666, mode 1, defaultMode 1, modes [{id=1, width=1080, height=2340, fps=60.000004, alternativeRefreshRates=[]}], hdrCapabilities HdrCapabilities{mSupportedHdrTypes=[2, 3], mMaxLuminance=500.0, mMaxAverageLuminance=102.0, mMinLuminance=1.0}, userDisabledHdrTypes [], minimalPostProcessingSupported false, rotation 0, state ON, FLAG_SECURE, FLAG_SUPPORTS_PROTECTED_BUFFERS, FLAG_TRUSTED, type INTERNAL, uniqueId "****", app 1080 x 2340, density 480 (391.885 x 391.026) dpi, layerStack 0, colorMode 0, supportedColorModes [0, 7], address ****, deviceProductInfo null, removeMode 0, refreshRateOverride 0.0, brightnessMinimum 0.0, brightnessMaximum 1.0, brightnessDefault 0.4}
    mOverrideDisplayInfo=DisplayInfo{"内置屏幕", displayId 0", displayGroupId 0, FLAG_SECURE, FLAG_SUPPORTS_PROTECTED_BUFFERS, FLAG_TRUSTED, real 1080 x 2340, largest app 2235 x 2235, smallest app 1080 x 975, appVsyncOff 2000000, presDeadl15666666, mode 1, defaultMode 1, modes [{id=1, width=1080, height=2340, fps=60.000004, alternativeRefreshRates=[]}], hdrCapabilities HdrCapabilities{mSupportedHdrTypes=[2, 3], mMaxLuminance=500.0, mMaxAverageLuminance=102.0, mMinLuminance=1.0}, userDisabledHdrTypes [], minimalPostProcessingSupported false, rotation 0, state ON, FLAG_SECURE, FLAG_SUPPORTS_PROTECTED_BUFFERS, FLAG_TRUSTED, type INTERNAL, uniqueId "****", app 1080 x 2235, density 480 (391.885 x 391.026) dpi, layerStack 0, colorMode 0, supportedColorModes [0, 7], address ****, deviceProductInfo null, removeMode 0, refreshRateOverride 0.0, brightnessMinimum 0.0, brightnessMaximum 1.0, brightnessDefault 0.4}
    mRequestedMinimalPostProcessing=false
    mFrameRateOverrides=[]
    mPendingFrameRateOverrideUids={}
  
  DeviceStateToLayoutMap:
    Registered Layouts:
    state(-1): [{addr: {port=0}, dispId: 0(ON)}]

DisplayModeDirector
  mSupportedModesByDisplay:
    0 -> [{id=1, width=1080, height=2340, fps=60.000004, alternativeRefreshRates=[]}]
  mDefaultModeByDisplay:
    0 -> {id=1, width=1080, height=2340, fps=60.000004, alternativeRefreshRates=[]}
  mVotesByDisplay:
    -1:
      PRIORITY_USER_SETTING_MIN_REFRESH_RATE -> Vote{width=-1, height=-1, minRefreshRate=0.0, maxRefreshRate=Infinity, disableRefreshRateSwitching=false, baseModeRefreshRate=0.0}
      PRIORITY_DEFAULT_REFRESH_RATE -> Vote{width=-1, height=-1, minRefreshRate=0.0, maxRefreshRate=60.0, disableRefreshRateSwitching=false, baseModeRefreshRate=0.0}
  mModeSwitchingType: SWITCHING_TYPE_WITHIN_GROUPS
  mAlwaysRespectAppRequest: false
  SettingsObserver
    mDefaultRefreshRate: 60.0
    mDefaultPeakRefreshRate: 0.0
  AppRequestObserver
    mAppRequestedModeByDisplay:
    mAppPreferredRefreshRateRangeByDisplay:
  BrightnessObserver
    mAmbientLux: -1.0
    mBrightness: 42
    mDefaultDisplayState: 2
    mLowPowerModeEnabled: false
    mRefreshRateChangeable: false
    mShouldObserveDisplayLowChange: false
    mShouldObserveAmbientLowChange: false
    mRefreshRateInLowZone: 0
    mShouldObserveDisplayHighChange: false
    mShouldObserveAmbientHighChange: false
    mRefreshRateInHighZone: 0
    mLastSensorData: 0.0
    mTimestamp: 1970-01-01 08:00:00.000
  UdfpsObserver
    mLocalHbmEnabled: 
    mGlobalHbmEnabled: 
  SensorObserver
    mIsProxActive=true
    mDozeStateByDisplay:
      0 -> false
   HbmObserver
     mHbmEnabled: {}

Callbacks: size=14
  0: mPid=1591, mWifiDisplayScanRequested=false
  1: mPid=3573, mWifiDisplayScanRequested=false
  2: mPid=3694, mWifiDisplayScanRequested=false
  3: mPid=4106, mWifiDisplayScanRequested=false
  4: mPid=4158, mWifiDisplayScanRequested=false
  5: mPid=4180, mWifiDisplayScanRequested=false
  6: mPid=4335, mWifiDisplayScanRequested=false
  7: mPid=4397, mWifiDisplayScanRequested=false
  8: mPid=4561, mWifiDisplayScanRequested=false
  9: mPid=7567, mWifiDisplayScanRequested=false
  10: mPid=8890, mWifiDisplayScanRequested=false
  11: mPid=14398, mWifiDisplayScanRequested=false
  12: mPid=22847, mWifiDisplayScanRequested=false
  13: mPid=23964, mWifiDisplayScanRequested=false

Display Power Controllers: size=1

Display Power Controller:
  mDisplayId=0
  mLightSensor={Sensor name="als-tmd3702", vendor="ams", version=1, type=5, maxRange=10000.0, resolution=1.0, power=0.75, minDelay=0}

Display Power Controller Locked State:
  mDisplayReadyLocked=true
  mPendingRequestLocked=policy=BRIGHT, useProximitySensor=false, screenBrightnessOverride=NaN, useProximitySensorbyPhone=false, useAutoBrightness=true, screenAutoBrightnessAdjustmentOverride=NaN, screenLowPowerBrightnessFactor=1.0, blockScreenOn=false, lowPowerMode=false, boostScreenBrightness=false, dozeScreenBrightness=NaN, dozeScreenState=UNKNOWN, useSmartBacklight=false, brightnessWaitMode=false, brightnessWaitRet=false, screenAutoBrightness=-1, mScreenChangedReason=0, userId=0
  mPendingRequestChangedLocked=false
  mPendingWaitForNegativeProximityLocked=false
  mPendingUpdatePowerStateLocked=false

Display Power Controller Configuration:
  mScreenBrightnessRangeDefault=0.4
  mScreenBrightnessDozeConfig=0.15
  mScreenBrightnessDimConfig=0.05
  mScreenBrightnessForVrRangeMinimum=0.307087
  mScreenBrightnessForVrRangeMaximum=1.0
  mScreenBrightnessForVrDefault=0.33464
  mUseSoftwareAutoBrightnessConfig=true
  mAllowAutoBrightnessWhileDozingConfig=true
  mSkipScreenOnBrightnessRamp=false
  mColorFadeFadesConfig=true
  mColorFadeEnabled=true
  mDisplayBlanksAfterDozeConfig=false
  mBrightnessBucketsInDozeConfig=false

Display Power Controller Thread State:
  mPowerRequest=policy=BRIGHT, useProximitySensor=false, screenBrightnessOverride=NaN, useProximitySensorbyPhone=false, useAutoBrightness=true, screenAutoBrightnessAdjustmentOverride=NaN, screenLowPowerBrightnessFactor=1.0, blockScreenOn=false, lowPowerMode=false, boostScreenBrightness=false, dozeScreenBrightness=NaN, dozeScreenState=UNKNOWN, useSmartBacklight=false, brightnessWaitMode=false, brightnessWaitRet=false, screenAutoBrightness=-1, mScreenChangedReason=0, userId=0
  mUnfinishedBusiness=false
  mWaitingForNegativeProximity=false
  mProximitySensor={Sensor name="proximity-tmd3702", vendor="ams", version=1, type=8, maxRange=5.0, resolution=5.0, power=0.75, minDelay=0}
  mProximitySensorEnabled=false
  mProximityThreshold=5.0
  mProximity=Unknown
  mPendingProximity=Unknown
  mPendingProximityDebounceTime=-1 (5933489 ms ago)
  mScreenOffBecauseOfProximity=false
  mLastUserSetScreenBrightness=0.21960784
  mPendingScreenBrightnessSetting=NaN
  mTemporaryScreenBrightness=NaN
  mAutoBrightnessAdjustment=0.16470589
  mBrightnessReason=automatic
  mTemporaryAutoBrightnessAdjustment=NaN
  mPendingAutoBrightnessAdjustment=NaN
  mScreenBrightnessForVrFloat=0.33464
  mAppliedAutoBrightness=true
  mAppliedDimming=false
  mAppliedLowPower=false
  mAppliedScreenBrightnessOverride=false
  mAppliedTemporaryBrightness=false
  mDozing=false
  mSkipRampState=RAMP_STATE_SKIP_NONE
  mScreenOnBlockStartRealTime=7235426
  mScreenOffBlockStartRealTime=6824874
  mPendingScreenOnUnblocker=null
  mPendingScreenOnExUnblocker=null
  mPendingScreenOffUnblocker=null
  mPendingScreenOff=false
  mReportedToPolicy=REPORTED_TO_POLICY_SCREEN_ON
  mScreenBrightnessRampAnimator.isAnimating()=false
  mColorFadeOnAnimator.isStarted()=false
  mColorFadeOffAnimator.isStarted()=false

Display Power State:
  mStopped=false
  mScreenState=ON
  mScreenBrightness=0.21568628
  mSdrScreenBrightness=0.21568628
  mScreenReady=true
  mScreenUpdatePending=false
  mColorFadePrepared=false
  mColorFadeLevel=1.0
  mColorFadeReady=true
  mColorFadeDrawPending=false

Photonic Modulator State:
  mPendingState=ON
  mPendingBacklight=0.21568628
  mPendingSdrBacklight=0.21568628
  mActualState=ON
  mActualBacklight=0.21568628
  mActualSdrBacklight=0.21568628
  mStateChangeInProgress=false
  mBacklightChangeInProgress=false

Color Fade State:
  mPrepared=false
  mMode=2
  mDisplayLayerStack=0
  mDisplayWidth=1080
  mDisplayHeight=2340
  mSurfaceVisible=false
  mSurfaceAlpha=0.0

Automatic Brightness Controller Configuration:
  mScreenBrightnessRangeMinimum=0.015686
  mScreenBrightnessRangeMaximum=1.0
  mScreenBrightnessRangeSetByAppMin=0
  mScreenBrightnessRangeSetByAppMax=2147483647
  mDozeScaleFactor=1.0
  mInitialLightSensorRate=300
  mNormalLightSensorRate=300
  mLightSensorWarmUpTimeConfig=0
  mBrighteningLightDebounceConfig=4000
  mDarkeningLightDebounceConfig=8000
  mResetAmbientLuxAfterWarmUpConfig=true
  mAmbientLightHorizon=10000
  mWeightingIntercept=10000

Automatic Brightness Controller State:
  mLightSensor={Sensor name="als-tmd3702", vendor="ams", version=1, type=5, maxRange=10000.0, resolution=1.0, power=0.75, minDelay=0}
  mLightSensorEnabled=true
  mLightSensorEnableTime=5912933 (20560 ms ago)
  mCurrentLightSensorRate=300
  mAmbientLux=397.0
  mAmbientLuxValid=true
  mAmbientBrighteningThreshold=0.0
  mAmbientDarkeningThreshold=0.0
  mScreenBrighteningThreshold=0.2372549
  mScreenDarkeningThreshold=0.17254902
  mLastObservedLux=0.0
  mLastObservedLuxTime=0 (5933493 ms ago)
  mRecentLightSamples=0
  mAmbientLightRingBuffer=[]
  mScreenAutoBrightness=0.21568628
  mDisplayPolicy=BRIGHT
  mShortTermModelTimeout=300000
  mShortTermModelAnchor=397.0
  mShortTermModelValid=true
  mBrightnessAdjustmentSamplePending=false
  mBrightnessAdjustmentSampleOldLux=397.0
  mBrightnessAdjustmentSampleOldBrightness=0.21568628
  mForegroundAppPackageName=null
  mPendingForegroundAppPackageName=null
  mForegroundAppCategory=-1
  mPendingForegroundAppCategory=-1

SimpleMappingStrategy
  mSpline=MonotoneCubicSpline{[(0.0, 1.3026668E-5: 7.014867E-4), (8.0, 0.006261423: 0.0022356792), (55.0, 0.20354165: 1.6337163E-4), (350.0, 0.21960784: 0.0), (397.0, 0.21960784: 0.0), (1600.0, 0.88465065: 3.3712032E-4), (2550.0, 1.0: 1.2142037E-4)]}
  mMaxGamma=3.0
  mAutoBrightnessAdjustment=-1.0
  mUserLux=397.0
  mUserBrightness=0.21960784

HysteresisLevels
  mBrighteningThresholds=[0.1]
  mDarkeningThresholds=[0.2]
  mThresholdLevels=[]
HysteresisLevels
  mBrighteningThresholds=[0.1]
  mDarkeningThresholds=[0.2]
  mThresholdLevels=[]
HighBrightnessModeController:
  mBrightness=0.0
  mCurrentMin=0.0
  mCurrentMax=1.0
  mHbmMode=off
  mHbmData=null
  mAmbientLux=0.0 (old/invalid)
  mIsInAllowedAmbientRange=false
  mIsAutoBrightnessEnabled=false
  mIsHdrLayerPresent=false
  mBrightnessMin=0.0
  mBrightnessMax=1.0
  remainingTime=0
  mIsTimeAvailable= false
  mRunningStartTimeMillis=-1 (5933498 ms ago)
  mIsThermalStatusWithinLimit=true
  mIsBlockedByLowPowerMode=false
  width*height=1080*2340
  mEvents=
  SkinThermalStatusObserver:
    mStarted: false
    ThermalService not available


BrightnessTracker state:
  mStarted=false
  mLastBatteryLevel=NaN
  mLastBrightness=-1.0
  mLastSensorReadings.size=0
  mEventsDirty=false
  mEvents.size=0
  mWriteBrightnessTrackerStateScheduled=false
  mSensorRegistered=false
  mColorSamplingEnabled=false
  mNoFramesToSample=0
  mFrameRate=0.0

PersistentDataStore
  mLoaded=true
  mDirty=false
  RememberedWifiDisplays:
    0: 荣耀智慧屏 (02:bb:1c:90:96:13), isAvailable false, canConnect false, isRemembered false
    1: 华为智慧屏 SE55 畅连版 (fa:89:d2:40:94:23), isAvailable false, canConnect false, isRemembered false
    2: SPro mini65_a2ca (4e:31:2d:eb:a2:ca), isAvailable false, canConnect false, isRemembered false
    3: A Pro 55_2eb9 (8a:12:ac:f4:2e:b9), isAvailable false, canConnect false, isRemembered false
    4: ESPro65_68f7 (1a:ef:3a:ce:68:f7), isAvailable false, canConnect false, isRemembered false
    5: K75C12G (4a:9e:9d:fe:21:cc), isAvailable false, canConnect false, isRemembered false
    6: TCL 75C11G Pro-4D25 (86:c8:a0:66:fe:df), isAvailable false, canConnect false, isRemembered false
    7: TCL 85C78H-38B3 (d2:12:55:e2:5d:dc), isAvailable false, canConnect false, isRemembered false
    8: ES55_eef3 (62:1d:9d:de:ee:f3), isAvailable false, canConnect false, isRemembered false
    9: 小米电视75_2945 (5e:c3:36:99:29:45), isAvailable false, canConnect false, isRemembered false
    10: 华为智慧屏 SE55 (7a:66:9d:0e:f6:9e), isAvailable true, canConnect true, isRemembered false
  DisplayStates:
    0: local:0
      ColorMode=0
      BrightnessValue=0.21568628
  StableDeviceValues:
      StableDisplayWidth=1080
      StableDisplayHeight=2340
  BrightnessConfigurations:

通过以上方法也可以快速获取到 DisplayInfo 信息

DisplayInfo