بعد از اینکه اندروید استودیو را نصب و پیکربندی کردید، یک پروژه ایجاد کردید و کیت توسعه نرمافزار 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>
ویژگی PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED
ویژگی 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.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، اپلیکیشن اندروید خود را سهبعدی کنید
- توسعه رابط کاربری فضایی با Jetpack Compose برای XR
- طراحی متریال را برای رابط کاربری فضایی خود پیادهسازی کنید
- محیطهای مکانی را به برنامه خود اضافه کنید
- ایجاد، کنترل و مدیریت موجودیتها