شروع به ساختن تجربه‌های فراگیر کنید

دستگاه‌های XR واجدشرایط
این راهنمایی به شما کمک می‌کند برای این نوع دستگاه‌های واقعیت گسترده تجربه بسازید.
هدست‌های واقعیت گسترده
عینک واقعیت گسترده سیمی

پس‌از نصب و پیکربندی Android Studio، ایجاد پروژه، و راه‌اندازی Jetpack XR SDK، آماده‌اید تا ساختن تجربه‌های فراگیر را برای دستگاه‌هایی مثل هدست‌های واقعیت گسترده و عینک‌های واقعیت گسترده سیمی شروع کنید.

قبل‌از شروع کاوش همه روش‌هایی که می‌توانید بسازید، اطلاعات را مرور کنید و هر تکلیفی را در بخش‌های زیر تکمیل کنید تا مطمئن شوید برنامه‌تان برای توسعه 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)
  • XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED (فقط کیت توسعه نرم‌افزار Jetpack XR)

XR_ACTIVITY_START_MODE_HOME_SPACE

از این حالت شروع برای راه‌اندازی برنامه‌تان در «فضای صفحه اصلی» استفاده کنید. در «فضای صفحه اصلی»، چند برنامه می‌توانند درکنار هم اجرا شوند تا کاربران بتوانند چندوظیفگی انجام دهند. هر برنامه 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

از این حالت شروع برای راه‌اندازی برنامه‌تان در «فضای کامل» استفاده کنید. در «فضای کامل»، فقط یک برنامه در هر زمان اجرا می‌شود، بدون مرزهای فضایی، و همه برنامه‌های دیگر پنهان می‌شوند.


<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>

ویژگی 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>

ویژگی‌های PackageManager برای برنامه‌های XR

وقتی برنامه‌ها را ازطریق «فروشگاه Google Play» توزیع می‌کنید، می‌توانید ویژگی‌های سخت‌افزاری یا نرم‌افزاری موردنیاز را در مانیفست برنامه مشخص کنید. عنصر uses-feature به «فروشگاه Play» اجازه می‌دهد برنامه‌های نشان‌داده‌شده به کاربران را به‌طور مناسب فیلتر کند.

ویژگی‌های زیر مختص برنامه‌های متمایز 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.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" />

android.hardware.xr.input.face_tracking

این پرچم نشان می‌دهد که برنامه برای عملکرد صحیح به سخت‌افزار ردگیری چهره نیاز دارد. اگر برنامه‌تان از ردگیری چهره پشتیبانی می‌کند و بدون آن نمی‌تواند کار کند، مقدار را روی true تنظیم کنید. اگر برنامه‌تان از ردگیری چهره پشتیبانی می‌کند، اما می‌تواند بدون آن کار کند، آن را روی false تنظیم کنید.

<!-- Sets android:required to true, indicating that your app can't function on devices without face tracking. -->
<uses-feature android:name="android.hardware.xr.input.face_tracking" android:required="true" />

ملاحظات سازگاری مانیفست برنامه برای برنامه‌های تلفن همراه و صفحه‌نمایش بزرگ

همان‌طور که در بخش ویژگی‌های PackageManager برای برنامه‌های XR توضیح داده شده است، برنامه‌ها با اعلام ویژگی در عنصر <uses-feature> در مانیفست برنامه، اعلام می‌کنند که از آن ویژگی استفاده می‌کنند. برخی‌از ویژگی‌ها، مثل تلفن یا GPS، ممکن است با همه دستگاه‌ها سازگار نباشد.

برای دریافت فهرست ویژگی‌هایی که برای دستگاه فعال شده است، adb shell pm list features را اجرا کنید.

ویژگی‌های پشتیبانی‌نشده

فروشگاه 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

ارتباط حوزه نزدیک

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

مراحل بعدی

اکنون که پیکربندی مانیفست برنامه‌تان و مرور اطلاعات مهم را به‌پایان رسانده‌اید، روش‌هایی را که می‌توانید تجربه‌های فراگیر بسازید کاوش کنید: