تفعيل واجهة برمجة التطبيقات Geospatial API لتطبيق Android (Kotlin/Java)

اضبط إعدادات تطبيقك كي يتمكّن من استخدام Geospatial API.

المتطلبات الأساسية

تأكَّد من فهم مفاهيم الواقع المعزّز الأساسية وكيفية ضبط جلسة ARCore قبل المتابعة.

نموذج التطبيق والدرس التطبيقي حول الترميز

يشرح هذا الفيديو خطوات إنشاء تطبيق يعرض بيانات ملفتة للانتباه ويضع المحتوى في مواقع جغرافية باستخدام Geospatial API.

يمكنك أيضًا اتّباع مستندات ورشة عمل الرموز البرمجية للبيانات المكانية للقيام بالخطوات نفسها. لتشغيل نموذج التطبيق الذي تم إنشاؤه في الفيديو، يُرجى الاطّلاع على الدليل السريع لتكنولوجيا ARCore للواقع الجغرافي.

اطّلِع على مقدمة عن واجهة برمجة التطبيقات Geospatial API للحصول على مزيد من المعلومات حول Geospatial API.

إذا كنت حديث العهد بالتطوير باستخدام ARCore، يمكنك الاطّلاع على البدء للحصول على معلومات عن متطلبات البرامج والأجهزة والمتطلبات الأساسية ومعلومات أخرى خاصة بالأنظمة الأساسية التي تستخدمها.

تأكَّد من أنّ بيئة التطوير تستوفي متطلبات حزمة تطوير البرامج (SDK) لـ ARCore، كما هو описан في البدء السريع.

تفعيل واجهة برمجة تطبيقات ARCore

قبل استخدام نظام تحديد الموقع البصري (VPS) في تطبيقك، عليك أولاً تفعيل ARCore API في مشروع جديد أو حالي على Google Cloud. تتولّى هذه الخدمة استضافة نقاط الربط الجغرافية وتخزينها وحلّها.

يُفضَّل استخدام طريقة التفويض بدون مفتاح، ولكن يمكن أيضًا استخدام طريقة التفويض باستخدام مفتاح واجهة برمجة التطبيقات.

إضافة المكتبات المطلوبة إلى تطبيقك

بعد تفويض تطبيقك للاتصال بواجهة برمجة التطبيقات ARCore API، عليك إضافة مكتبات ل تفعيل الميزات المكانية الجغرافية في تطبيقك.

في ملف build.gradle الخاص بتطبيقك، عليك إعداد "خدمات Google Play" لتضمين مكتبة "موقع جغرافي" في "خدمات Play".

dependencies {
  // Apps must declare play-services-location version >= 16.
  // In the following line, substitute `16 (or later)` with the latest version.
  implementation 'com.google.android.gms:play-services-location:16 (or later)'
}

تفعيل الإمكانات الجغرافية المكانية في إعدادات الجلسة

قبل إنشاء الجلسة، غيِّر GeospatialMode في إعدادات الجلسة إلى ENABLED:

JavaKotlin
Config config = session.getConfig();
config.setGeospatialMode(Config.GeospatialMode.ENABLED);
session.configure(config);
// Enable the Geospatial API.
session.configure(session.config.apply { geospatialMode = Config.GeospatialMode.ENABLED })

عندما يكون وضع "البيانات الجغرافية" مضبوطًا على ENABLED، يُسمح للتطبيق بالحصول على معلومات جغرافية من نظام تحديد الموقع البصري (VPS).

مطالبة المستخدم بالسماح باستخدام بيانات الجهاز

على التطبيقات التي تستخدم واجهة برمجة التطبيقات ARCore Geospatial API عرض طلب على المستخدم لتأكيد السماح باستخدام البيانات من جهازه. يمكنك الاطّلاع على متطلبات خصوصية المستخدمين للحصول على مزيد من المعلومات.

التحقّق من توافق الجهاز

لا تتوافق بعض الأجهزة المتوافقة مع ARCore مع واجهة برمجة التطبيقات Geospatial API، كما هو описан في الدليل السريع.

للتحقّق من توافق جهاز المستخدم، يُرجى الاتصال بالرقم Session.checkGeospatialModeSupported(). إذا كانت القيمة التي يعرضها هذا الإجراء هي false، يجب عدم محاولة ضبط الجلسة (أدناه)، لأنّه يؤدي إلى طرح UnsupportedConfigurationException.

طلب أذونات تحديد الموقع الجغرافي من المستخدم في وقت التشغيل

يجب أن يطلب تطبيقك أذونات تحديد الموقع الجغرافي أثناء التشغيل.

لاستخدام واجهة برمجة التطبيقات ARCore Geospatial API، يجب أن يسجِّل تطبيقك يليه أذونات إضافية:

  • ACCESS_FINE_LOCATION لتحديد الموقع الجغرافي للمستخدم بدقة

  • ACCESS_COARSE_LOCATION لتحديد الموقع الجغرافي للمستخدم بشكل غير دقيق والالتزام بمتطلبات خصوصية المستخدم ومع ذلك، لا يمكن ضبط Geospatial API للعمل مع الموقع الجغرافي التقريبي، وستتعذّر طلبات واجهة برمجة التطبيقات عندما يضبط المستخدم هذا الإذن. انظر أدناه للاطّلاع على مزيد من المعلومات.

  • ACCESS_INTERNET للتواصل مع خدمة ARCore Geospatial API

<manifest ... >
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  <uses-permission android:name="android.permission.INTERNET" />
</manifest>

على الأجهزة التي تعمل بنظام التشغيل Android 12 أو إصدار أحدث، يمكن للمستخدمين طلب أن يحصل تطبيقك على معلومات الموقع الجغرافي التقريبي فقط. لاستيفاء هذا الطلب، يجب أن يكون إذن ACCESS_COARSE_LOCATION مفعّلاً في تطبيقك، بالإضافة إلى ACCESS_FINE_LOCATION، كما هو موضّح أعلاه. يجب ضبط كلا الإذنَين لتحديد الموقع الجغرافي.

ومع ذلك، عندما يحدّد المستخدمون الموقع الجغرافي التقريبي، يمنع ذلك واجهة برمجة التطبيقات Geospatial API من الحصول على الموقع الجغرافي الدقيق الذي تتطلّبه. لن تسمح خدمة Geospatial Service بضبط نفسها إذا كان تطبيقك يمنحها الموقع الجغرافي التقريبي فقط. لا يمكن لتطبيقك استخدام واجهة برمجة التطبيقات Geospatial API مع الموقع الجغرافي التقريبي.

التحقّق من مدى توفّر البيانات الجغرافية المكانية في الموقع الجغرافي الحالي للجهاز

بما أنّ واجهة برمجة التطبيقات Geospatial API تستخدِم مزيجًا من VPS ونظام تحديد المواقع العالمي (GPS) لتحديد وضع جغرافي، يمكن استخدام واجهة برمجة التطبيقات ما دام الجهاز قادرًا على تحديد موقعه الجغرافي. في المناطق التي تكون فيها دقة نظام تحديد المواقع العالمي (GPS) منخفضة، مثل المساحات الداخلية والبيئات الحضرية ذات الكثافة السكانية العالية، ستعتمد واجهة برمجة التطبيقات على تغطية VPS لإنشاء أوضاع ذات دقة عالية. في الظروف العادية، من المتوقّع أن توفّر خدمة VPS دقة في تحديد الموقع تبلغ 5 أمتار تقريبًا ودقة في تحديد الاتجاه تبلغ 5 درجات. استخدِم Session.checkVpsAvailabilityAsync() لتحديد ما إذا كان الموقع الجغرافي المحدّد يشمل تغطية VPS.

يمكن أيضًا استخدام واجهة برمجة التطبيقات Geospatial API في المناطق التي لا تتوفّر فيها تغطية VPS. في البيئات الخارجية التي تتضمّن عددًا قليلاً من العوائق العلوية أو لا تتضمّن أيّ منها، قد يكون نظام تحديد المواقع العالمي (GPS) كافيًا لإنشاء وضع بدقة عالية.

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