Table of Contents

Сессия AR адаптация поворота экрана

Эта статья объясняет, как настроить сессию AR, когда мини-программа WeChat должна работать в альбомной ориентации.

Перед началом

Перечисление ориентации экрана плагина Mega для мини-программ

Примечание

Определение ориентации экрана телефона см. в официальных документах систем IOS, Android и т.д.

Перечисление ориентации экрана плагина Mega для мини-программ DeviceOrientation:

Константа Значение Описание
Portrait 0 Портретная
LandscapeLeft 90 Ландшафтная влево
PortraitUpsideDown 180 Портретная перевернутая
LandscapeRight 270 Ландшафтная вправо

Изменение ориентации экрана в глобальной конфигурации мини-программы WeChat

Добавьте конфигурацию window в app.json, подробности см. в Реагирование на изменения области отображения.

"window": {
    "pageOrientation": "landscape"
}

Введите "portrait" (портретная) или "landscape" (альбомная) в зависимости от ситуации.

Осторожно

Никогда не используйте "auto" в AR-приложениях для мини-программ, так как в некоторых случаях это может вызвать серьезные аномалии в AR-изображении.

Настройка ориентации экрана

Вызовите setDeviceOrientation(deviceOrientation), передав направление поворота экрана. Можно вызывать в любое время, изменения вступают в силу немедленно.

Например, для использования в альбомном режиме, когда экран повернут на 90 градусов против часовой стрелки относительно естественного вертикального положения:

let deviceOrientation = mega.DeviceOrientation.LandscapeLeft;
session.setDeviceOrientation(deviceOrientation);

Настройка ориентации экрана, предоставляемая плагином mega, предназначена для компенсации отсутствия отслеживания ориентации экрана в мини-программах WeChat. WeChat в настройке pageOrientation предоставляет только два варианта: portrait и landscape, чего недостаточно для AR-приложений. Например, альбомный режим с поворотом на 90 градусов против часовой стрелки от естественного положения и альбомный режим с поворотом на 270 градусов против часовой стрелки совершенно различны.

Поэтому, когда pageOrientation в app.json установлен как portrait, можно не вызывать setDeviceOrientation(deviceOrientation), поскольку естественное вертикальное направление большинства телефонов является ориентацией по умолчанию для сессии.

Когда pageOrientation в app.json установлен как landscape, необходимо вызвать setDeviceOrientation(deviceOrientation), чтобы зафиксировать ориентацию экрана как LandscapeLeft или LandscapeRight.