Control del flujo de AR Session
Este documento presenta el control del flujo de AR Session, incluido cómo crear, iniciar, detener y destruir AR Session.
Antes de comenzar
- Comprenda el concepto y el flujo de AR Session
Crear
Use el appId de la biblioteca de cloud localization, el serverAddress de cloud service, apiKey y apiSecret de la configuración para crear APIKeyAccessData.
Después use el APIKeyAccessData creado para crear MegaTrackerConfigs.
Luego use MegaTrackerConfigs y el licenseKey de la configuración para crear SessionConfigs.
Finalmente, cree la session con el método createSession(sessionConfigs) de EasyARMegaComponent montado en la escena xr-frame.
createSession() {
// obtiene el megaComponent montado en la escena
const megaElement = scene.getElementById('easyar-mega');
const megaComponent = megaElement.getComponent("easyar-mega") as easyar.EasyARMegaComponent;
// configuracion de autenticacion del servicio en la nube MegaTracker
const apiKeyAccess = new mega.APIKeyAccessData(this.data.appId, this.data.serverAddress, this.data.apiKey, this.data.apiSecret);
const megaTrackerConfigs: easyar.MegaTrackerConfigs = {
access: apiKeyAccess
}
// configuracion de Session
const sessionConfigs: easyar.SessionConfigs = {
megaTrackerConfigs: megaTrackerConfigs,
licenseKey: settings.EasyARLicenseKey
}
// crea una instancia
session = megaComponent.createSession(sessionConfigs);
}
Este código muestra cómo obtener
megaComponentdesde la escena y luego usar la configuración para crear una instancia de session.
Precaución
Límite de instancia única: solo se permite una instancia de Session en una escena. Antes de crear una nueva Session, debe asegurarse de haber llamado a closeSession() para destruir la instancia antigua; de lo contrario, la creación fallará.
Iniciar
Normalmente, en el callback donde el sistema AR de xr-frame está listo, use el método start(options) de EasyARSession para iniciar la session.
Advertencia
MegaTracker depende de los datos proporcionados por el planar AR tracker y no puede funcionar antes de que el planar tracker termine de inicializarse.
En WXML, use bind:ready="handleReady" para registrar el evento de sistema AR listo:
<xr-scene ar-system="modes:Plane; planeMode: 1" bind:ready="handleReady">
En la función callback handleReady del componente xr-frame, use el método start(options) de EasyARSession para iniciar la session.
handleReady: function(event) {
try {
//inicia Session; por defecto reintenta 5 veces si falla
await session.start();
} catch (err) {
console.error(`EasyAR Session initialization failed: ${err.message}`);
return;
}
}
Detener y destruir
Use el método closeSession() de EasyARMegaComponent montado en la escena xr-frame para destruir la session.
Se recomienda llamarlo en el lifecycle detached del componente xr-frame para garantizar que se destruya al salir de la página, es decir, cuando la instancia del componente se elimina del árbol de nodos de la página.
lifetimes: {
detached: function() {
const megaElement = scene.getElementById('easyar-mega');
const megaComponent = megaElement.getComponent("easyar-mega") as easyar.EasyARMegaComponent;
megaComponent.closeSession();
}
}
Cambio entre foreground y background
Cuando la página pasa a background, use el método pause() de EasyARSession para pausar la session. Cuando la página vuelve a foreground, use el método resume() de EasyARSession para reanudar la session.
/** llamada de la pagina del miniprograma*/
onHide() {
if (this.ar) {
this.ar.pauseSession();
}
},
onShow() {
if (this.ar) {
this.ar.resumeSession();
}
}
/** funcion del componente 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();
}
En este código, el componente xr-frame expone las dos funciones
pauseSession()yresumeSession().En la página Mini Program, llame a
pauseSession()en onHide, es decir, cuando el Mini Program pasa de foreground a background, para pausar la session.Llame a
resumeSession()en onShow, es decir, cuando el Mini Program vuelve de background a foreground, para reanudar la session.