Konfiguriere eine ARCore-Sitzung, um AR-Funktionen für deine App zu entwickeln.
Was ist eine Sitzung?
Alle AR-Prozesse wie Bewegungserkennung,
Umgebungsverständnis und die Schätzung der Beleuchtung
werden in einem ARCore-Modell durchgeführt,
Sitzung. ArSession
ist der Haupteinstiegspunkt für ARCore
der API erstellen. Es verwaltet den AR-Systemstatus und den Sitzungslebenszyklus.
die App, um eine Sitzung zu erstellen, zu konfigurieren, zu starten oder zu beenden. Am wichtigsten ist,
ermöglicht es der App, Frames zu empfangen, die Zugriff auf das Kamerabild und
Position des Geräts.
Die Sitzung kann verwendet werden, um die folgenden Funktionen zu konfigurieren:
- Schätzung der Beleuchtung
- Cloudanker
- Erweiterte Bilder
- Erweiterte Gesichter
- Depth API
- Sofortige Platzierung
- ARCore Geospatial API
Prüfen, ob ARCore installiert und auf dem neuesten Stand ist
Bevor Sie ein ArSession
erstellen, prüfen Sie, ob ARCore installiert und auf dem neuesten Stand ist.
Wenn ARCore nicht installiert ist, schlägt die Sitzungserstellung fehl und alle nachfolgenden
Für die Installation oder das Upgrade von ARCore ist ein Neustart der App erforderlich.
/* * Check if ARCore is currently usable, i.e. whether ARCore is supported and * up to date. */ int32_t is_arcore_supported_and_up_to_date(void* env, void* context) { ArAvailability availability; ArCoreApk_checkAvailability(env, context, &availability); switch (availability) { case AR_AVAILABILITY_SUPPORTED_INSTALLED: return true; case AR_AVAILABILITY_SUPPORTED_APK_TOO_OLD: case AR_AVAILABILITY_SUPPORTED_NOT_INSTALLED: { ArInstallStatus install_status; // ArCoreApk_requestInstall is processed asynchronously. CHECK(ArCoreApk_requestInstall(env, context, true, &install_status) == AR_SUCCESS); return false; } case AR_AVAILABILITY_UNSUPPORTED_DEVICE_NOT_CAPABLE: // This device is not supported for AR. return false; case AR_AVAILABILITY_UNKNOWN_CHECKING: // ARCore is checking the availability with a remote query. // This function should be called again after waiting 200 ms // to determine the query result. handle_check_later(); return false; case AR_AVAILABILITY_UNKNOWN_ERROR: case AR_AVAILABILITY_UNKNOWN_TIMED_OUT: // There was an error checking for AR availability. // This may be due to the device being offline. // Handle the error appropriately. handle_unknown_error(); return false; default: // All enum cases have been handled. return false; } }
Sitzung erstellen
Eine Sitzung in ARCore erstellen und konfigurieren
// Create a new ARCore session. ArSession* ar_session = NULL; CHECK(ArSession_create(env, context, &ar_session) == AR_SUCCESS); // Create a session config. ArConfig* ar_config = NULL; ArConfig_create(ar_session, &ar_config); // Do feature-specific operations here, such as enabling depth or turning on // support for Augmented Faces. // Configure the session. CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS);
Sitzung schließen
ArSession
besitzt eine erhebliche Menge an nativem Heap-Speicher. Fehler bei
die Sitzung explizit geschlossen werden,
kann dies dazu führen, dass der
Abstürze. Wenn die AR-Sitzung nicht mehr benötigt wird, rufen Sie
ArSession_destroy()
um Ressourcen freizugeben.
// Release memory used by the AR session. ArSession_destroy(session);