הפעלת ה-API הגיאו-מרחבי לאפליקציה של Android NDK (C)

קובעים את הגדרות האפליקציה כך שהיא תוכל להשתמש ב-Geospatial API.

דרישות מוקדמות

חשוב לוודא שאתם מבינים את המושגים הבסיסיים של AR ואיך להגדיר סשן ARCore לפני שממשיכים.

אם אתם רוצים להריץ אפליקציה לדוגמה שמדגימה את הפונקציונליות שתוארה כאן אפשר לראות מדריך למתחילים של ARCore גיאו-מרחבי ל-Android ל-Java. האפליקציה לדוגמה במדריך למתחילים כתובה ב-Java. דוגמאות הקוד במסמך הזה הם עבור אותה פונקציונליות שכתובה ב-C.

לצפייה מבוא ל-Geospatial API, מידע נוסף מידע על ה-API הגיאו-מרחבי.

אם זו הפעם הראשונה שאתם מפתחים עם ARCore, ראו תחילת העבודה. לקבלת מידע על דרישות תוכנה וחומרה, דרישות מוקדמות מידע אחר שספציפי לפלטפורמות שבהן אתה משתמש.

יש לוודא שסביבת הפיתוח עומדת בדרישות של ARCore SDK, שתוארו במדריך למתחילים ל-Java.

הפעלה של ARCore API

לפני השימוש במערכת המיקום החזותי (VPS) באפליקציה, עליך מפעילים את ARCore API בפרויקט חדש או קיים ב-Google Cloud השירות הזה אחראי אירוח, אחסון ופתרון עוגנים גיאו-מרחביים.

עדיף להשתמש בהרשאה ללא מפתח, אבל יש גם תמיכה באימות באמצעות מפתח API.

צריך להוסיף את הספריות הנדרשות לאפליקציה

אחרי שהענקת לאפליקציה הרשאה לקרוא ל-ARCore API, צריך להוסיף ספריות אל להפעיל תכונות גיאו-מרחביות באפליקציה

בקובץ build.gradle של האפליקציה, צריך להגדיר את Google Play Services כך שיכלול את 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:

// Create a session config.
ArConfig* ar_config = NULL;
ArConfig_create(ar_session, &ar_config);

// Enable the Geospatial API.
ArConfig_setGeospatialMode(ar_session, ar_config, AR_GEOSPATIAL_MODE_ENABLED);
CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS);

// Release config resources.
ArConfig_destroy(ar_config);

במצב גיאו-מרחבי מוגדר הערך ENABLED, האפליקציה יכולה לקבל נתונים גיאוגרפיים ממערכת המיקום החזותי (VPS).

הצגת בקשה למשתמש לאפשר שימוש בנתוני המכשיר

באפליקציות שמשתמשות ב-ARCore Geospatial API חייבים להציג למשתמש הנחיה לאשר את השימוש בנתונים מהמכשיר שלהם ולאפשר את השימוש בהם. צפייה הדרישות בנושא פרטיות המשתמשים, מידע נוסף מידע.

בדיקת התאימות של המכשיר

לא כל המכשירים שתומכים ב-ARCore תומכים גם ב-Geospatial API, כמו כפי שמתואר במדריך למתחילים ל-Java.

כדי לבדוק את התאימות של המכשיר של המשתמש, צריך להתקשר ArSession_isGeospatialModeSupported() אם היא מחזירה את הערך False, לא לנסות להגדיר את הסשן (בהמשך), כי הוא לכן תגרום ל-ArStatus לדווח על AR_ERROR_UNSUPPORTED_CONFIGURATION.

בקשת הרשאות מיקום מהמשתמש בזמן הריצה

האפליקציה צריכה לבקש הרשאות מיקום בזמן ריצה.

כדי להשתמש ב-ARCore Geospatial API, האפליקציה שלך צריכה לרשום את הפרטים הבאים הרשאות נוספות:

  • ACCESS_FINE_LOCATION כדי לקבוע במדויק את מיקומו של המשתמש.

  • ACCESS_COARSE_LOCATION עבור קביעה לא מדויקת של מיקום המשתמש וכדי לציית דרישות להגנה על פרטיות המשתמשים. עם זאת, אי אפשר להגדיר את ה-API הגיאו-מרחבי לפעול עם מיקום משוער, ובקשות 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 עם מיקום משוער.

בדיקת הזמינות הגיאו-מרחבית במיקום הנוכחי של המכשיר

ה-API הגיאו-מרחבי ה-API משתמש בשילוב של VPS ו-GPS כדי לקבוע מיקום גיאו-מרחבי, ולכן אפשר להשתמש ב-API כל עוד המכשיר יכול לקבוע את המיקום שלו. באזורים שבהם רמת הדיוק של ה-GPS נמוכה, כמו אזורים סגורים וסביבות עירוניות צפופות, ה-API יסתמך על כיסוי VPS כדי ליצור תנוחות ברמת דיוק גבוהה. בתנאים רגילים, ה-VPS צפוי לספק דיוק תלוי מיקום של כ-5 מטרים, ודיוק סיבובי של 5 מעלות. כדי לקבוע אם למיקום מסוים יש כיסוי VPS, משתמשים בפונקציה ArSession_checkVpsAvailabilityAsync().

אפשר להשתמש ב-Geospatial API גם באזורים שאין להם כיסוי של VPS. בסביבות חיצוניות שבהן אין הפרעות מעל הרצפה או שאין בהן הפרעות מצד ה-GPS, ייתכן שה-GPS מספיק כדי ליצור תנוחה ברמת דיוק גבוהה.

המאמרים הבאים