Google setzt sich für die Förderung der Rassengerechtigkeit für schwarze Gemeinschaften ein. Siehe wie.

ARCore aktivieren

Auf dieser Seite wird beschrieben, wie Sie die ARCore-Funktionalität in Ihren Android NDK-Projekten aktivieren. Dazu müssen Sie:

  1. AR erforderlich oder AR optional zum Manifest hinzufügen
  2. In Bauabhängigkeiten zu einem Projekt
  3. Führen Laufzeit überprüft das Gerät ist , um sicherzustellen , Arcore Gestützte und dass Google Play Services für AR installiert ist es
  4. Stellen Sie sicher , dass Ihre App und erfüllt Arcore der Benutzerdatenschutzanforderungen

Google Play-Dienste für AR

Arcore SDKs machen AR verfügbaren Funktionen auf Arcore Geräten unterstützt , die haben Google Play Services für AR (Arcore) installiert.

Google Play Services für AR wird auf den meisten unterstützten Geräten automatisch installiert und auf dem neuesten Stand gehalten.

Vor dem Starten einer AR-Sitzung müssen Apps:

  1. Überprüfen Sie, ob Arcore unterstützt wird , durch den Aufruf ArCoreApk_checkAvailability .
  2. Überprüfen Sie, ob Google Play Services für AR installiert ist und auf dem neuesten Stand, und das erforderliche Arcore Geräteprofildaten heruntergeladen wurde, durch den Aufruf ArCoreApk_requestInstall .

AR erforderlich oder AR optional zum Manifest hinzufügen

AR Required und AR Optional: eine Anwendung , die Abstützungen Funktionen AR kann auf zwei Arten konfiguriert werden.

AR erforderlich

Verwendbar zu sein, erfordert eine AR Required App eine Arcore stützter Geräte , die hat Google Play Services für AR darauf installiert.

  • Der Google Play Store macht AR Erforderlich nur verfügbar apps Geräte , dass die Unterstützung Arcore .

  • Wenn Benutzer eine AR - Required App installieren, die Google Play Shop automatisch installiert Google Play Services für AR . Allerdings müssen Sie Ihre App noch zusätzlich durchführen Laufzeitprüfungen bei Google Play Services für AR muss aktualisiert werden , oder manuell deinstalliert wurde.

Weitere Informationen finden Sie Publishing AR Apps im Google Play Store .

Zu erklären , Ihre App AR erforderlich sein, ändern Sie Ihre AndroidManifest.xml die folgenden Einträge hinzu:

<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" android:required="true"/>

<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>

Dann ändern Sie Ihre App build.gradle eine angeben minSdkVersion von mindestens 24:

android {
    defaultConfig {
        …
        minSdkVersion 24
    }
}

AR optional

Eine AR Optional App verfügt über optionale AR - Funktionen, die nur aktiviert werden , auf Arcore Geräte unterstützt , die haben Google Play Services für AR installiert.

  • AR Optionale Apps können auf Geräten installiert und ausgeführt werden, die ARCore nicht unterstützen.

  • Wenn Benutzer eine AR Optional App installieren, wird das Google Play Store nicht automatisch installieren Google Play Services für AR mit der App.

Zu erklären , Ihre App AR Optional sein, ändern Sie Ihre AndroidManifest.xml die folgenden Einträge hinzu:

<uses-permission android:name="android.permission.CAMERA" />

<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>

Dann ändern Sie Ihre App build.gradle eine angeben minSdkVersion von mindestens 14:

android {
    defaultConfig {
        …
        minSdkVersion 14
    }
}

Build-Abhängigkeiten hinzufügen

Führen Sie die folgenden Schritte aus, um die ARCore-Bibliothek zu Ihrem Android Studio-Projekt hinzuzufügen:

  1. Stellen Sie sicher , dass Ihr Projekt build.gradle Datei enthält Googles Maven - Repository.

    allprojects {
    repositories {
        google()
            ...
    
  2. Extrahieren Sie native Bibliotheken aus ARCore aar.

    Die nativen Bibliotheken sind in der ARCore-aar-Datei enthalten. Um sie als Teil eines C/C++-Projekts zu verwenden, müssen sie aus dem Archiv extrahiert werden, damit sie direkt referenziert werden können. Um dies zu tun, fügen Sie eine benutzerdefinierte Aufgabe Ihres Moduls build.gradle Datei (zum Beispiel app/build.gradle ).

    Die Header - Datei für Arcore, arcore_c_api.h ist im GitHub SDK Projekt enthalten:

    Definieren Sie eine Variable in einem Verzeichnis im app/build - Verzeichnis. Die nativen Bibliotheken werden in dieses Verzeichnis extrahiert. Erstellen Sie auch eine Gradle-Konfiguration, um die Extraktionsaufgaben und Daten aufzunehmen.

    /*
    The ARCore aar library contains the native shared libraries. These 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 fügen Sie sie den Build-Abhängigkeiten hinzu

      // Extracts the shared libraries from aars in the natives configuration.
      // This is done 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)
          }
      }
    
  3. Konfigurieren Sie die nativen Build-Flags, um die Speicherorte an die externen Build-Tools zu übergeben.

    Dieses Beispiel stammt aus den Beispielen im GitHub-Projekt.

          externalNativeBuild {
              cmake {
                  cppFlags "-std=c++11", "-Wall"
                  arguments "-DANDROID_STL=c++_static",
                          "-DARCORE_LIBPATH=${arcore_libpath}/jni",
                          "-DARCORE_INCLUDE=${project.rootDir}/../../libraries/include"
              }
          }
    

  4. Fügen Sie die Abhängigkeiten sowohl für die Java- als auch für die nativen Bibliotheken hinzu.

     dependencies {
          ...
          // Add java and native dependencies on the ARCore library
          implementation 'com.google.ar:core:1.27.0'
          natives 'com.google.ar:core:1.27.0'
          ...
     }
    
  5. Verweisen Sie auf 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 durchführen

Überprüfen Sie, ob ARCore installiert ist

Alle AR - Anwendungen müssen nennen ArCoreApk_requestInstall() , bevor Sie eine Arcore Sitzung zu schaffen. ArCoreApk_requestInstall() prüft , ob eine kompatible Version von Google Play Services für AR installiert ist (es könnte veraltet sein oder durch den Benutzer manuell entfernt wurde) und fordert den Benutzer auf , den Dienst zu installieren , wenn es nicht vorhanden ist.

// Tracks if we have already triggered an installation request.
bool install_requested_;

void nativeOnCreate() {
  // other setup

  install_requested_ = false;
}

void nativeOnResume(JNIEnv env, jobject activity) {
  if (ar_session_ == null) {
    bool user_requested_install = !install_requested_;

    ArInstallStatus install_status;
    // Ensure 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 session
  }

  // Normal onResume behavior
}

Wenn ArCoreApk_requestInstall() kehrt AR_INSTALL_STATUS_INSTALL_REQUESTED , wird die aktuelle Aktivität Pausen und der Benutzer aufgefordert zu installieren oder den Dienst zu aktualisieren. Die Tätigkeit der onResume() führt wieder , wenn der Benutzer wieder die Aktivität.

Überprüfen Sie, ob ARCore unterstützt wird (nur AR optional)

AR kann optional Anwendungen verwenden ArCoreApk_checkAvailability() , um zu bestimmen , ob die aktuellen Geräteträger ARCORE. Auf einem Gerät, das ARCore nicht unterstützt, sollten Apps AR-bezogene Funktionen deaktivieren und zugehörige UI-Elemente ausblenden.

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/enable AR button.
  } else {
    // Hide/disable AR button.
  }
}

Dann, wenn der Benutzer es wünscht , eine AR - Funktion nutzen zu können, sollten Sie Ihre App sicher , dass Google Play Services für AR installiert ist . Eine einfache Möglichkeit dazu besteht darin, eine Aktivität zu starten, die dem oben beschriebenen Muster von AR erforderlich folgt.

Einhaltung der Datenschutzanforderungen für Benutzer

Stellen Sie sicher , dass Ihre App und erfüllt Arcore der Benutzerdatenschutzanforderungen .

Nächste Schritte

Lesen Sie den Code und Kommentare in der Beispielanwendung, sowie die C - API - Referenz .