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 Studio-Projekten aktivieren. Dazu müssen Sie:

  1. Wähle zwischen AR erforderlich und AR optional für deine App
  2. Fügen Sie dem Manifest Ihrer App AR-erforderliche oder AR-optionale Einträge hinzu
  3. In Bauabhängigkeiten zu einem Projekt
  4. Führen Sie Laufzeitprüfungen , um sicherzustellen , dass:
    • Das Gerät unterstützt ARCORE ,
    • Google Play Services für AR ist darauf installiert,
    • Die Kameraberechtigung wurde erteilt.
  5. Stellen Sie sicher , dass Ihre Anwendung und erfüllt Arcore der Benutzerdatenschutzanforderungen

Auswahl zwischen AR erforderlich oder AR optional

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

Eine AR Required App kann nicht funktionieren , ohne Arcore. 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.

Eine AR Optional App nutzt Arcore eine andere Funktionalität zu erweitern. 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.

AR erforderlich AR optional
Nutzung der AR-Funktion Ihre App benötigt ARCore für grundlegende Funktionen. ARCore erweitert die Funktionalität Ihrer App. Ihre App kann ohne ARCore-Unterstützung ausgeführt werden.
Sichtbarkeit im Play Store Ihre App wird nur auf Geräten mit ARCore-Unterstützung im Play Store aufgeführt. Ihre App folgt normale Auflistung Verfahren .
Google Play Services für AR - Installationsmethode Der Play Store installiert neben Ihrer App auch die Google Play Services für AR. Ihre App nutzen ArCoreApk.requestInstall() zum Herunterladen und Installieren Arcore.
Android minSdkVersion Anforderungen Android 7.0 (API-Level 24) Android 4.0 (API-Level 14)
Muss verwenden ArCoreApk.checkAvailability() Arcore Unterstützung zu prüfen und Status installieren
Muss verwenden ArCoreApk.requestInstall() Google Play Services für AR zu installieren

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

Hinzufügen von Einträgen zum Manifest Ihrer App

Ändern Sie bitte Ihre AndroidManifest.xml die folgenden Einträge hinzu:

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>

AR optional

<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 stellen Sie sicher , dass Ihre Anwendung hat zumindest die erforderliche minSdkVersion in Ihrer App build.gradle :

AR erforderlich

android {
    defaultConfig {
        …
        minSdkVersion 24
    }
}

AR optional

android {
    defaultConfig {
        …
        minSdkVersion 14
    }
}

Build-Abhängigkeiten hinzufügen

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

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

    allprojects {
        repositories {
            google()
            …
        }
    }
    
  • Fügen Sie die neueste Arcore Bibliothek als Abhängigkeit in Ihrer App build.gradle Datei:

    dependencies {
        …
        implementation 'com.google.ar:core:1.27.0'
    }
    

Laufzeitprüfungen durchführen

Prüfen Sie, ob ARCore unterstützt wird

Beide AR Required und AR Optional Anwendungen verwenden sollten ArCoreApk.checkAvailability() , um zu bestimmen , ob die aktuelle Gerät unterstützt Arcore. Auf Geräten, die ARCore nicht unterstützen, sollten Apps AR-bezogene Funktionen deaktivieren und zugehörige UI-Elemente ausblenden.

Java

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  // Enable AR-related functionality on ARCore supported devices only.
  maybeEnableArButton();
  …
}

void maybeEnableArButton() {
  ArCoreApk.Availability availability = ArCoreApk.getInstance().checkAvailability(this);
  if (availability.isTransient()) {
    // Continue to query availability at 5Hz while compatibility is checked in the background.
    new Handler().postDelayed(new Runnable() {
      @Override
      public void run() {
        maybeEnableArButton();
      }
    }, 200);
  }
  if (availability.isSupported()) {
    mArButton.setVisibility(View.VISIBLE);
    mArButton.setEnabled(true);
  } else { // The device is unsupported or unknown.
    mArButton.setVisibility(View.INVISIBLE);
    mArButton.setEnabled(false);
  }
}

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)

  // Enable AR-related functionality on ARCore supported devices only.
  maybeEnableArButton()
  …
}

fun maybeEnableArButton() {
  val availability = ArCoreApk.getInstance().checkAvailability(this)
  if (availability.isTransient) {
    // Continue to query availability at 5Hz while compatibility is checked in the background.
    Handler().postDelayed({
      maybeEnableArButton()
    }, 200)
  }
  if (availability.isSupported) {
    mArButton.visibility = View.VISIBLE
    mArButton.isEnabled = true
  } else { // The device is unsupported or unknown.
    mArButton.visibility = View.INVISIBLE
    mArButton.isEnabled = false
  }
}

Auch wenn Google Play Services for AR zusammen mit Ihrer AR-erforderlichen App installiert ist, können Nutzer mit nicht unterstützten Geräten sie von einer externen Quelle installieren. Mit checkAvailability() für Arcore Unterstützung zu prüfen , sorgt für eine konsistente Erfahrung.

checkAvailability() kann zur Abfrage von Netzwerkressourcen benötigen , um zu bestimmen , ob das Gerät unterstützt Arcore. Während dieser Zeit wird er zurückkehren UNKNOWN_CHECKING . Um die gefühlte Latenz zu reduzieren und Pop-in, sollten Anwendungen rufen checkAvailability() einmal früh in seinem Lebenszyklus die Abfrage zu initiieren, den zurückgegebenen Wert zu ignorieren. Auf diese Weise eine im Cache gespeicherte Ergebnis wird sofort verfügbar sein , wenn maybeEnableArButton() aufgerufen wird.

Kameraberechtigung anfordern

Sowohl AR Optional und AR Erforderliche Anwendungen müssen sicherstellen , dass die Kamera die Erlaubnis hat vor dem Erstellen einer AR - Sitzung erteilt. Die hello_ar_java Probe enthält eine CameraPermissionHelper Klasse , die in das Projekt kopiert werden kann und rief aus Ihrem AR Aktivität onResume() Methode:

Java

@Override
protected void onResume() {
  super.onResume();

  // ARCore requires camera permission to operate.
  if (!CameraPermissionHelper.hasCameraPermission(this)) {
    CameraPermissionHelper.requestCameraPermission(this);
    return;
  }

  …
}

Kotlin

override fun onResume() {
  super.onResume()

  // ARCore requires camera permission to operate.
  if (!CameraPermissionHelper.hasCameraPermission(this)) {
    CameraPermissionHelper.requestCameraPermission(this)
    return
  }

  …
}

Ihre AR Aktivität implementieren muss auch onRequestPermissionsResult() , wie in gesehen HelloArActivity :

Java

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] results) {
  super.onRequestPermissionsResult(requestCode, permissions, results);
  if (!CameraPermissionHelper.hasCameraPermission(this)) {
    Toast.makeText(this, "Camera permission is needed to run this application", Toast.LENGTH_LONG)
        .show();
    if (!CameraPermissionHelper.shouldShowRequestPermissionRationale(this)) {
      // Permission denied with checking "Do not ask again".
      CameraPermissionHelper.launchPermissionSettings(this);
    }
    finish();
  }
}

Kotlin

override fun onRequestPermissionsResult(
  requestCode: Int,
  permissions: Array<String>,
  results: IntArray
) {
  super.onRequestPermissionsResult(requestCode, permissions, results)
  if (!CameraPermissionHelper.hasCameraPermission(this)) {
    Toast.makeText(this, "Camera permission is needed to run this application", Toast.LENGTH_LONG)
      .show()
    if (!CameraPermissionHelper.shouldShowRequestPermissionRationale(this)) {
      // Permission denied with checking "Do not ask again".
      CameraPermissionHelper.launchPermissionSettings(this)
    }
    finish()
  }
}

Prüfen Sie, ob Google Play Services für AR installiert ist

Um zu überprüfen , ob eine kompatible Version von Google Play Services für AR (noch) installiert ist , und um sicherzustellen , dass alle Arcore Geräteprofile erforderlichen Daten heruntergeladen wurden, beide AR Required und AR Optional Anwendungen müssen nennen ArCoreApk.requestInstall() , bevor Sie ein Arcore Schaffung Sitzung. Dadurch wird der Benutzer bei Bedarf aufgefordert, ARCore zu installieren oder zu aktualisieren, und stellt sicher, dass die erforderlichen ARCore-Geräteprofildaten heruntergeladen werden.

Java

// requestInstall(Activity, true) will triggers installation of
// Google Play Services for AR if necessary.
private boolean mUserRequestedInstall = true;

@Override
protected void onResume() {
  super.onResume();

  // Check camera permission.
  …

  // Ensure that Google Play Services for AR and ARCore device profile data are
  // installed and up to date.
  try {
    if (mSession == null) {
      switch (ArCoreApk.getInstance().requestInstall(this, mUserRequestedInstall)) {
        case INSTALLED:
          // Success: Safe to create the AR session.
          mSession = new Session(this);
          break;
        case INSTALL_REQUESTED:
          // When this method returns `INSTALL_REQUESTED`:
          // 1. ARCore pauses this activity.
          // 2. ARCore prompts the user 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. ARCore resumes this activity. The next invocation of
          //    requestInstall() will either return `INSTALLED` or throw an
          //    exception if the installation or update did not succeed.
          mUserRequestedInstall = false;
          return;
      }
    }
  } catch (UnavailableUserDeclinedInstallationException e) {
    // Display an appropriate message to the user and return gracefully.
    Toast.makeText(this, "TODO: handle exception " + e, Toast.LENGTH_LONG)
        .show();
    return;
  } catch (…) {
    …
    return;  // mSession remains null, since session creation has failed.
  }
  …
}

Kotlin

// requestInstall(Activity, true) will triggers installation of
// Google Play Services for AR if necessary.
var mUserRequestedInstall = true

override fun onResume() {
  super.onResume()

  // Check camera permission.
  …

  // Ensure that Google Play Services for AR and ARCore device profile data are
  // installed and up to date.
  try {
    if (mSession == null) {
      when (ArCoreApk.getInstance().requestInstall(this, mUserRequestedInstall)) {
        ArCoreApk.InstallStatus.INSTALLED -> {
          // Success: Safe to create the AR session.
          mSession = Session(this)
        }
        ArCoreApk.InstallStatus.INSTALL_REQUESTED -> {
          // When this method returns `INSTALL_REQUESTED`:
          // 1. ARCore pauses this activity.
          // 2. ARCore prompts the user 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. ARCore resumes this activity. The next invocation of
          //    requestInstall() will either return `INSTALLED` or throw an
          //    exception if the installation or update did not succeed.
          mUserRequestedInstall = false
          return
        }
      }
    }
  } catch (e: UnavailableUserDeclinedInstallationException) {
    // Display an appropriate message to the user and return gracefully.
    Toast.makeText(this, "TODO: handle exception " + e, Toast.LENGTH_LONG)
        .show()
    return
  } catch (…) {
    …
    return  // mSession remains null, since session creation has failed.
  }
  …
}

Einhaltung der Datenschutzanforderungen für Benutzer

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

Nächste Schritte