Android Studio'yu yükleyip yapılandırdıktan, proje oluşturduktan ve Jetpack XR SDK'yı ayarladıktan sonra, etkileyici deneyimler oluşturmaya başlayabilirsiniz.
Oluşturabileceğiniz tüm yöntemleri keşfetmeye başlamadan önce, uygulamanızın sürükleyici XR geliştirme için yapılandırıldığından emin olmak üzere aşağıdaki bölümlerdeki bilgileri inceleyin ve görevleri tamamlayın.
Uygulamanızın manifest dosyasını yapılandırma
Diğer Android uygulama projelerinde olduğu gibi, Android XR uygulamanızda belirli manifest ayarlarını içeren bir
AndroidManifest.xml dosyası olmalıdır. Manifest dosyası, uygulamanızla ilgili temel bilgileri Android derleme araçlarına, Android işletim sistemine ve Google Play'e açıklar. Daha fazla bilgi için uygulama manifestine genel bakış kılavuzuna bakın.
XR'ye özel uygulamalar için manifest dosyanızda aşağıdaki öğeler ve özellikler bulunmalıdır:
PROPERTY_XR_ACTIVITY_START_MODE özelliği
android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE" özelliği, etkinlik başlatıldığında belirli bir modda başlatılması gerektiğini sisteme bildirir.
Bu özelliğin aşağıdaki değerleri vardır:
XR_ACTIVITY_START_MODE_HOME_SPACE(yalnızca Jetpack XR SDK)XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED(yalnızca Jetpack XR SDK)
XR_ACTIVITY_START_MODE_HOME_SPACE
Uygulamanızı Ana Sayfa Alanı'nda başlatmak için bu başlangıç modunu kullanın. Ev Alanı'nda birden fazla uygulama yan yana çalışabilir. Böylece kullanıcılar aynı anda birden fazla iş yapabilir. Jetpack XR SDK kullanılarak oluşturulan XR uygulamalarının yanı sıra tüm mobil veya büyük ekran Android uygulamaları Ana Sayfa Alanı'nda çalışabilir.
<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
Uygulamanızı tam alanda başlatmak için bu başlangıç modunu kullanın. Tam alanda, alan sınırları olmadan tek bir uygulama çalışır ve diğer tüm uygulamalar gizlenir.
<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 özelliği
android:name="android.window.PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED" özelliği, uygulamanın belirli bir sınır türüyle başlatılması gerektiğini gösterir. Uygulamanızın, kullanıcıların fiziksel alanlarında hareket etmelerine olanak tanımak için tasarlanıp tasarlanmadığını
XR_BOUNDARY_TYPE_LARGE belirtmesi gerekir. XR_BOUNDARY_TYPE_NO_RECOMMENDATION belirtildiğinde güvenlik sınırı türüyle ilgili öneri verilmez. Bu nedenle sistem, zaten kullanılmakta olan türü kullanır.
<manifest ... >
<application ... >
<property
android:name="android.window.PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED"
android:value="XR_BOUNDARY_TYPE_LARGE" />
</application>
</manifest>
XR uygulamaları için PackageManager özellikleri
Uygulamaları Google Play Store üzerinden dağıttığınızda, uygulama manifestinde gerekli donanım veya yazılım özelliklerini belirtebilirsiniz. uses-feature öğesi, Play Store'un kullanıcılara gösterilen uygulamaları uygun şekilde filtrelemesine olanak tanır.
Aşağıdaki özellikler, XR'ye özel uygulamalara özgüdür.
android.software.xr.api.spatial
Jetpack XR SDK kullanılarak oluşturulan uygulamaların bu özelliği uygulama manifestine eklemesi gerekir. android:required özelliği için ayarladığınız değer, uygulamanızın sürüm kanalına bağlıdır.
Uygulama paketiniz, XR'a özel özellikleri veya içerikleri mevcut bir mobil APK'da birleştiriyorsa ve mobil sürüm kanalında yayınlanıyorsa android:required özelliğini false olarak ayarlayın:
<!-- 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" />
Uygulamanız XR özellikli cihazlar için özel olarak geliştirilmişse ve Android XR'a özel sürüm kanalında yayınlanmışsa android:required özelliğini true olarak ayarlayın:
<!-- 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
Bu özellik, uygulamanın doğru çalışması için yüksek hassasiyetli, 6DoF (serbestlik derecesi) hareket denetleyicisinden giriş yapılması gerektiğini gösterir. Uygulamanız kontrol cihazlarını destekliyorsa ve kontrol cihazları olmadan çalışamıyorsa değeri true olarak ayarlayın.
Uygulamanız kumandaları destekliyor ancak kumanda olmadan çalışabiliyorsa false olarak ayarlayın.
<!-- 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
Bu işaret, uygulamanın doğru çalışması için kullanıcının elindeki eklemlerin konumu, yönü ve hızı dahil olmak üzere yüksek doğrulukta el takibi gerektirdiğini gösterir. Uygulamanız el takibini destekliyorsa ve bu özellik olmadan çalışamıyorsa değeri true olarak ayarlayın. Uygulamanız el takibini destekliyor ancak bu özellik olmadan da çalışabiliyorsa false olarak ayarlayın.
<!-- 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
Bu işaret, uygulamanın doğru çalışması için giriş amacıyla yüksek doğrulukta göz takibi gerektiğini gösterir. Uygulamanız giriş için göz takibini destekliyorsa ve bu özellik olmadan çalışamıyorsa değeri true olarak ayarlayın. Uygulamanız giriş için göz takibini destekliyorsa ancak bu özellik olmadan da çalışabiliyorsa false olarak ayarlayın.
<!-- 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" />
Mobil ve büyük ekran uygulamaları için uygulama manifesti uyumluluğuyla ilgili dikkat edilmesi gereken noktalar
XR uygulamaları için PackageManager özellikleri bölümünde açıklandığı gibi, uygulamalar, uygulama manifestindeki <uses-feature> öğesinde beyan ederek bir özelliği kullandıklarını belirtir. Telefon veya GPS gibi bazı özellikler tüm cihazlarla uyumlu olmayabilir.
Bir cihazda etkinleştirilen özelliklerin listesini almak için adb
shell pm list features komutunu çalıştırın.
Desteklenmeyen özellikler
Google Play Store, aşağıdaki Android özelliği bildirimlerini kullanarak bir cihaza yüklenebilecek uygulamaları filtreler.
Kamera Donanımı
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
Bağlantı
android.hardware.ipsec_tunnel_migration
Cihaz Yapılandırması
Form Faktörü Yapılandırması
android.hardware.type.automotive
android.hardware.type.embedded
android.hardware.type.television
android.software.leanback_only
Giriş
android.software.input_methods
Konum
Near Field Communication
Güvenlik Yapılandırması ve Donanım
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
Sensörler
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
Yazılım Yapılandırması
android.software.connectionservice
android.software.expanded_picture_in_picture
android.software.live_wallpaper
android.software.picture_in_picture
android.software.wallet_location_based_suggestions
Telefon Hizmeti
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
Sanal Gerçeklik (Eski)
android.hardware.vr.headtracking
android.hardware.vr.high_performance
Widget'lar
Sonraki adımlar
Uygulamanızın manifest dosyasını yapılandırmayı ve önemli bilgileri incelemeyi tamamladığınıza göre artık etkileyici deneyimler oluşturmanın yollarını keşfedebilirsiniz:
- Android uygulamanızı XR ile 3D'ye taşıma
- XR için Jetpack Compose ile uzamsal kullanıcı arayüzü geliştirme
- Uzamsal kullanıcı arayüzünüzde Materyal Tasarım'ı uygulama
- Uygulamanıza uzamsal ortamlar ekleme
- Varlık oluşturma, kontrol etme ve yönetme