Contrôle du flux de session AR
Ce document présente le contrôle du flux de session AR, y compris comment créer, démarrer, arrêter et détruire une session AR.
Avant de commencer
- Comprendre les concepts et le flux de session AR
Création
Créez APIKeyAccessData en utilisant appId de la bibliothèque de localisation cloud, serverAddress du service cloud, et apiKey et apiSecret du service cloud dans la configuration.
Utilisez ensuite le APIKeyAccessData créé pour créer MegaTrackerConfigs.
Puis utilisez MegaTrackerConfigs et licenseKey de la configuration pour créer SessionConfigs.
Enfin, créez la session en utilisant la méthode createSession(sessionConfigs) du EasyARMegaComponent monté dans la scène xr-frame.
createSession() {
// Obtenir le megaComponent monté dans la scène
const megaElement = scene.getElementById('easyar-mega');
const megaComponent = megaElement.getComponent("easyar-mega") as easyar.EasyARMegaComponent;
// Configuration d'authentification du service cloud MegaTracker
const apiKeyAccess = new mega.APIKeyAccessData(this.data.appId, this.data.serverAddress, this.data.apiKey, this.data.apiSecret);
const megaTrackerConfigs: easyar.MegaTrackerConfigs = {
access: apiKeyAccess
}
// Configuration de la session
const sessionConfigs: easyar.SessionConfigs = {
megaTrackerConfigs: megaTrackerConfigs,
licenseKey: settings.EasyARLicenseKey
}
// Créer une instance
session = megaComponent.createSession(sessionConfigs);
}
Ce code montre comment obtenir
megaComponentdepuis la scène puis créer une instance de session en utilisant la configuration.
Attention
Restriction d'instance unique : une seule instance de session est autorisée dans une scène. Avant de créer une nouvelle session, assurez-vous d'avoir appelé closeSession() pour détruire l'ancienne instance, sinon la création échouera.
Démarrage
Utilisez généralement la méthode start(options) de EasyARSession dans le rappel de préparation du système AR de xr-frame pour démarrer la session.
Avertissement
MegaTracker dépend des données fournies par le traqueur AR planaire et ne peut fonctionner avant l'initialisation du traqueur planaire.
Dans WXML, enregistrez l'événement de préparation du système AR avec bind:ready="handleReady" :
<xr-scene ar-system="modes:Plane; planeMode: 1" bind:ready="handleReady">
Dans la fonction de rappel handleReady du composant xr-frame, utilisez la méthode start(options) de EasyARSession pour démarrer la session.
handleReady: function(event) {
try {
// Démarrer la session, par défaut 5 tentatives en cas d'échec
await session.start();
} catch (err) {
console.error(`EasyAR Session initialization failed: ${err.message}`);
return;
}
}
Arrêt et destruction
Utilisez la méthode closeSession() du EasyARMegaComponent monté dans la scène xr-frame pour détruire la session.
Il est recommandé d'appeler cette méthode dans le cycle de vie detached du composant xr-frame pour garantir la destruction lors de la sortie de la page (c'est-à-dire lorsque l'instance du composant est retirée de l'arbre des nœuds de la page).
lifetimes: {
detached: function() {
const megaElement = scene.getElementById('easyar-mega');
const megaComponent = megaElement.getComponent("easyar-mega") as easyar.EasyARMegaComponent;
megaComponent.closeSession();
}
}
Changement entre premier plan et arrière-plan
Lorsque la page passe en arrière-plan, utilisez la méthode pause() de EasyARSession pour suspendre la session. Lorsque la page revient au premier plan, utilisez la méthode resume() de EasyARSession pour reprendre la session.
/** Appel de la page mini-programme*/
onHide() {
if (this.ar) {
this.ar.pauseSession();
}
},
onShow() {
if (this.ar) {
this.ar.resumeSession();
}
}
/** Fonction dans le composant xr-frame*/
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();
}
Ce code expose deux fonctions
pauseSession()etresumeSession()dans le composant xr-frame.Dans la page mini-programme, appelez
pauseSession()dans onHide lorsque le mini-programme passe du premier plan à l'arrière-plan pour suspendre la session.Dans onShow lorsque le mini-programme revient de l'arrière-plan au premier plan, appelez
resumeSession()pour reprendre la session.