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

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

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

قبل از شروع بررسی تمام روش‌های ساخت ، اطلاعات را مرور کنید و وظایف بخش‌های بعدی را انجام دهید تا مطمئن شوید که برنامه شما برای توسعه همه‌جانبه XR پیکربندی شده است.

فایل مانیفست برنامه خود را پیکربندی کنید

همانند سایر پروژه‌های اپلیکیشن اندروید، اپلیکیشن اندروید XR شما باید یک فایل AndroidManifest.xml با تنظیمات خاص manifest داشته باشد. فایل manifest اطلاعات ضروری در مورد اپلیکیشن شما را برای ابزارهای ساخت اندروید، سیستم عامل اندروید و گوگل پلی شرح می‌دهد. برای اطلاعات بیشتر به راهنمای نمای کلی manifest اپلیکیشن مراجعه کنید.

برای برنامه‌های متمایز 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

از این حالت شروع برای اجرای برنامه خود در Home Space استفاده کنید. در Home Space، چندین برنامه می‌توانند در کنار هم اجرا شوند، بنابراین کاربران می‌توانند چند کار را همزمان انجام دهند. هر برنامه اندروید موبایل یا صفحه نمایش بزرگ و همچنین برنامه‌های XR که با استفاده از Jetpack XR SDK ساخته شده‌اند، می‌توانند در Home Space اجرا شوند.

<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

از این حالت شروع برای اجرای برنامه خود در حالت تمام صفحه (Full Space) استفاده کنید. در حالت تمام صفحه، فقط یک برنامه در یک زمان اجرا می‌شود، بدون مرز فضا، و همه برنامه‌های دیگر پنهان می‌شوند.


<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" نشان می‌دهد که برنامه باید با نوع خاصی از مرز (border) راه‌اندازی شود. اگر برنامه شما طوری طراحی شده است که به کاربران اجازه می‌دهد در فضای فیزیکی خود حرکت کنند، باید 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

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

ویژگی‌های زیر مختص برنامه‌های متمایز شده با XR هستند.

اندروید.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 ساخته شده است و در مسیر انتشار اختصاصی اندروید 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" />

کنترلر ورودی سخت‌افزاری اندروید (xr)

این ویژگی نشان می‌دهد که برنامه برای عملکرد صحیح به ورودی از یک کنترلر حرکتی با دقت بالا و 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" />

ردیابی چشم در اندروید با سخت‌افزار xr

این پرچم نشان می‌دهد که برنامه برای عملکرد صحیح ورودی به ردیابی چشم با دقت بالا نیاز دارد. اگر برنامه شما از ردیابی چشم برای ورودی پشتیبانی می‌کند و بدون آن نمی‌تواند کار کند، مقدار را روی 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، ممکن است با همه دستگاه‌ها سازگار نباشند.

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

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

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

سخت‌افزار دوربین

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

مراحل بعدی

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