В Android 9 (и более ранних версиях) SurfaceFlinger и DisplayManagerService
предполагали наличие не более двух физических дисплеев с жестко закодированными идентификаторами 0 и 1. Как описано в разделе «Идентификаторы статического дисплея », SurfaceFlinger теперь использует API Hardware Composer (HWC) для создания стабильного отображения. ID, что позволяет управлять произвольным количеством физических дисплеев.
Платформа может искать токен IBinder
для физического дисплея через SurfaceControl#getPhysicalDisplayToken
после получения 64-битного идентификатора дисплея из SurfaceControl#getPhysicalDisplayIds
или из события горячего подключения DisplayEventReceiver
.
В Android 10 основным внутренним дисплеем является TYPE_BUILT_IN
, а все дополнительные дисплеи помечаются как TYPE_HDMI
независимо от типа подключения. Поэтому дополнительные внутренние дисплеи в настоящее время рассматриваются как внешние. В качестве обходного пути код, специфичный для устройства, может делать предположения относительно DisplayAddress.Physical#getPort
если HWC известен и логика выделения портов предсказуема.
Выполнение
Раньше дисплеи идентифицировались по 32-битным идентификаторам, где 0 — внутренний дисплей, 1 — внешний дисплей, [2, INT32_MAX] — виртуальные дисплеи HWC, а -1 представляет собой недопустимый дисплей или виртуальный дисплей, отличный от HWC. Чтобы SurfaceFlinger и DisplayManagerService
могли отслеживать более двух дисплеев и распознавать ранее просмотренные дисплеи, дисплеям должны быть присвоены стабильные и постоянные идентификаторы.
Если HWC поддерживает IComposerClient.getDisplayIdentificationData
и предоставляет данные идентификации дисплея, SurfaceFlinger анализирует структуру EDID и выделяет стабильные 64-битные идентификаторы дисплея для физических и виртуальных дисплеев HWC. Идентификаторы выражаются с использованием типа параметра, где нулевое значение представляет недопустимый дисплей или виртуальный дисплей, отличный от HWC. Без поддержки HWC SurfaceFlinger возвращается к устаревшему поведению с максимум двумя физическими дисплеями.
В Android 9 (и более ранних версиях) SurfaceFlinger и DisplayManagerService
предполагали наличие не более двух физических дисплеев с жестко закодированными идентификаторами 0 и 1. Как описано в разделе «Идентификаторы статического дисплея », SurfaceFlinger теперь использует API Hardware Composer (HWC) для создания стабильного отображения. ID, что позволяет управлять произвольным количеством физических дисплеев.
Платформа может искать токен IBinder
для физического дисплея через SurfaceControl#getPhysicalDisplayToken
после получения 64-битного идентификатора дисплея из SurfaceControl#getPhysicalDisplayIds
или из события горячего подключения DisplayEventReceiver
.
В Android 10 основным внутренним дисплеем является TYPE_BUILT_IN
, а все дополнительные дисплеи помечаются как TYPE_HDMI
независимо от типа подключения. Поэтому дополнительные внутренние дисплеи в настоящее время рассматриваются как внешние. В качестве обходного пути код конкретного устройства может делать предположения относительно DisplayAddress.Physical#getPort
если HWC известен и логика выделения портов предсказуема.
Выполнение
Раньше дисплеи идентифицировались по 32-битным идентификаторам, где 0 — внутренний дисплей, 1 — внешний дисплей, [2, INT32_MAX] — виртуальные дисплеи HWC, а -1 представляет собой недопустимый дисплей или виртуальный дисплей, отличный от HWC. Чтобы SurfaceFlinger и DisplayManagerService
могли отслеживать более двух дисплеев и распознавать ранее просмотренные дисплеи, дисплеям должны быть присвоены стабильные и постоянные идентификаторы.
Если HWC поддерживает IComposerClient.getDisplayIdentificationData
и предоставляет данные идентификации дисплея, SurfaceFlinger анализирует структуру EDID и выделяет стабильные 64-битные идентификаторы дисплея для физических и виртуальных дисплеев HWC. Идентификаторы выражаются с использованием типа параметра, где нулевое значение представляет недопустимый дисплей или виртуальный дисплей, отличный от HWC. Без поддержки HWC SurfaceFlinger возвращается к устаревшему поведению с максимум двумя физическими дисплеями.
В Android 9 (и более ранних версиях) SurfaceFlinger и DisplayManagerService
предполагали наличие не более двух физических дисплеев с жестко закодированными идентификаторами 0 и 1. Как описано в разделе «Идентификаторы статического дисплея », SurfaceFlinger теперь использует API Hardware Composer (HWC) для создания стабильного отображения. ID, что позволяет управлять произвольным количеством физических дисплеев.
Платформа может искать токен IBinder
для физического дисплея через SurfaceControl#getPhysicalDisplayToken
после получения 64-битного идентификатора дисплея из SurfaceControl#getPhysicalDisplayIds
или из события горячего подключения DisplayEventReceiver
.
В Android 10 основным внутренним дисплеем является TYPE_BUILT_IN
, а все дополнительные дисплеи помечаются как TYPE_HDMI
независимо от типа подключения. Поэтому дополнительные внутренние дисплеи в настоящее время рассматриваются как внешние. В качестве обходного пути код, специфичный для устройства, может делать предположения относительно DisplayAddress.Physical#getPort
если HWC известен и логика выделения портов предсказуема.
Выполнение
Раньше дисплеи идентифицировались по 32-битным идентификаторам, где 0 — внутренний дисплей, 1 — внешний дисплей, [2, INT32_MAX] — виртуальные дисплеи HWC, а -1 представляет собой недопустимый дисплей или виртуальный дисплей, отличный от HWC. Чтобы SurfaceFlinger и DisplayManagerService
могли отслеживать более двух дисплеев и распознавать ранее просмотренные дисплеи, дисплеям должны быть присвоены стабильные и постоянные идентификаторы.
Если HWC поддерживает IComposerClient.getDisplayIdentificationData
и предоставляет данные идентификации дисплея, SurfaceFlinger анализирует структуру EDID и выделяет стабильные 64-битные идентификаторы дисплея для физических и виртуальных дисплеев HWC. Идентификаторы выражаются с использованием типа параметра, где нулевое значение представляет недопустимый дисплей или виртуальный дисплей, отличный от HWC. Без поддержки HWC SurfaceFlinger возвращается к устаревшему поведению с максимум двумя физическими дисплеями.