Aktivieren Sie AR, um Augmented Reality-Funktionen in Ihrer neuen oder bestehenden App zu nutzen.
App als „AR Required“ oder „AR Optional“ konfigurieren
Um Speicherplatz auf einzelnen Geräten zu sparen, werden alle AR-Funktionen in einer App namens Google Play-Dienste für AR gespeichert, die separat über den Play Store aktualisiert wird. Android-Apps, die AR-Funktionen verwenden, kommunizieren über das ARCore SDK mit den Google Play-Diensten für AR. Eine App, die AR-Funktionen unterstützt, kann auf zwei Arten konfiguriert werden: AR Required (AR erforderlich) und AR Optional (AR optional). Diese Bezeichnung bestimmt, wie die App mit der App „Google Play-Dienste für AR“ interagiert.
Eine AR Required-App kann ohne ARCore nicht funktionieren. Dazu ist ein ARCore-kompatibles Gerät erforderlich, auf dem die Google Play-Dienste für AR installiert sind.
- Im Google Play Store werden nur Apps, für die AR erforderlich ist, auf Geräten verfügbar gemacht, die ARCore unterstützen.
- Wenn Nutzer eine App installieren, für die AR erforderlich ist, werden die Google Play-Dienste für AR automatisch auf ihrem Gerät installiert. Ihre App muss jedoch weiterhin zusätzliche Laufzeitprüfungen durchführen, falls die Google Play-Dienste für AR nicht auf dem neuesten Stand sind oder manuell deinstalliert wurden.
Eine AR Optional-App verwendet ARCore, um vorhandene Funktionen zu verbessern. Die App enthält optionale AR-Funktionen, die nur auf ARCore-kompatiblen Geräten aktiviert werden, auf denen Google Play-Dienste für AR installiert sind.
- Apps mit optionaler AR-Unterstützung können auf Geräten installiert und ausgeführt werden, die ARCore nicht unterstützen.
- Wenn Nutzer eine AR Optional-App installieren, werden die Google Play-Dienste für AR nicht automatisch auf dem Gerät installiert.
| AR-Berechtigung erforderlich | AR-Berechtigung optional | |
|---|---|---|
| Nutzung von AR-Funktionen | Ihre App benötigt ARCore für grundlegende Funktionen. | ARCore erweitert die Funktionen Ihrer App. Ihre App kann auch ohne ARCore-Unterstützung ausgeführt werden. |
| Sichtbarkeit im Google Play Store | Ihre App wird im Google Play Store nur auf Geräten mit ARCore-Unterstützung aufgeführt. | Für Ihre App gelten die normalen Verfahren für Einträge. |
| Installationsmethode für Google Play-Dienste für AR | Der Play Store installiert die Google Play-Dienste für AR zusammen mit Ihrer App. | Ihre App verwendet
ArCoreApk.requestInstall()
, um ARCore herunterzuladen und zu installieren. |
Anforderungen für Android minSdkVersion |
Android 7.0 (API-Level 24) | Android 4.4 (API-Level 19). Für die Ausführung von AR-Funktionen ist jedoch mindestens Android 7.0 (API-Level 24) erforderlich. |
Sie müssen ArCoreApk_checkAvailability() oder ArCoreApk_checkAvailabilityAsync() verwenden, um die ARCore-Unterstützung und den Installationsstatus zu prüfen.
|
||
Sie müssen
ArCoreApk.requestInstall()
verwenden, um die Google Play-Dienste für AR zu installieren. |
Wenn Sie Ihre App als „AR Required“ oder „AR Optional“ kennzeichnen möchten, müssen Sie Ihre AndroidManifest.xml-Datei aktualisieren und die folgenden Einträge hinzufügen:
AR-Berechtigung erforderlich
<uses-permission android:name="android.permission.CAMERA" />
<!-- Limits app visibility in the Google Play Store to ARCore supported devices
(https://developers.google.com/ar/devices). -->
<uses-feature android:name="android.hardware.camera.ar" />
<application …>
…
<!-- "AR Required" app, requires "Google Play Services for AR" (ARCore)
to be installed, as the app does not include any non-AR features. -->
<meta-data android:name="com.google.ar.core" android:value="required" />
</application>
AR-Berechtigung optional
<uses-permission android:name="android.permission.CAMERA" />
<!-- If your app was previously AR Required, don't forget to remove the
`<uses-feature android:name="android.hardware.camera.ar" />` entry, as
this would limit app visibility in the Google Play Store to only
ARCore supported devices. -->
<application …>
…
<!-- "AR Optional" app, contains non-AR features that can be used when
"Google Play Services for AR" (ARCore) is not available. -->
<meta-data android:name="com.google.ar.core" android:value="optional" />
</application>
Ändern Sie dann die build.gradle Ihrer App, um ein minSdkVersion von mindestens 24 anzugeben:
android {
defaultConfig {
…
minSdkVersion 24
}
}
Build-Abhängigkeiten hinzufügen
Achten Sie darauf, dass die
build.gradle-Datei Ihres Projekts das Maven-Repository von Google enthält.allprojects { repositories { google() … } }Fügen Sie der Datei
build.gradleIhres Moduls eine benutzerdefinierte Aufgabe hinzu, um die enthaltenen nativen Bibliotheken aus der ARCore-Datei AAR zu extrahieren. So können sie direkt in einem C- oder C++-Projekt referenziert werden.Definieren Sie im Verzeichnis
app/buildeine Variable für das Verzeichnis, in das die nativen Bibliotheken extrahiert werden.Erstellen Sie eine Gradle-Konfiguration für die Daten und Extraktionsaufgaben.
/* The ARCore AAR library contains native shared libraries that are extracted before building to a temporary directory. */ def arcore_libpath = "${buildDir}/arcore-native" // Create a configuration to mark which aars to extract .so files from configurations { natives }Erstellen Sie eine Aufgabe zum Kopieren der nativen Bibliotheken aus der AAR-Datei und fügen Sie sie den Build-Abhängigkeiten hinzu.
// Extracts the shared libraries from AARs in the native configuration // so that NDK builds can access these libraries. task extractNativeLibraries() { // Extract every time. outputs.upToDateWhen { false } doFirst { configurations.natives.files.each { f -> copy { from zipTree(f) into arcore_libpath include "jni/**/*" } } } } tasks.whenTaskAdded { task-> if (task.name.contains("external") && !task.name.contains("Clean")) { task.dependsOn(extractNativeLibraries) } }Konfigurieren Sie die nativen Build-Flags, um die Speicherorte an die externen Build-Tools zu übergeben.
// From the sample app. externalNativeBuild { cmake { cppFlags "-std=c++11", "-Wall" arguments "-DANDROID_STL=c++_static", "-DARCORE_LIBPATH=${arcore_libpath}/jni", "-DARCORE_INCLUDE=${project.rootDir}/../../libraries/include" } }Fügen Sie die Abhängigkeiten für die Java- und die nativen Bibliotheken hinzu.
dependencies { ... // Add Java and native dependencies to the ARCore library. implementation 'com.google.ar:core:1.33.0' natives 'com.google.ar:core:1.33.0' ... }Verweisen Sie in
CMakeLists.txtauf die nativen Bibliotheken.# Import the ARCore library. add_library(arcore SHARED IMPORTED) set_target_properties(arcore PROPERTIES IMPORTED_LOCATION ${ARCORE_LIBPATH}/${ANDROID_ABI}/libarcore_sdk_c.so INTERFACE_INCLUDE_DIRECTORIES ${ARCORE_INCLUDE} )
Laufzeitprüfungen durchführen
Führen Sie während der Laufzeit die folgenden Schritte aus, um sicherzustellen, dass AR-Funktionen in Ihrer App reibungslos ausgeführt werden.
Prüfen, ob ARCore unterstützt wird
Sowohl für Apps, für die AR erforderlich ist, als auch für Apps, für die AR optional ist, sollteArCoreApk_checkAvailability() oder ArCoreApk_checkAvailabilityAsync() verwendet werden, um festzustellen, ob das aktuelle Gerät ARCore unterstützt. Auf Geräten, die ARCore nicht unterstützen, sollten Apps AR-bezogene Funktionen deaktivieren und zugehörige UI-Elemente ausblenden.
Eine Android NDK-App kann die Java-Klasse ArCoreApk verwenden, um die Kompatibilität zu prüfen und die Installation in der nativen C ARCore Session API zu verwalten. Je nach Struktur Ihrer App kann dies einfacher sein als die Verwendung der ArCoreApk_-Funktionen, da hierbei eine große Menge an Fehlerbehandlung und Interaktion mit der Benutzeroberfläche erforderlich ist.
void maybeEnableArButton(JNIEnv env, jobject context) {
// Likely called from Activity.onCreate() of an activity with AR buttons.
ArAvailability availability
ArCoreApk_checkAvailability(env, context, &availability);
if (availability == AR_AVAILABILITY_UNKNOWN_CHECKING) {
// Set a timer to call maybeEnableArButton() again after about 200ms.
}
if (availability == AR_AVAILABILITY_SUPPORTED_NOT_INSTALLED ||
availability == AR_AVAILABILITY_SUPPORTED_APK_TOO_OLD ||
availability == AR_AVAILABILITY_SUPPORTED_INSTALLED) {
// Show or enable the AR button.
} else {
// Hide or disable the AR button.
}
}
ArCoreApk_checkAvailability() oder ArCoreApk_checkAvailabilityAsync() verwenden, um nach ARCore-Unterstützung zu suchen, wird eine einheitliche Nutzererfahrung gewährleistet.
ArCoreApk_checkAvailability() muss möglicherweise Netzwerkressourcen abfragen, um festzustellen, ob das Gerät ARCore unterstützt. Während dieser Zeit wird AR_AVAILABILITY_UNKNOWN_CHECKING zurückgegeben. Um die wahrgenommene Latenz und das Einblenden zu verringern, sollten Apps ArCoreApk_checkAvailability() einmal früh im Lebenszyklus aufrufen, um die Anfrage zu starten. Der zurückgegebene Wert sollte dabei ignoriert werden. So ist ein Ergebnis im Cache sofort verfügbar, wenn ein UI-Element zum Aufrufen von AR angezeigt werden soll.
Prüfen, ob die Google Play-Dienste für AR installiert sind
Sowohl für Apps, die ARCore erfordern, als auch für Apps, die ARCore optional nutzen, muss vor dem Erstellen einer ARCore-Sitzung
ArCoreApk.requestInstall()
verwendet werden, um zu prüfen, ob eine kompatible Version der Google Play-Dienste für AR (noch) installiert ist und ob alle erforderlichen ARCore-Geräteprofildaten heruntergeladen wurden.
// Tracks if an installation request has already been triggered.
bool install_requested_;
void nativeOnCreate() {
// Do other setup here.
install_requested_ = false;
}
void nativeOnResume(JNIEnv env, jobject activity) {
if (ar_session_ == null) {
bool user_requested_install = !install_requested_;
ArInstallStatus install_status;
// Ensure that Google Play Services for AR and ARCore device profile data are
// installed and up to date.
ArStatus error = ArCoreApk_requestInstall(
env, activity, user_requested_install, &install_status);
if (error != AR_SUCCESS) {
// Inform user of error.
return;
}
switch (install_status) {
case AR_INSTALL_STATUS_INSTALLED:
break;
case AR_INSTALL_STATUS_INSTALL_REQUESTED:
// When this method returns AR_INSTALL_STATUS_INSTALL_REQUESTED:
// 1. This activity will be paused.
// 2. The user is prompted to install or update Google Play
// Services for AR (market://details?id=com.google.ar.core).
// 3. ARCore downloads the latest device profile data.
// 4. This activity is resumed. The next invocation of
// ArCoreApk_requestInstall() will either return
// AR_INSTALL_STATUS_INSTALLED or throw an exception if the
// installation or update did not succeed.
install_requested_ = true;
return;
}
// Request camera permissions.
error = ArSession_create(env, context, &ar_session_);
if (error != AR_SUCCESS) {
// Inform user of error.
return;
}
// Configure the ARCore session.
}
// Normal onResume behavior.
}
Datenschutzanforderungen für Nutzer einhalten
Damit Sie Ihre App im Google Play Store veröffentlichen können, muss sie die Datenschutzanforderungen für Nutzer von ARCore erfüllen.