Flusso di controllo della sessione AR
Questo documento introduce il flusso di controllo della sessione AR, inclusi come creare, avviare, fermare e distruggere una sessione AR.
Prima di iniziare
- Comprendi concetti e flusso della sessione AR
Creazione
Usa la appId della libreria di localizzazione cloud dalla configurazione, l'indirizzo del server cloud serverAddress, la chiave API cloud apiKey e il segreto apiSecret per creare APIKeyAccessData.
Quindi usa il APIKeyAccessData creato per creare MegaTrackerConfigs.
Poi usa MegaTrackerConfigs e la licenseKey dalla configurazione per creare SessionConfigs.
Infine, utilizza il metodo createSession(sessionConfigs) del componente EasyARMegaComponent montato nella scena di xr-frame per creare la sessione.
createSession() {
// Ottieni il componente mega montato nella scena
const megaElement = scene.getElementById('easyar-mega');
const megaComponent = megaElement.getComponent("easyar-mega") as easyar.EasyARMegaComponent;
// Configurazione di autenticazione del servizio 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
}
// Configurazione della sessione
const sessionConfigs: easyar.SessionConfigs = {
megaTrackerConfigs: megaTrackerConfigs,
licenseKey: settings.EasyARLicenseKey
}
// Crea un'istanza
session = megaComponent.createSession(sessionConfigs);
}
Questo codice dimostra come ottenere
megaComponentdalla scena e quindi utilizzare la configurazione per creare un'istanza di sessione.
Attenzione
Limitazione di istanza singola: è consentita solo un'istanza di sessione in una scena. Prima di creare una nuova sessione, devi assicurarti che l'istanza precedente sia stata distrutta chiamando closeSession(), altrimenti la creazione fallirà.
Avvio
Generalmente, nel callback di preparazione del sistema AR di xr-frame, usa il metodo start(options) di EasyARSession per avviare la sessione.
Avvertenza
MegaTracker dipende dai dati forniti dal tracker AR basato su piano e non può funzionare prima che il tracker basato su piano sia inizializzato.
In WXML, usa bind:ready="handleReady" per registrare l'evento di preparazione del sistema AR:
<xr-scene ar-system="modes:Plane; planeMode: 1" bind:ready="handleReady">
Nella funzione di callback handleReady del componente xr-frame, usa il metodo start(options) di EasyARSession per avviare la sessione.
handleReady: function(event) {
try {
// Avvia la sessione, per impostazione predefinita riprova 5 volte in caso di errore
await session.start();
} catch (err) {
console.error(`EasyAR Session initialization failed: ${err.message}`);
return;
}
}
Arresto e distruzione
Usa il metodo closeSession() del componente EasyARMegaComponent montato nella scena di xr-frame per distruggere la sessione.
Si consiglia di chiamare nel ciclo di vita detached del componente xr-frame per garantire la distruzione quando si lascia la pagina (cioè quando l'istanza del componente viene rimossa dall'albero dei nodi della pagina).
lifetimes: {
detached: function() {
const megaElement = scene.getElementById('easyar-mega');
const megaComponent = megaElement.getComponent("easyar-mega") as easyar.EasyARMegaComponent;
megaComponent.closeSession();
}
}
Passaggio tra primo piano e sfondo
Quando la pagina passa in background, usa il metodo pause() di EasyARSession per sospendere la sessione. Quando la pagina torna in primo piano, usa il metodo resume() di EasyARSession per riprendere la sessione.
/** Chiamata nella pagina dell'app miniprogram*/
onHide() {
if (this.ar) {
this.ar.pauseSession();
}
},
onShow() {
if (this.ar) {
this.ar.resumeSession();
}
}
/** Funzione nel 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();
}
In questo codice, il componente xr-frame espone due funzioni:
pauseSession()eresumeSession().Nella pagina dell'app miniprogram, in onHide (quando l'app passa dal primo piano allo sfondo), chiama
pauseSession()per sospendere la sessione.In onShow (quando l'app torna dallo sfondo al primo piano), chiama
resumeSession()per riprendere la sessione.