Aktiviere AR, um Augmented Reality-Funktionen in deiner neuen oder bestehenden App zu verwenden.
Konfiguriere deine App als AR-erforderlich oder AR optional.
Um auf einzelnen Geräten Platz 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 erforderlich und AR optional. Diese Kennzeichnung bestimmt, wie die App mit den Google Play-Diensten für AR-App interagiert.
Ohne ARCore funktioniert eine App, die erforderlich für AR ist, nicht. Dafür ist ein mit ARCore unterstütztes Gerät erforderlich, auf dem die Google Play-Dienste für AR installiert sind.
- Im Google Play Store werden Apps, die mit AR erforderlich sind, nur auf Geräten verfügbar gemacht, die ARCore unterstützen.
- Wenn Nutzer eine App installieren, die für AR erforderlich ist, werden die Google Play-Dienste für AR automatisch vom Google Play Store auf ihrem Gerät installiert. Ihre App muss jedoch trotzdem zusätzliche Laufzeitprüfungen durchführen, falls Google Play-Dienste für AR veraltet ist oder manuell deinstalliert wurde.
Bei optionalen AR-Apps wird ARCore verwendet, um bestehende Funktionen zu verbessern. Die optionalen AR-Funktionen sind nur auf Geräten verfügbar, die ARCore unterstützen, auf denen die Google Play-Dienste für AR installiert sind.
- Optionale AR-Apps können auf Geräten, die ARCore nicht unterstützen, installiert und ausgeführt werden.
- Wenn Nutzer eine optionale AR-App installieren, werden die Google Play-Dienste für AR vom Google Play Store nicht automatisch auf dem Gerät installiert.
AR erforderlich | Optionale AR | |
---|---|---|
Nutzung der AR-Funktion | Für die grundlegenden Funktionen deiner App ist ARCore erforderlich. | ARCore erweitert die Funktionalität deiner App. Deine App kann ohne ARCore-Unterstützung ausgeführt werden. |
Sichtbarkeit im Play Store | Ihre App wird im Play Store nur auf Geräten veröffentlicht, die ARCore unterstützen. | Ihre App folgt den üblichen Verfahren für Einträge. |
Installationsmethode für Google Play-Dienste für AR | Der Play Store installiert zusammen mit Ihrer App die Google Play-Dienste für AR. | Deine App verwendet
<ph type="x-smartling-placeholder"></ph>
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), zum Ausführen von AR-Funktionen ist jedoch Android 7.0 (API-Level 24) erforderlich. |
Du musst ArCoreApk_checkAvailability() oder ArCoreApk_checkAvailabilityAsync() verwenden, um den ARCore-Support und den Installationsstatus zu prüfen
|
||
Muss verwendet werden
<ph type="x-smartling-placeholder"></ph>
ArCoreApk.requestInstall()
um Google Play-Dienste für AR zu installieren |
Wenn du festlegen möchtest, dass deine App AR erforderlich oder optional ist, musst du deine AndroidManifest.xml
so ändern, dass sie die folgenden Einträge enthält:
AR 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>
Optionale AR
<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 einen minSdkVersion
von mindestens 24
anzugeben:
android {
defaultConfig {
…
minSdkVersion 24
}
}
Build-Abhängigkeiten hinzufügen
Achten Sie darauf, dass die Datei
build.gradle
Ihres Projekts das Maven-Repository von Google enthält.allprojects { repositories { google() … } }
Fügen Sie der Datei
build.gradle
Ihres Moduls eine benutzerdefinierte Aufgabe hinzu, um enthaltene native Bibliotheken aus der ARCore-AAR-Datei zu extrahieren. Auf diese Weise können sie direkt in einem C- oder C++-Projekt referenziert werden.Definieren Sie im Verzeichnis
app/build
eine Variable für das Verzeichnis, in das die nativen Bibliotheken extrahiert werden sollen.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, um die nativen Bibliotheken aus der AAR-Datei zu kopieren und den Build-Abhängigkeiten hinzuzufügen.
// 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 sowohl für die Java- als auch 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' ... }
Referenzieren Sie die nativen Bibliotheken in
CMakeLists.txt
.# 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 ausführen
Führen Sie während der Laufzeit die folgenden Schritte aus, damit AR-Funktionen in Ihrer App reibungslos funktionieren.
Prüfen, ob ARCore unterstützt wird
Sowohl in AR-Apps als auch bei optionalen AR-Apps sollte überArCoreApk_checkAvailability()
oder ArCoreApk_checkAvailabilityAsync()
festgestellt werden, ob das aktuelle Gerät ARCore unterstützt. Auf Geräten, die ARCore nicht unterstützen, sollten in Apps AR-bezogene Funktionen deaktiviert und zugehörige UI-Elemente ausgeblendet werden.
Eine Android NDK-App kann die Java ArCoreApk
-Klasse 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 ist dies möglicherweise einfacher als die Verwendung der ArCoreApk_
-Funktionen, da 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.
}
}
Google Play-Dienste für AR wird zwar zusammen mit deiner App für AR erforderlich installiert, Nutzer mit nicht unterstützten Geräten installieren sie aber möglicherweise von einer externen Quelle. Mit ArCoreApk_checkAvailability()
oder ArCoreApk_checkAvailabilityAsync()
kannst du prüfen, ob ARCore-Support für dich verfügbar ist.
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. Zur Reduzierung der wahrgenommenen Latenz und des Pop-in-Fensters sollten Apps zu Beginn des Lebenszyklus einmal ArCoreApk_checkAvailability()
aufrufen, um die Abfrage zu starten. Der zurückgegebene Wert wird dabei ignoriert. Auf diese Weise ist ein im Cache gespeichertes Ergebnis sofort verfügbar, wenn ein UI-Element zum Eintreten in AR angezeigt wird.
Prüfen, ob Google Play-Dienste für AR installiert ist
Sowohl für AR required als auch für AR optionale Apps muss Folgendes verwendet werden:
<ph type="x-smartling-placeholder"></ph>
ArCoreApk.requestInstall()
bevor Sie eine ARCore-Sitzung erstellen, 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.
}
Anforderungen an den Datenschutz für Nutzer erfüllen
Damit du deine App im Play Store veröffentlichen kannst, muss sie den ARCore-Richtlinien entsprechen Datenschutzanforderungen für Nutzer.