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.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.level.full
קישוריות
android.hardware.ipsec_tunnel_migration
תצורת המכשיר
הגדרת גורם צורה
android.hardware.type.automotive
android.hardware.type.embedded
android.hardware.type.television
android.software.leanback_only
קלט
android.software.input_methods
מיקום
תקשורת מטווח קצר (NFC)
תצורת אבטחה וחומרה
android.hardware.se.omapi.uicc
android.hardware.biometrics.face
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.relative_humidity
android.hardware.sensor.stepcounter
android.hardware.sensor.stepdetector
הגדרת תוכנה
android.software.connectionservice
android.software.expanded_picture_in_picture
android.software.live_wallpaper
android.software.picture_in_picture
android.software.wallet_location_based_suggestions
טלפוניה
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.hardware.vr.headtracking
android.hardware.vr.high_performance
ווידג'טים
הסבר על ההרשאות ל-XR
בדומה לאפליקציות במכשירים ניידים ובפורמטים אחרים, יכול להיות שחלק מהפונקציונליות שמוצעת באפליקציות XR תחייב את האפליקציה שלכם להצהיר על הרשאות בקובץ AndroidManifest של האפליקציה. במקרה של הרשאות מסוכנות, יכול להיות שהאפליקציה תצטרך לבקש הרשאות בסביבת זמן הריצה. מידע מפורט יותר זמין במאמרים הרשאות ב-Android ושיטות מומלצות לשימוש בהרשאות.
הרשאות לתכונות XR
אפליקציות XR יכולות להשתמש בהרשאות הבאות. כל ההרשאות בקטע הזה נחשבות להרשאות מסוכנות, לכן עליכם להצהיר עליהן במניפסט של האפליקציה וגם לבקש אותן בסביבת זמן הריצה.
android.permission.EYE_TRACKING
תרחישים לדוגמה שבהם נדרשת ההרשאה הזו
ייצוג התנוחה והכיוון של העיניים של המשתמש, למטרות של יצירת דמויות
תכונות של Jetpack XR SDK שדורשות את ההרשאה הזו
לא רלוונטי
תוספים של OpenXR שדורשים את ההרשאה הזו
תכונות של Unity שדורשות את ההרשאה הזו
Android XR: AR Face
android.permission.EYE_TRACKING_FINE
תרחישים לדוגמה שבהם נדרשת ההרשאה הזו
קלט ואינטראקציות של מבט
תכונות של Jetpack XR SDK שדורשות את ההרשאה הזו
לא רלוונטי
תוספים של OpenXR שדורשים את ההרשאה הזו
תכונות של Unity שדורשות את ההרשאה הזו
android.permission.FACE_TRACKING
תרחישים לדוגמה שבהם נדרשת ההרשאה הזו
מעקב אחר הבעות פנים ורינדור שלהן
תכונות של Jetpack XR SDK שדורשות את ההרשאה הזו
לא רלוונטי
תוספים של OpenXR שדורשים את ההרשאה הזו
תכונות של Unity שדורשות את ההרשאה הזו
android.permission.HAND_TRACKING
תרחישים לדוגמה שבהם נדרשת ההרשאה הזו
מעקב אחרי תנוחות המפרקים של היד ומהירות זוויתית ולינארית, באמצעות ייצוג רשת של הידיים של המשתמש
תכונות של Jetpack XR SDK שדורשות את ההרשאה הזו
לא רלוונטי
תוספים של OpenXR שדורשים את ההרשאה הזו
תכונות של Unity שדורשות את ההרשאה הזו
android.permission.SCENE_UNDERSTANDING
תרחישים לדוגמה שבהם נדרשת ההרשאה הזו
אומדן תאורה, הקרנת תצוגה שקורצת דרך עצמים על משטחי רשת, ביצוע הקרנות של קרני אור על אובייקטים שניתנים למעקב בסביבה, מעקב אחר מישורים, מעקב אחר אובייקטים, עבודה עם עומק לצורך בדיקת חסימות והיטים, עוגנים עמידים.
תכונות של Jetpack XR SDK שדורשות את ההרשאה הזו
מעקב אחרי מטוסים
בדיקה של מיקום המצביע
התמדה של עוגן
תוספים של OpenXR שדורשים את ההרשאה הזו
תכונות של Unity שדורשות את ההרשאה הזו
איך מוודאים שהאפליקציה באיכות גבוהה ל-Android XR
כדי להבטיח שהאפליקציה מספקת חוויית משתמש מצוינת, כדאי לעיין בהנחיות האיכות לאפליקציות ל-Android XR.
איך אורזים ומפיצים אפליקציה ל-Android XR
מערכת Android XR מאפשרת לכם להשתמש במגוון רחב של אפליקציות וחוויות דרך Google Play באוזניות XR. במדריך לאריזה ולהפצה של אפליקציות ל-Android XR מפורט מידע על תחילת העבודה עם Play Store ו-Play Console, פרסום טראקים, הכנת חבילות של אפליקציות ל-Android והגבלות על גודל האפליקציות.