סקירה כללית על פיתוח ל-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, ‏Jetpack XR SDK הוא הפתרון בשבילכם. הוא תוכנן כך שיוכל להשתלב בצורה חלקה עם המסגרות והספריות האלה, ולאפשר לכם להשתמש בידע הקיים כדי ליצור חוויות 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>

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

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

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

android.software.xr.immersive

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

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

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

android.hardware.xr.input.controller

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

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

android.permission.EYE_TRACKING

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

ייצוג התנוחה והכיוון של העיניים של המשתמש, למטרות של יצירת דמויות

תכונות של Jetpack XR SDK שדורשות את ההרשאה הזו

לא רלוונטי

תוספים של OpenXR שדורשים את ההרשאה הזו

XR_ANDROID_avatar_eyes

תכונות של Unity שדורשות את ההרשאה הזו

Android XR: AR Face

android.permission.EYE_TRACKING_FINE

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

קלט ואינטראקציות של מבט

תכונות של Jetpack XR SDK שדורשות את ההרשאה הזו

לא רלוונטי

תוספים של OpenXR שדורשים את ההרשאה הזו

XR_EXT_eye_gaze_interaction

תכונות של Unity שדורשות את ההרשאה הזו

Eye Gaze Interaction

android.permission.FACE_TRACKING

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

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

תכונות של Jetpack XR SDK שדורשות את ההרשאה הזו

לא רלוונטי

תוספים של OpenXR שדורשים את ההרשאה הזו

XR_ANDROID_face_tracking

תכונות של Unity שדורשות את ההרשאה הזו

XRFaceTrackingFeature

android.permission.HAND_TRACKING

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

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

תכונות של Jetpack XR SDK שדורשות את ההרשאה הזו

לא רלוונטי

תוספים של OpenXR שדורשים את ההרשאה הזו

XR_ANDROID_hand_mesh

XR_EXT_hand_tracking

תכונות של Unity שדורשות את ההרשאה הזו

XR Hands

XRHandMeshFeature

android.permission.SCENE_UNDERSTANDING

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

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

תכונות של Jetpack XR SDK שדורשות את ההרשאה הזו

מעקב אחרי מטוסים

בדיקה של מיקום המצביע

התמדה של עוגן

תוספים של OpenXR שדורשים את ההרשאה הזו

XR_ANDROID_anchor_persistence

XR_ANDROID_depth_texture

XR_ANDROID_light_estimation

XR_ANDROID_composition_layer_passthrough_mesh

XR_ANDROID_raycast

XR_ANDROID_trackables

XR_ANDROID_trackables_object

תכונות של Unity שדורשות את ההרשאה הזו

XRAnchorFeature

XRDepthTextureFeature

XRLightEstimationFeature

XRPassthroughFeature

XRTrackableFeature

XRObjectTrackingFeature

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

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

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

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