تلتزم Google بتعزيز المساواة العرقية في المجتمعات السوداء. أنظر كيف.
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

تمكين ARCore

تصف هذه الصفحة كيفية تمكين وظيفة ARCore في مشاريع Android NDK. للقيام بذلك ، تحتاج إلى:

  1. إضافة مطلوب AR أو AR اختياري إلى البيان
  2. أضف تبعيات البناء إلى مشروعك
  3. قم بإجراء فحوصات وقت التشغيل للتأكد من أن الجهاز يدعم ARCore وأن Google Play Services for AR مثبتة عليه
  4. تأكد من أن تطبيقك يتوافق مع متطلبات خصوصية المستخدم الخاصة بـ ARCore

خدمات Google Play للواقع المعزز

توفر ARCore SDKs ميزات AR على الأجهزة المدعومة من ARCore والتي تم تثبيت خدمات Google Play للواقع المعزز (ARCore) عليها

يتم تثبيت خدمات Google Play للواقع المعزز تلقائيًا وتحديثها على الغالبية العظمى من الأجهزة المدعومة.

قبل بدء جلسة AR ، يجب على التطبيقات:

  1. تأكد من أن ARCore مدعوم ، من خلال استدعاء ArCoreApk_checkAvailability .
  2. تحقق من تثبيت خدمات Google Play للواقع المعزز وتحديثها ، وأنه تم تنزيل بيانات ملف تعريف الجهاز المطلوبة من ARCore ، عن طريق الاتصال بـ ArCoreApk_requestInstall .

إضافة مطلوب AR أو AR اختياري إلى البيان

يمكن تكوين التطبيق الذي يدعم ميزات AR بطريقتين: AR مطلوب و AR اختياري .

مطلوب AR

لكي تكون قابلة للاستخدام ، يتطلب تطبيق AR Required جهازًا مدعومًا من ARCore يحتوي على خدمات Google Play لـ AR مثبتة عليه.

لمزيد من المعلومات ، راجع نشر تطبيقات AR في متجر Google Play .

للإعلان أن التطبيق الخاص بك مطلوب AR ، قم بتعديل AndroidManifest.xml الخاص بك لتضمين الإدخالات التالية:

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

بعد ذلك ، قم بتعديل build.gradle لتحديد minSdkVersion 24 على الأقل:

android {
    defaultConfig {
        …
        minSdkVersion 24
    }
}

AR اختيارية

وAR الاختياري التطبيق يحتوي على ميزات AR الاختيارية، التي يتم تنشيطها فقط على ARCORE الأجهزة المعتمدة التي لديها خدمات Google Play لAR تثبيت.

  • يمكن تثبيت تطبيقات AR الاختيارية وتشغيلها على الأجهزة التي لا تدعم ARCore.

  • عندما يقوم المستخدمون بتثبيت التطبيق AR الاختياري، ومتجر Google Play لا تلقائيا تثبيت خدمات Google Play لAR مع التطبيق.

للإعلان أن تطبيقك اختياري AR ، قم بتعديل AndroidManifest.xml لتضمين الإدخالات التالية:

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

بعد ذلك ، قم بتعديل build.gradle لتحديد minSdkVersion 14 على الأقل:

android {
    defaultConfig {
        …
        minSdkVersion 14
    }
}

أضف تبعيات البناء

لإضافة مكتبة ARCore إلى مشروع Android Studio الخاص بك ، قم بتنفيذ الخطوات التالية:

  1. تأكد من أن ملف build.gradle الخاص build.gradle يتضمن مستودع Google Maven.

    allprojects {
    repositories {
        google()
            ...
    
  2. استخراج المكتبات الأصلية من ARCore aar.

    يتم تضمين المكتبات الأصلية في ملف ARCore aar. لاستخدامها كجزء من مشروع C / C ++ ، يجب استخراجها من الأرشيف حتى يمكن الرجوع إليها مباشرة. للقيام بذلك ، أضف مهمة مخصصة إلى ملف build.gradle الخاص build.gradle (على سبيل المثال ، app/build.gradle ).

    يتم تضمين ملف الرأس لـ ARCore ، arcore_c_api.h في مشروع GitHub SDK:

    تحديد متغير لدليل في دليل app/build . سيتم استخراج المكتبات الأصلية إلى هذا الدليل. قم أيضًا بإنشاء تكوين gradle للاحتفاظ بمهام الاستخراج والبيانات.

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

    قم بإنشاء مهمة لنسخ المكتبات الأصلية من ملف aar ، وإضافتها إلى تبعيات البناء

      // 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. قم بتكوين علامات البناء الأصلية لتمرير المواقع إلى أدوات البناء الخارجية.

    هذا المثال مأخوذ من العينات في مشروع 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. أضف التبعيات لكل من مكتبات Java والمكتبات الأصلية.

     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. قم بالإشارة إلى المكتبات الأصلية في CMakeLists.txt

    0fb auctionb840

قم بإجراء فحوصات وقت التشغيل

تحقق من تثبيت ARCore

يجب على جميع تطبيقات AR الاتصال بـ ArCoreApk_requestInstall() قبل إنشاء جلسة ARCore. يتحقق ArCoreApk_requestInstall() إذا كان قد تم تثبيت إصدار متوافق من Google Play Services for AR (قد يكون ArCoreApk_requestInstall() أو تمت إزالته يدويًا بواسطة المستخدم) وسيطلب من المستخدم تثبيت الخدمة إذا لم تكن موجودة.

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

إذا قام ArCoreApk_requestInstall() بإرجاع AR_INSTALL_STATUS_INSTALL_REQUESTED ، يتوقف النشاط الحالي مؤقتًا AR_INSTALL_STATUS_INSTALL_REQUESTED من المستخدم تثبيت أو تحديث الخدمة. يتم تنفيذ onResume() الخاص بالنشاط مرة أخرى عندما يعود المستخدم إلى النشاط.

تحقق مما إذا كان ARCore مدعومًا (AR اختياري فقط)

يمكن أن تستخدم تطبيقات AR الاختيارية ArCoreApk_checkAvailability() لتحديد ما إذا كان الجهاز الحالي يدعم ARCore. على جهاز لا يدعم ARCore ، يجب على التطبيقات تعطيل الوظائف المرتبطة بالواقع المعزز وإخفاء عناصر واجهة المستخدم المرتبطة.

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

بعد ذلك ، عندما يريد المستخدم استخدام ميزة AR ، يجب أن يضمن تطبيقك تثبيت Google Play Services for AR . هناك طريقة سهلة للقيام بذلك وهي بدء نشاط يتبع نمط AR المطلوب الموضح أعلاه.

الامتثال لمتطلبات خصوصية المستخدم

تأكد من أن تطبيقك يتوافق مع متطلبات خصوصية المستخدم الخاصة بـ ARCore.

الخطوات التالية

اقرأ الكود والتعليقات في نموذج التطبيق ، بالإضافة إلى مرجع C API .