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

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

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

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

אפליקציה לדוגמה ו-Codelab

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

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

מידע נוסף זמין במאמר מבוא ל-Geospatial API.

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

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

הפעלת ה-API של ARCore

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

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

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

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

בקובץ build.gradle של האפליקציה, מגדירים את Google Play Services כך שיכללו את ספריית המיקום של Play Services.

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:

Java

Config config = session.getConfig();
config.setGeospatialMode(Config.GeospatialMode.ENABLED);
session.configure(config);

Kotlin

// 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 לצורך קביעת מיקום המשתמש באופן לא מדויק ובהתאם לדרישות הפרטיות של המשתמשים. עם זאת, אי אפשר להגדיר את ה-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, כפי שמוצג למעלה. עליכם להגדיר את שתי הרשאות המיקום.

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

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

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

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

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