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
- Verstehe das Konzept und den Ablauf von AR Sessions
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
megaComponentaus 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()undresumeSession()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.