Table of Contents

Kontrol alur AR Session

Dokumen ini memperkenalkan kontrol alur AR Session, termasuk cara membuat, memulai, menghentikan, dan menghancurkan AR Session.

Sebelum memulai

Membuat

Gunakan cloud localization library appId, cloud service serverAddress, cloud service apiKey, dan apiSecret dalam konfigurasi untuk membuat APIKeyAccessData.

Kemudian gunakan APIKeyAccessData yang dibuat untuk membuat MegaTrackerConfigs.

Lalu gunakan MegaTrackerConfigs dan licenseKey dalam konfigurasi untuk membuat SessionConfigs.

Terakhir, gunakan metode createSession(sessionConfigs) dari EasyARMegaComponent yang terpasang pada scene xr-frame untuk membuat session.

createSession() {
    // ambil megaComponent yang terpasang di scene
    const megaElement = scene.getElementById('easyar-mega');
    const megaComponent = megaElement.getComponent("easyar-mega") as easyar.EasyARMegaComponent;
    // konfigurasi autentikasi layanan 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
    }
    // konfigurasi Session
    const sessionConfigs: easyar.SessionConfigs = {
        megaTrackerConfigs: megaTrackerConfigs,
        licenseKey: settings.EasyARLicenseKey
    }
    // buat instance
    session = megaComponent.createSession(sessionConfigs);
}

Kode ini menunjukkan cara memperoleh megaComponent dari scene lalu menggunakan konfigurasi untuk membuat instance session.

Hati-Hati

Batasan instance tunggal: hanya satu instance Session yang boleh ada dalam satu scene. Sebelum membuat Session baru, pastikan closeSession() sudah dipanggil untuk menghancurkan instance lama, jika tidak pembuatan akan gagal.

Memulai

Biasanya, gunakan metode start(options) dari EasyARSession dalam callback saat sistem AR xr-frame sudah siap untuk memulai session.

Peringatan

MegaTracker bergantung pada data yang disediakan oleh planar AR tracker, dan tidak dapat bekerja sebelum planar tracker selesai diinisialisasi.

Di WXML, gunakan bind:ready="handleReady" untuk mendaftarkan event saat sistem AR siap:

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

Dalam callback handleReady pada komponen xr-frame, gunakan metode start(options) dari EasyARSession untuk memulai session.

handleReady: function(event) {
    try {
        //mulai Session; secara default coba ulang 5 kali jika gagal
        await session.start();
    } catch (err) {
        console.error(`EasyAR Session initialization failed: ${err.message}`);
        return;
    }
}

Menghentikan dan menghancurkan

Gunakan metode closeSession() dari EasyARMegaComponent yang terpasang pada scene xr-frame untuk menghancurkan session.

Disarankan untuk memanggilnya dalam lifecycle detached komponen xr-frame agar session dihancurkan saat meninggalkan halaman, yaitu saat instance komponen dihapus dari tree node halaman.

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

Beralih antara foreground dan background

Saat halaman masuk ke background, gunakan metode pause() dari EasyARSession untuk menjeda session. Saat halaman kembali ke foreground, gunakan metode resume() dari EasyARSession untuk melanjutkan session.

/** panggilan halaman Mini Program*/
onHide() {
    if (this.ar) {
        this.ar.pauseSession();
    }
},
onShow() {
    if (this.ar) {
        this.ar.resumeSession();
    }
}
/** fungsi dalam komponen 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();
}

Dalam kode ini, komponen xr-frame mengekspos dua fungsi pauseSession() dan resumeSession().

Di halaman Mini Program, panggil pauseSession() pada onHide, yaitu saat Mini Program berpindah dari foreground ke background, untuk menjeda session.

Panggil resumeSession() pada onShow, yaitu saat Mini Program kembali dari background ke foreground, untuk melanjutkan session.