Android XR توسعهای از پلتفرم و اکوسیستم اندروید است. Android XR SDK به گونه ای طراحی شده است که به شما امکان می دهد برنامه های XR را با استفاده از چارچوب ها و ابزارهای آشنای Android یا با استفاده از استانداردهای باز مانند OpenXR و WebXR بسازید. همه برنامه های سازگار با موبایل یا صفحه نمایش بزرگ برای نصب روی هدست های XR از فروشگاه Play در دسترس خواهند بود. ملاحظات سازگاری را بررسی کنید تا ببینید آیا برنامه شما سازگار است یا خیر.
این راهنما زمینه های زیر را توضیح می دهد:
- ابزارها و فناوری های توسعه خود را انتخاب کنید
 - طراحی اپلیکیشن برای اندروید XR
 - در حال پیکربندی فایل مانیفست برنامه شما
 - ملاحظات سازگاری مانیفست برنامه
 - آشنایی با مجوزهای اندروید XR
 - بررسی کیفیت برنامه Android XR
 - بسته بندی و توزیع برنامه شما برای Android XR
 
ابزارها و فناوری های توسعه خود را انتخاب کنید
هنگام ساخت یک برنامه برای Android XR، میتوانید از میان پلتفرمها و فناوریهای توسعه زیر یکی را انتخاب کنید:
Jetpack XR SDK
Jetpack XR SDK شامل کتابخانههای Android XR Jetpack است که برای استفاده از قابلیتهای منحصر به فرد دستگاههای XR ساخته شدهاند. اگر میخواهید یکی از موارد زیر را انجام دهید، با این SDK شروع کنید:
- یک برنامه تلفن همراه یا رایانه لوحی Android موجود را بهینه یا ارتقا دهید
 - با استفاده از Android Studio و Jetpack یک برنامه Android XR جدید بسازید
 
اگر از قبل با Android Jetpack توسعه میدهید، Jetpack XR SDK برای شما مناسب است. این طراحی شده است تا به طور یکپارچه با آن چارچوب ها و کتابخانه ها یکپارچه شود و به شما امکان می دهد از دانش موجود برای ایجاد تجربیات فراگیر XR استفاده کنید.
درباره توسعه با Jetpack XR SDK بیشتر بیاموزید .
وحدت
Unity Engine یک موتور توسعه سه بعدی بلادرنگ است که به هنرمندان، طراحان و توسعه دهندگان اجازه می دهد تا برای ایجاد تجربیات همهجانبه و تعاملی با یکدیگر همکاری کنند. پشتیبانی Unity از Android XR به شما سطح بالایی از کنترل را بر تجربیات سه بعدی که توسعه میدهید، میدهد، در حالی که از اکوسیستم توسعهدهنده و پشتیبانی 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 به شما امکان می دهد تجربیات همه جانبه ای برای وب ایجاد کنید. این امکان دسترسی به دستگاه های واقعیت مجازی و واقعیت افزوده را در مرورگرهای وب سازگار مانند Chrome در Android XR فراهم می کند.
اگر می خواهید یک تجربه XR برای وب بسازید یا اگر می خواهید قابلیت های XR را به یک برنامه وب اضافه کنید، با این گزینه شروع کنید. تجربههای موجود WebXR روی Android XR نیز کار خواهند کرد.
درباره ساختن برنامه های وب با WebXR بیشتر بیاموزید .
طراحی برای XR
XR سطح طراحی را فراتر از صفحه نمایش های تخت سنتی گسترش می دهد. شما می توانید تجربه های همه جانبه ای طراحی کنید که واقعیت فیزیکی و مجازی را با هم ترکیب کنند. چه در حال ساختن یک تجربه کاملاً جدید باشید و چه در حال افزودن عناصر فراگیر به یک برنامه موجود، راهنمای طراحی برای Android XR می تواند به شما در شروع کار کمک کند.
فایل مانیفست برنامه خود را پیکربندی کنید
مانند سایر پروژه های برنامه Android، برنامه Android XR شما باید دارای یک فایل AndroidManifest.xml با تنظیمات مانیفست خاص باشد. فایل مانیفست اطلاعات ضروری در مورد برنامه شما را برای ابزارهای ساخت Android، سیستم عامل Android و Google Play توضیح می دهد. برای اطلاعات بیشتر به راهنمای نمای کلی مانیفست برنامه مراجعه کنید.
برای برنامههای متمایز XR ، فایل مانیفست شما باید دارای عناصر و ویژگیهای زیر باشد:
ویژگی PROPERTY_XR_ACTIVITY_START_MODE
 ویژگی android:name="android.window.PROPERTY_XR_ACTIVITY_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 ساخته شده اند)
از این حالت شروع برای راه اندازی برنامه خود در Home Space استفاده کنید. در Home Space، چندین برنامه می توانند در کنار هم اجرا شوند، بنابراین کاربران می توانند چند کار را انجام دهند. هر برنامه اندرویدی تلفن همراه یا صفحه نمایش بزرگ می تواند در Home Space و همچنین برنامه های 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>
دارایی PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED
 ویژگی android:name="android.window.PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED" نشان می دهد که برنامه باید با نوع خاصی از مرز راه اندازی شود. اگر برنامه شما طوری طراحی شده است که به کاربران اجازه حرکت در فضای فیزیکی خود را بدهد، باید XR_BOUNDARY_TYPE_LARGE مشخص کند. تعیین XR_BOUNDARY_TYPE_NO_RECOMMENDATION هیچ توصیهای برای نوع مرز ایمنی ارائه نمیدهد، بنابراین سیستم از نوعی استفاده میکند که قبلاً استفاده میشود.
<manifest ... >
   <application ... >
       <property
           android:name="android.window.PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED"
           android:value="XR_BOUNDARY_TYPE_LARGE" />
   </application>
</manifest>
<uses-native-library> OpenXR
(برنامه های ساخته شده فقط با OpenXR)
برنامه های OpenXR باید استفاده از کتابخانه اصلی OpenXR را برای بارگیری موفقیت آمیز زمان اجرا اعلام کنند. بدون این اعلان ، زمان اجرا بارگذاری نخواهد شد.
<manifest ... >
    <application ... >
    <uses-native-library android:name="libopenxr.google.so" android:required="false" />
       <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 Store اجازه می دهد تا برنامه های نمایش داده شده به کاربران را به درستی فیلتر کند.
ویژگیهای زیر مختص برنامههای متمایز شده با XR است.
android.software.xr.api.spatial
 برنامههایی که با استفاده از Jetpack XR SDK ساخته میشوند باید این ویژگی را در مانیفست برنامه داشته باشند. مقداری که برای ویژگی android:required تنظیم می کنید به مسیر انتشار برنامه شما بستگی دارد.
 اگر برنامه شما ویژگیها یا محتوای متمایز شده با XR را در یک APK تلفن همراه موجود قرار میدهد و در مسیر انتشار موبایل منتشر میشود، ویژگی android:required را روی false تنظیم کنید:
<!-- If you are publishing an existing mobile APK using the mobile release track, set android:required to false.-->
<uses-feature android:name="android.software.xr.api.spatial" android:required="false" />
 اگر برنامه شما به طور خاص برای دستگاه های دارای XR ساخته شده است و در مسیر انتشار اختصاصی Android XR منتشر شده است، ویژگی android:required را روی true تنظیم کنید:
<!-- If you are publishing a separate APK for XR using the dedicated Android XR release track, set android:required to 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 برای نسخه 1.0.0 یا بالاتر یا Unity OpenXR: بسته Android XR نسخه 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 تنظیم کنید.
<!-- Sets android:required to true, indicating that your app can't function on devices without controllers. -->
<uses-feature android:name="android.hardware.xr.input.controller" android:required="true" />
android.hardware.xr.input.hand_tracking
 این پرچم نشان می دهد که برنامه برای عملکرد صحیح به ردیابی دست با وفاداری بالا از جمله موقعیت، جهت و سرعت مفاصل در دست کاربر نیاز دارد. اگر برنامه شما از ردیابی دست پشتیبانی میکند و نمیتواند بدون آن کار کند، مقدار را روی true تنظیم کنید. اگر برنامه شما از ردیابی دست پشتیبانی می کند، اما می تواند بدون آن کار کند، آن را روی false تنظیم کنید.
<!-- Sets android:required to true, indicating that your app can't function on devices without hand tracking. -->
<uses-feature android:name="android.hardware.xr.input.hand_tracking" android:required="true" />
android.hardware.xr.input.eye_tracking
 این پرچم نشان می دهد که برنامه برای عملکرد صحیح ورودی به ردیابی چشم با وفاداری بالا نیاز دارد. اگر برنامه شما از ردیابی چشم برای ورودی پشتیبانی می کند و نمی تواند بدون آن کار کند، مقدار را روی true تنظیم کنید. اگر برنامه شما از ردیابی چشم برای ورودی پشتیبانی می کند، اما می تواند بدون آن کار کند، آن را روی false تنظیم کنید. 
<!-- Sets android:required to true, indicating that your app can't function on devices without eye tracking. -->
<uses-feature android:name="android.hardware.xr.input.eye_tracking" android:required="true" />
ملاحظات سازگاری مانیفست برنامه برای برنامه های موبایل و صفحه نمایش بزرگ
 همانطور که در بخش ویژگیهای PackageManager برای برنامههای XR توضیح داده شد، برنامهها اعلام میکنند که از یک ویژگی با اعلام آن در عنصر <uses-feature> در مانیفست برنامه استفاده میکنند. برخی از ویژگیها، مانند تلفن یا GPS، ممکن است با همه دستگاهها سازگار نباشند.
ویژگی های پشتیبانی نشده
سخت افزار دوربین
 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
مکان
ارتباط میدان نزدیک
پیکربندی امنیتی و سخت افزار
 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 استفاده شود. همه مجوزهای موجود در این بخش مجوزهای خطرناکی در نظر گرفته می شوند، بنابراین باید آنها را در مانیفست برنامه خود اعلام کنید و در زمان اجرا درخواست کنید.
android.permission.EYE_TRACKING_COARSE
نمایش وضعیت، وضعیت و جهت گیری چشم کاربر، مانند استفاده با آواتارها. هنگامی که به داده های ردیابی چشم با دقت پایین نیاز است از این مجوز استفاده کنید.
Jetpack XR SDK
n/a
برنامه های افزودنی OpenXR
ویژگی های یونیتی
android.permission.EYE_TRACKING_FINE
نگاه چشم برای انتخاب، ورودی، و تعامل.
Jetpack XR SDK
n/a
برنامه های افزودنی OpenXR
ویژگی های یونیتی
android.permission.FACE_TRACKING
ردیابی و رندر حالات چهره.
Jetpack XR SDK
n/a
برنامه های افزودنی OpenXR
ویژگی های یونیتی
android.permission.HAND_TRACKING
ردیابی موقعیت های مفصل دست و سرعت های زاویه ای و خطی. با استفاده از نمایش مش از دست های کاربر.
Jetpack XR SDK
برنامه های افزودنی OpenXR
ویژگی های یونیتی
android.permission.SCENE_UNDERSTANDING_COARSE
تخمین نور؛ پخش گذر بر روی سطوح مش. انجام پرتوهای ردیابی در محیط. ردیابی هواپیما؛ ردیابی اشیا؛ لنگرهای مداوم
Jetpack XR SDK
برنامه های افزودنی OpenXR
ویژگی های یونیتی
android.permission.SCENE_UNDERSTANDING_FINE
بافت عمقی
Jetpack XR SDK
n/a
برنامه های افزودنی OpenXR
ویژگی های یونیتی
کیفیت برنامه Android XR را تأیید کنید
برای تأیید اینکه برنامه شما یک تجربه کاربری عالی ارائه میدهد، دستورالعملهای کیفیت برنامه Android XR ما را مرور کنید.
برنامه خود را برای Android XR بسته بندی و توزیع کنید
Android XR طیف گسترده ای از برنامه ها و تجربیات را از طریق Google Play به هدست های XR می آورد. در راهنمای بستهبندی و توزیع برنامهها برای Android XR ، اطلاعاتی درباره شروع کار با Play Store و Play Console، انتشار آهنگها، آمادهسازی بستههای برنامه Android و محدودیتهای اندازه برنامه پیدا خواهید کرد.
OpenXR™ و لوگوی OpenXR علائم تجاری متعلق به The Khronos Group Inc. هستند و به عنوان یک علامت تجاری در چین، اتحادیه اروپا، ژاپن و بریتانیا ثبت شده اند.