Table of Contents

AR Session Ablaufsteuerung

Dieses Dokument führt durch die Ablaufsteuerung einer AR Session, einschließlich Erstellen, Starten, Stoppen und Zerstören einer AR Session.

Bevor du beginnst

Erstellen

Erstelle APIKeyAccessData mit der appId der Cloud-Positionierungsbibliothek aus der Konfiguration, der serverAddress des Cloud-Dienstes sowie dem apiKey und apiSecret des Cloud-Dienstes.

Verwende dann das erstellte APIKeyAccessData, um MegaTrackerConfigs zu erstellen.

Erstelle anschließend mit MegaTrackerConfigs und dem licenseKey aus der Konfiguration SessionConfigs.

Erzeuge abschließend die Session mit der Methode createSession(sessionConfigs) der EasyARMegaComponent, die an der xr-frame-Szene angehängt ist.

createSession() {
    // Hole die megaComponent aus der Szene
    const megaElement = scene.getElementById('easyar-mega');
    const megaComponent = megaElement.getComponent("easyar-mega") as easyar.EasyARMegaComponent;
    // Authentifizierungskonfiguration für den MegaTracker-Cloud-Dienst
    const apiKeyAccess = new mega.APIKeyAccessData(this.data.appId, this.data.serverAddress, this.data.apiKey, this.data.apiSecret);
    const megaTrackerConfigs: easyar.MegaTrackerConfigs = {
        access: apiKeyAccess
    }
    // Session-Konfiguration
    const sessionConfigs: easyar.SessionConfigs = {
        megaTrackerConfigs: megaTrackerConfigs,
        licenseKey: settings.EasyARLicenseKey
    }
    // Erstelle die Instanz
    session = megaComponent.createSession(sessionConfigs);
}

Dieser Code zeigt, wie nach dem Abrufen der megaComponent aus der Szene eine Session-Instanz mit Konfiguration erstellt wird. [!WARNUNG] Einzelinstanzbeschränkung: In einer Szene darf nur eine Session-Instanz existieren. Vor dem Erstellen einer neuen Session muss sichergestellt werden, dass die alte Instanz mit closeSession() zerstört wurde, da sonst die Erstellung fehlschlägt.

Starten

Verwende normalerweise die Methode start(options) der EasyARSession im Callback, wenn das xr-frame-AR-System bereit ist.

[!WARNUNG] MegaTracker benötigt Daten vom Flächen-AR-Tracker und kann erst arbeiten, nachdem dieser initialisiert wurde.

Registriere in WXML mit bind:ready="handleReady" das Ereignis für den Bereitschaftszustand des AR-Systems:

<xr-scene ar-system="modes:Plane; planeMode: 1" bind:ready="handleReady">

Verwende im Callback handleReady der xr-frame-Komponente die Methode start(options) der EasyARSession, um die Session zu starten.

handleReady: function(event) {
    try {
        // Starte die Session, standardmäßig mit 5 Wiederholungsversuchen bei Fehlern
        await session.start();
    } catch (err) {
        console.error(`EasyAR Session initialization failed: ${err.message}`);
        return;
    }
}

Stoppen und zerstören

Verwende die Methode closeSession() der EasyARMegaComponent, die an der xr-frame-Szene angehängt ist, um die Session zu zerstören.

Es wird empfohlen, dies im detached-Lebenszyklus der xr-frame-Komponente aufzurufen, um sicherzustellen, dass die Zerstörung beim Verlassen der Seite erfolgt (d.h. wenn die Komponenteninstanz aus dem Seitenknotenbaum entfernt wird).

lifetimes: {
    detached: function() {
        const megaElement = scene.getElementById('easyar-mega');
        const megaComponent = megaElement.getComponent("easyar-mega") as easyar.EasyARMegaComponent;
        megaComponent.closeSession();
    }
}

Vordergrund-Hintergrund-Wechsel

Verwende die Methode pause() der EasyARSession, um die Session zu pausieren, wenn die Seite in den Hintergrund wechselt. Verwende die Methode resume() der EasyARSession, um die Session fortzusetzen, wenn die Seite in den Vordergrund zurückkehrt.

/** Aufruf in der Mini-Programm-Seite*/
onHide() {
    if (this.ar) {
        this.ar.pauseSession();
    }
},
onShow() {
    if (this.ar) {
        this.ar.resumeSession();
    }
}
/** Funktion in der xr-frame-Komponente*/
pauseSession(): void {
    if (!session) { console.error("EasyAR Session is not ready"); return;}
    session.pause();
},
resumeSession(): void {
    if (!session) { console.error("EasyAR Session is not ready"); return;}
    session.resume();
}

In diesem Code macht die xr-frame-Komponente die Funktionen pauseSession() und resumeSession() verfügbar.

In der Mini-Programm-Seite wird pauseSession() in onHide aufgerufen (wenn das Mini-Programm vom Vordergrund in den Hintergrund wechselt), um die Session zu pausieren.

In onShow (wenn das Mini-Programm vom Hintergrund in den Vordergrund wechselt) wird resumeSession() aufgerufen, um die Session fortzusetzen.