Google berkomitmen untuk memajukan kesetaraan rasial bagi komunitas Kulit Hitam. Lihat bagaimana.

Aktifkan ARCore

Halaman ini menjelaskan cara mengaktifkan fungsionalitas ARCore di project Android NDK Anda. Untuk melakukan ini, Anda perlu:

  1. Tambahkan AR Diperlukan atau AR Opsional ke manifes
  2. Tambahkan dependensi build ke proyek Anda
  3. Lakukan pemeriksaan waktu proses untuk memastikan perangkat didukung oleh ARCore dan bahwa Layanan Google Play untuk AR diinstal di perangkat tersebut
  4. Pastikan aplikasi Anda mematuhi Persyaratan Privasi Pengguna ARCore

Layanan Google Play untuk AR

ARCore SDK membuat fitur AR tersedia di perangkat yang didukung ARCore yang telah menginstal Layanan Google Play untuk AR (ARCore).

Layanan Google Play untuk AR dipasang secara otomatis dan selalu diperbarui di sebagian besar perangkat yang didukung.

Sebelum memulai sesi AR, aplikasi harus:

  1. Periksa apakah ARCore didukung, dengan memanggil ArCoreApk_checkAvailability .
  2. Periksa apakah Layanan Google Play untuk AR sudah diinstal dan terbaru, dan data profil perangkat ARCore yang diperlukan telah didownload, dengan memanggil ArCoreApk_requestInstall .

Tambahkan AR Diperlukan atau AR Opsional ke manifes

Aplikasi yang mendukung fitur AR dapat dikonfigurasi dengan dua cara: AR Diperlukan dan AR Opsional .

AR Diperlukan

Agar dapat digunakan, aplikasi yang Diperlukan AR memerlukan Perangkat yang Didukung ARCore yang memiliki Layanan Google Play untuk AR terpasang di dalamnya.

Untuk informasi lebih lanjut, lihat Menerbitkan Aplikasi AR di Google Play Store .

Untuk mendeklarasikan aplikasi Anda sebagai Diperlukan AR , ubah AndroidManifest.xml Anda untuk menyertakan entri berikut:

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

Kemudian, ubah build.gradle aplikasi Anda untuk menentukan minSdkVersion setidaknya 24:

android {
    defaultConfig {
        …
        minSdkVersion 24
    }
}

AR Opsional

Aplikasi AR Opsional memiliki fitur AR opsional, yang hanya diaktifkan di perangkat yang didukung ARCore yang telah menginstal Layanan Google Play untuk AR .

  • Aplikasi opsional AR dapat diinstal dan dijalankan di perangkat yang tidak mendukung ARCore.

  • Saat pengguna memasang aplikasi AR Opsional, Google Play Store tidak akan secara otomatis memasang Layanan Google Play untuk AR dengan aplikasi tersebut.

Untuk mendeklarasikan aplikasi Anda menjadi AR Opsional , ubah AndroidManifest.xml Anda untuk menyertakan entri berikut:

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

Kemudian, ubah build.gradle aplikasi Anda untuk menentukan minSdkVersion setidaknya 14:

android {
    defaultConfig {
        …
        minSdkVersion 14
    }
}

Tambahkan dependensi build

Untuk menambahkan pustaka ARCore ke proyek Android Studio Anda, lakukan langkah-langkah berikut:

  1. Pastikan file build.gradle proyek Anda menyertakan repositori Maven Google.

    allprojects {
    repositories {
        google()
            ...
    
  2. Ekstrak pustaka asli dari ARCore aar.

    Pustaka asli disertakan dalam file ARCore aar. Untuk menggunakannya sebagai bagian dari proyek C / C ++, mereka harus diekstrak dari arsip sehingga dapat direferensikan secara langsung. Untuk melakukannya, tambahkan tugas khusus ke file build.gradle modul Anda (misalnya, app/build.gradle ).

    File header untuk ARCore, arcore_c_api.h disertakan dalam proyek SDK GitHub:

    Tentukan variabel ke direktori di direktori app/build . Pustaka asli akan diekstraksi ke direktori ini. Buat juga konfigurasi gradle untuk menampung tugas ekstraksi dan data.

    /*
    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 }
    
    

    Buat tugas untuk menyalin library native dari file aar, dan tambahkan ke dependensi build

      // 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. Konfigurasikan flag build asli untuk meneruskan lokasi ke alat build eksternal.

    Contoh ini dari sampel di proyek GitHub.

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

  4. Tambahkan dependensi untuk Java dan library native.

     dependencies {
          ...
          // Add java and native dependencies on the ARCore library
          implementation 'com.google.ar:core:1.23.0'
          natives 'com.google.ar:core:1.23.0'
          ...
     }
    
  5. Referensi perpustakaan asli di CMakeLists.txt

    #Fb E5E5E5b840

Lakukan pemeriksaan runtime

Periksa apakah ARCore diinstal

Semua aplikasi AR harus memanggil ArCoreApk_requestInstall() sebelum membuat sesi ARCore. ArCoreApk_requestInstall() memeriksa apakah versi yang kompatibel dari Layanan Google Play untuk AR diinstal (mungkin kedaluwarsa atau telah dihapus secara manual oleh pengguna) dan akan meminta pengguna untuk menginstal layanan jika tidak ada.

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

Jika ArCoreApk_requestInstall() mengembalikan AR_INSTALL_STATUS_INSTALL_REQUESTED , aktivitas saat ini berhenti dan pengguna diminta untuk menginstal atau memperbarui layanan. onResume() aktivitas dijalankan lagi saat pengguna kembali ke aktivitas.

Periksa apakah ARCore didukung (AR Opsional saja)

Aplikasi opsional AR bisa menggunakan ArCoreApk_checkAvailability() untuk menentukan apakah perangkat saat ini mendukung ARCore. Pada perangkat yang tidak mendukung ARCore, aplikasi harus menonaktifkan fungsionalitas terkait AR dan menyembunyikan elemen UI terkait.

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

Kemudian, saat pengguna ingin menggunakan fitur AR, aplikasi Anda harus memastikan bahwa Layanan Google Play untuk AR sudah diinstal . Cara mudah untuk melakukannya adalah dengan meluncurkan aktivitas yang mengikuti pola Diperlukan AR yang dijelaskan di atas.

Kepatuhan dengan Persyaratan Privasi Pengguna

Pastikan aplikasi Anda mematuhi Persyaratan Privasi Pengguna ARCore.

Langkah selanjutnya

Baca kode dan komentar di aplikasi sampel, serta Referensi C API .