Table of Contents

Адаптация поворота экрана AR Session

В этой статье описано, как настроить AR Session, когда WeChat Mini Program должен работать в ландшафтном режиме.

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

Перечисление ориентации экрана в плагине Mega Mini Program

Примечание

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

Перечисление ориентации экрана в плагине Mega Mini Program DeviceOrientation:

Constant Value Description
Portrait 0 Portrait
LandscapeLeft 90 LandscapeLeft
PortraitUpsideDown 180 PortraitUpsideDown
LandscapeRight 270 LandscapeRight

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

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

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

Укажите "portrait" (портретный экран) или "landscape" (ландшафтный экран) в соответствии с фактической ситуацией.

Осторожно

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

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

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

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

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

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

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

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