סקירה כללית על פיתוח ל-Android XR

Android XR הוא תוסף לפלטפורמה ולסביבה העסקית של Android. Android XR SDK מאפשר לכם ליצור אפליקציות XR באמצעות מסגרות וכלים מוכרים של Android, או באמצעות תקנים פתוחים כמו OpenXR ו-WebXR. כל האפליקציות הניידות או לאינטרנט שתואמות למכשירים עם מסך גדול יהיו זמינות להתקנה על אוזניות XR מחנות Play. בודקים את שיקולי התאימות כדי לראות אם האפליקציה תואמת.

המדריך הזה כולל הסברים על הנושאים הבאים:

  • בחירת הכלים והטכנולוגיות לפיתוח
  • עיצוב אפליקציות ל-Android XR
  • הגדרת קובץ המניפסט של האפליקציה
  • שיקולים לגבי תאימות של קובץ מניפסט של אפליקציה
  • הסבר על ההרשאות ל-Android XR
  • הבטחת איכות האפליקציות ל-Android XR
  • אריזה והפצה של האפליקציה ל-Android XR

בחירת הכלים והטכנולוגיות לפיתוח

כשיוצרים אפליקציה ל-Android XR, אפשר לבחור מבין הפלטפורמות והטכנולוגיות הבאות לפיתוח:

Jetpack XR SDK

ערכת ה-SDK של Jetpack XR מכילה ספריות Jetpack של Android XR שנוצרו כדי לנצל את היכולות הייחודיות של מכשירי XR. כדאי להתחיל עם ה-SDK הזה אם אתם רוצים לבצע אחת מהפעולות הבאות:

  • אופטימיזציה או שיפור של אפליקציה קיימת לנייד או לטאבלט עם Android
  • פיתוח אפליקציה חדשה ל-Android XR באמצעות Android Studio ו-Jetpack

אם אתם כבר מפתחים ב-Android Jetpack, ה-SDK של Jetpack XR הוא הפתרון בשבילכם. הוא תוכנן כך שיוכל להשתלב בצורה חלקה עם המסגרות והספריות האלה, ולאפשר לכם להשתמש בידע הקיים כדי ליצור חוויות XR immersive.

מידע נוסף על פיתוח באמצעות Jetpack XR SDK

Unity

Unity Engine הוא מנוע פיתוח תלת-ממדי בזמן אמת שמאפשר לאמנים, למעצבים ולמפתחים לשתף פעולה כדי ליצור חוויות immersive (מרתקות) ואינטראקטיביות. התמיכה של Unity ב-Android XR מעניקה לכם רמה גבוהה של שליטה בחוויות ה-3D שאתם מפתחים, תוך כדי ליהנות מתמיכת OpenXR ומסביבת הפיתוח של Unity.

אם כבר יש לכם חוויית XR שנוצרה באמצעות Unity או אם אתם מכירים את הפיתוח ב-Unity, כדאי להתחיל עם האפשרות הזו.

מידע נוסף על פיתוח ב-Unity ל-Android XR

OpenXR

OpenXR הוא תקן פתוח ללא תמלוגים שאפשר להשתמש בו כדי ליצור חוויות XR עם ביצועים גבוהים בפלטפורמות מרובות. Android XR תומך ב-OpenXR 1.0 וב-1.1, ואנחנו מרחיבים את המפרט עם תוספים חדשים ל-Android XR. Android XR מבוסס על תקנים פתוחים, ולכן כלי הפיתוח שתומכים ב-OpenXR וב-Android אמורים להיות תואמים ל-Android XR.

מידע נוסף על התמיכה ב-OpenXR ל-Android XR

WebXR

WebXR מאפשר לכם ליצור חוויות סוחפות באינטרנט. הוא מספק גישה למכשירי VR ו-AR בדפדפני אינטרנט תואמים, כמו Chrome ב-Android XR.

כדאי להתחיל עם האפשרות הזו אם רוצים ליצור חוויית XR לאינטרנט או אם רוצים להוסיף יכולות XR לאפליקציית אינטרנט. חוויות WebXR קיימות יפעלו גם ב-Android XR.

מידע נוסף על פיתוח אפליקציות אינטרנט באמצעות WebXR

עיצוב ל-XR

טכנולוגיית XR מרחיבה את פלטפורמת העיצוב מעבר למסכים רגילים ופשוטים. אתם יכולים לעצב חוויות סוחפות שמערבבות בין מציאות פיזית לבין מציאות מדומה. בין שאתם יוצרים חוויה חדשה לגמרי ובין שאתם מוסיפים רכיבים של חוויה immersive לאפליקציה קיימת, המדריך לעיצוב ל-Android XR יכול לעזור לכם להתחיל.

הגדרת קובץ המניפסט של האפליקציה

כמו בפרויקטים אחרים של אפליקציות ל-Android, לאפליקציה ל-Android XR צריך להיות קובץ AndroidManifest.xml עם הגדרות מניפסט ספציפיות. קובץ המניפסט מתאר מידע חיוני על האפליקציה לכלים ליצירת גרסאות build של Android, למערכת ההפעלה Android ול-Google Play. מידע נוסף זמין במדריך הסקירה הכללית בנושא קובץ המניפסט של האפליקציה.

באפליקציות מותאמות ל-XR, קובץ המניפסט צריך לכלול את הרכיבים והמאפיינים הבאים:

המאפיין PROPERTY_ACTIVITY_XR_START_MODE

המאפיין android:name="android.window.PROPERTY_ACTIVITY_XR_START_MODE" מאפשר למערכת לדעת שפעילות צריכה להתחיל במצב ספציפי.

למאפיין הזה יש שלושה ערכים אפשריים:

  • XR_ACTIVITY_START_MODE_HOME_SPACE (Jetpack XR SDK בלבד)
  • XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED (Jetpack XR SDK בלבד)
  • XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED (OpenXR בלבד)

XR_ACTIVITY_START_MODE_HOME_SPACE

(אפליקציות שנוצרו באמצעות Jetpack XR SDK בלבד)

אפשר להשתמש במצב ההפעלה הזה כדי להפעיל את האפליקציה במרחב הבית. במרחב הבית אפשר להריץ כמה אפליקציות לצד אחת, כדי שהמשתמשים יוכלו לבצע כמה משימות בו-זמנית. כל אפליקציית Android לנייד או למסך גדול יכולה לפעול במרחב הבית, וגם אפליקציות XR שנוצרו באמצעות Jetpack XR SDK.

<manifest ... >

   <application ... >
       <property
           android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE"
           android:value="XR_ACTIVITY_START_MODE_HOME_SPACE" />
       <activity
           android:name="com.example.myapp.MainActivity" ... >

           <intent-filter>
               <action android:name="android.intent.action.MAIN" />

               <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>
       </activity>
   </application>
</manifest>

XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED

(אפליקציות שנוצרו באמצעות Jetpack XR SDK בלבד)

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


<manifest ... >

   <application ... >
       <property
           android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE"
           android:value="XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED" />
       <activity
           android:name="com.example.myapp.MainActivity" ... >

           <intent-filter>
               <action android:name="android.intent.action.MAIN" />

               <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>
       </activity>
   </application>
</manifest>

XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED

(אפליקציות שנוצרו באמצעות OpenXR בלבד)

אפליקציות שנוצרו באמצעות OpenXR מופעלות במצב תצוגה מורחבת, וחובה להשתמש במצב ההפעלה XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED. מצב 'מרחב מלא לא מנוהל' מאותת ל-Android XR שהאפליקציה משתמשת ב-OpenXR.


<manifest ... >

   <application ... >
       <property
           android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE"
           android:value="XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED" />
       <activity
           android:name="com.example.myapp.MainActivity" ... >

           <intent-filter>
               <action android:name="android.intent.action.MAIN" />

               <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>
       </activity>
   </application>
</manifest>

<uses-native-library> OpenXR

(אפליקציות שנוצרו באמצעות OpenXR בלבד)

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


<manifest ... >

    <application ... >

    <uses-native-library android:name="libopenxr.google.so" android:required="true" />

       <activity
           android:name="com.example.myapp.MainActivity" ... >

           <intent-filter>
               <action android:name="android.intent.action.MAIN" />

               <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>
        </activity>
    </application>
</manifest>

תכונות של PackageManager לאפליקציות XR

כשמפצחים אפליקציות דרך חנות Google Play, אפשר לציין את מאפייני החומרה או התוכנה הנדרשים במניפסט של האפליקציה. האלמנט uses-feature מאפשר לחנות Play לסנן בצורה מתאימה את האפליקציות שמוצגות למשתמשים.

התכונות הבאות הן ספציפיות לאפליקציות עם תכונות XR.

android.software.xr.api.spatial

אפליקציות שנוצרו באמצעות Jetpack XR SDK חייבות לכלול את התכונה הזו במניפסט של האפליקציה. הערך שתגדירו למאפיין android:required תלוי בטראק השחרור של האפליקציה.

אם האפליקציה שלכם כוללת תכנים או תכונות ייחודיות ל-XR בחבילת APK קיימת לנייד, והיא מתפרסמת במסלול ההשקה לנייד, צריך להגדיר את המאפיין android:required לערך false. אם האפליקציה שלכם פותחה במיוחד למכשירים עם תמיכה ב-XR ופורסמה בנתיב ההשקה הייעודי של Android XR, צריך להגדיר את המאפיין android:required לערך true.

<uses-feature android:name="android.software.xr.api.spatial" android:required="true" />

android.software.xr.api.openxr

אפליקציות שמטרגטות את פלטפורמת Android XR ונוצרו באמצעות OpenXR או Unity חייבות לכלול את התכונה הזו במניפסט של האפליקציה, כאשר המאפיין android:required מוגדר כ-true.

באפליקציות שמשתמשות ב-Android XR Extensions Package for Unity מגרסה 1.0.0 ואילך או ב-Unity OpenXR: Android XR Package מגרסה 0.5.0-exp.1 ואילך, אין צורך להוסיף את הרכיב הזה באופן ידני למניפסט של האפליקציה. שתי החבילות האלה יזריקו את הרכיב הזה למניפסט של האפליקציה בשבילכם.

יכול להיות שמכשירים יציינו גרסה של התכונה הזו, שציינת את הגרסה הגבוהה ביותר של OpenXR שנתמכת במכשיר. 16 הביטים העליונים מייצגים את המספר הראשי, ו-16 הביטים התחתונים מייצגים את המספר המשני. לדוגמה, כדי לציין את OpenXR בגרסה 1.1, הערך יהיה '0x00010001'.

אפליקציות יכולות להשתמש בגרסה של התכונה כדי לציין את גרסת OpenXR המינימלית שנדרשת לאפליקציה. לדוגמה, אם האפליקציה שלכם דורשת תמיכה ב-OpenXR בגרסה 1.1, צריך להצהיר על התכונה הבאה:

<uses-feature android:name="android.software.xr.api.openxr"
    android:version="0x00010001"
    android:required="true" />

android.hardware.xr.input.controller

התכונה הזו מציינת שהאפליקציה זקוקה לקלט מבקר תנועה בעל דיוק גבוה עם 6DoF (דרגות חופש) כדי לפעול כמו שצריך. אם האפליקציה תומכת בבקרים ולא יכולה לפעול בלעדיהם, צריך להגדיר את הערך כ-true. אם האפליקציה תומכת בבקרים אבל יכולה לפעול בלעדיהם, צריך להגדיר את הערך כ-false.

<uses-feature android:name="android.hardware.xr.input.controller" android:required="true" />

android.hardware.xr.input.hand_tracking

הדגל הזה מציין שהאפליקציה דורשת מעקב יד באיכות גבוהה כדי לפעול בצורה תקינה, כולל המיקום, הכיוון והמהירות של המפרקים ביד של המשתמש. אם האפליקציה תומכת במעקב אחר תנועות ידיים ולא יכולה לפעול בלעדיו, צריך להגדיר את הערך כ-true. אם האפליקציה תומכת במעקב אחר תנועות הידיים אבל יכולה לפעול גם בלעדיו, צריך להגדיר את הערך כ-false.

<uses-feature android:name="android.hardware.xr.input.hand_tracking" android:required="true" />

android.hardware.xr.input.eye_tracking

הדגל הזה מציין שהאפליקציה דורשת מעקב עיניים באיכות גבוהה כדי שהקלט יפעל כמו שצריך. אם האפליקציה תומכת במעקב אחר תנועות העיניים לצורך קלט ואינה יכולה לפעול בלעדיו, צריך להגדיר את הערך כ-true. אם האפליקציה תומכת במעקב אחר תנועות העיניים לצורך קלט, אבל היא יכולה לפעול גם בלי מעקב כזה, צריך להגדיר את הערך כ-false.

<uses-feature android:name="android.hardware.xr.input.eye_tracking" android:required="true" />

שיקולים לגבי תאימות של מניפסט האפליקציה לאפליקציות לנייד ולאפליקציות במסך גדול

כפי שמתואר בקטע תכונות של PackageManager לאפליקציות XR, כדי להצהיר על שימוש בתכונה באפליקציה, צריך להצהיר עליה ברכיב <uses-feature> בקובץ המניפסט של האפליקציה. יכול להיות שחלק מהתכונות, כמו טלפוניה או GPS, לא יהיו תואמות לכל המכשירים.

תכונות שאינן נתמכות

חנות Google Play מסננת אפליקציות שזמינות להתקנה במכשיר באמצעות הצהרות המאפיינים הבאות של Android.

חומרת המצלמה

android.hardware.camera.ar

android.hardware.camera.autofocus

android.hardware.camera.capability.manual_post_processing

android.hardware.camera.capability.manual_sensor

android.hardware.camera.capability.raw

android.hardware.camera.concurrent

android.hardware.camera.external

android.hardware.camera.flash

android.hardware.camera.level.full

קישוריות

android.hardware.ethernet

android.hardware.uwb

android.hardware.ipsec_tunnel_migration

תצורת המכשיר

android.hardware.ram.low

הגדרת גורם צורה

android.hardware.type.automotive

android.hardware.type.embedded

android.hardware.type.pc

android.hardware.type.television

android.hardware.type.watch

android.software.leanback

android.software.leanback_only

android.software.live_tv

קלט

android.hardware.consumerir

android.software.input_methods

מיקום

android.hardware.location.gps

תקשורת מטווח קצר (NFC)

android.hardware.nfc

android.hardware.nfc.ese

android.hardware.nfc.hce

android.hardware.nfc.hcef

android.hardware.nfc.uicc

android.hardware.nfc.beam

הגדרות אבטחה וחומרה

android.hardware.se.omapi.ese

android.hardware.se.omapi.sd

android.hardware.se.omapi.uicc

android.hardware.biometrics.face

android.hardware.fingerprint

android.hardware.identity_credential

android.hardware.identity_credential_direct_access

android.hardware.keystore.limited_use_key

android.hardware.keystore.single_use_key

android.hardware.strongbox_keystore

חיישנים

android.hardware.sensor.accelerometer_limited_axes

android.hardware.sensor.accelerometer_limited_axes_uncalibrated

android.hardware.sensor.ambient_temperature

android.hardware.sensor.barometer

android.hardware.sensor.gyroscope_limited_axes

android.hardware.sensor.gyroscope_limited_axes_uncalibrated

android.hardware.sensor.heading

android.hardware.sensor.heartrate

android.hardware.sensor.heartrate.ecg

android.hardware.sensor.hinge_angle

android.hardware.sensor.light

android.hardware.sensor.relative_humidity

android.hardware.sensor.stepcounter

android.hardware.sensor.stepdetector

הגדרת תוכנה

android.software.backup

android.software.connectionservice

android.software.expanded_picture_in_picture

android.software.live_wallpaper

android.software.picture_in_picture

android.software.telecom

android.software.wallet_location_based_suggestions

טלפוניה

android.hardware.telephony

android.hardware.telephony.calling

android.hardware.telephony.cdma

android.hardware.telephony.data

android.hardware.telephony.euicc

android.hardware.telephony.euicc.mep

android.hardware.telephony.gsm

android.hardware.telephony.ims

android.hardware.telephony.mbms

android.hardware.telephony.messaging

android.hardware.telephony.radio.access

android.hardware.telephony.subscription

android.software.sip

android.software.sip.voip

מציאות מדומה (דור קודם)

android.hardware.vr.headtracking

android.hardware.vr.high_performance

android.software.vr.mode

ווידג'טים

android.software.app_widgets

הסבר על ההרשאות ל-XR

בדומה לאפליקציות במכשירים ניידים ובפורמטים אחרים, יכול להיות שחלק מהיכולות שמוצעות באפליקציות XR ידרשו הצהרת הרשאות בקובץ AndroidManifest של האפליקציה. במקרה של הרשאות מסוכנות, יכול להיות שהאפליקציה תצטרך לבקש הרשאות בזמן ריצה. מידע מפורט יותר זמין במאמרים הרשאות ב-Android ושיטות מומלצות לשימוש בהרשאות.

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

android.permission.EYE_TRACKING_COARSE

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

Jetpack XR SDK

לא רלוונטי

תוספים ל-OpenXR

תכונות של Unity

android.permission.EYE_TRACKING_FINE

תנועת העין לבחירה, להזנת קלט ולביצוע אינטראקציות.

Jetpack XR SDK

לא רלוונטי

תוספים ל-OpenXR

תכונות של Unity

android.permission.FACE_TRACKING

מעקב אחרי הבעות פנים ורינדור שלהן.

Jetpack XR SDK

לא רלוונטי

תוספים ל-OpenXR

תכונות של Unity

android.permission.HAND_TRACKING

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

android.permission.SCENE_UNDERSTANDING_COARSE

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

android.permission.SCENE_UNDERSTANDING_FINE

טקסטורת עומק.

Jetpack XR SDK

לא רלוונטי

תוספים ל-OpenXR

תכונות של Unity

איך מוודאים שהאפליקציה באיכות גבוהה ל-Android XR

כדי להבטיח שהאפליקציה מספקת חוויית משתמש מעולה, כדאי לעיין בהנחיות שלנו לגבי איכות האפליקציות ל-Android XR.

איך אורזים ומפיצים אפליקציה ל-Android XR

מערכת Android XR מאפשרת לכם להשתמש במגוון רחב של אפליקציות וחוויות במשקפי XR דרך Google Play. במדריך לאריזה ולהפצה של אפליקציות ל-Android XR מפורט מידע על תחילת העבודה עם Play Store ו-Play Console, פרסום טראקים, הכנת חבילות של אפליקציות ל-Android והגבלות על גודל האפליקציות.