Etkileyici deneyimler oluşturmaya başlama

Uygun XR cihazlar
Bu kılavuz, bu tür XR cihazları için deneyimler geliştirmenize yardımcı olur.
XR Kulaklığı
Kablolu XR Gözlükleri

Android Studio'yu yükleyip yapılandırdıktan, proje oluşturduktan ve Jetpack XR SDK'yı kurduktan sonra XR kulaklığı ve kablolu XR gözlükleri gibi cihazlar için sürükleyici deneyimler oluşturmaya başlayabilirsiniz.

Uygulama geliştirmenin tüm yollarını keşfetmeye başlamadan önce aşağıdaki bölümlerde yer alan bilgileri inceleyin ve görevleri tamamlayarak uygulamanızın etkileyici XR geliştirme için yapılandırıldığından emin olun.

Uygulamanızın manifest dosyasını yapılandırma

Diğer Android uygulama projelerinde olduğu gibi Android XR uygulamanızda da belirli manifest ayarlarına sahip bir AndroidManifest.xml dosyası bulunmalıdır. Manifesto 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'a özel uygulamalar için manifesto 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, sistemin bir etkinliğin başlatıldığında belirli bir modda başlatılması gerektiğini bilmesini sağlar.

Bu özellik aşağıdaki değerlere sahiptir:

  • XR_ACTIVITY_START_MODE_HOME_SPACE (Yalnızca Jetpack XR SDK'sı)
  • XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED (Yalnızca Jetpack XR SDK'sı)

XR_ACTIVITY_START_MODE_HOME_SPACE

Uygulamanızı Home Space'te başlatmak için bu başlatma modunu kullanın. Home Space'te birden fazla uygulama yan yana çalıştırılabildiğinden kullanıcılar aynı anda birden fazla işlem yapabilir. Tüm mobil veya büyük ekran Android uygulamaları, Jetpack XR SDK kullanılarak geliştirilen XR uygulamalarıyla birlikte 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 Ekran Alanı'nda başlatmak için bu başlatma modunu kullanın. Tam Ekran Alanı'nda, alan sınırları olmadan aynı anda yalnızca 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>

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 belirtir. Uygulamanız, kullanıcıların fiziksel alanlarında hareket etmelerine olanak tanıyacak şekilde tasarlanmışsa XR_BOUNDARY_TYPE_LARGE değerini belirtmelidir. XR_BOUNDARY_TYPE_NO_RECOMMENDATION değerini belirtmek, güvenlik sınırı türü için herhangi bir öneri sağlamaz. Bu nedenle sistem, halihazırda kullanılan 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

Google Play Store üzerinden uygulama dağıtırken uygulama manifestinde gerekli donanım veya yazılım özelliklerini belirtebilirsiniz. uses-feature öğesi, Google Play Store'un kullanıcılara gösterilen uygulamaları uygun şekilde filtrelemesine olanak tanır.

Aşağıdaki özellikler XR'a özel uygulamalara özgüdür.

android.software.xr.api.spatial

Jetpack XR SDK kullanılarak geliştirilen uygulamaların uygulama manifest dosyasında bu özellik bulunmalıdır. android:required özelliği için ayarladığınız değer, uygulamanızın sürüm kanalına bağlıdır.

Uygulamanız, 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 özellikle XR özellikli cihazlar için geliştirildiyse ve Android XR'a özel sürüm kanalında yayınlandıysa 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 düzgün çalışması için yüksek hassasiyetli, 6DoF (serbestlik derecesi) hareket kontrol cihazından giriş alması gerektiğini gösterir. Uygulamanız kumandaları destekliyorsa ve kumanda olmadan çalışamıyorsa değeri true olarak ayarlayın. Uygulamanız kumandaları destekliyor ancak kumanda olmadan da ç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 şekilde çalışması için kullanıcının elindeki eklemlerin konumu, yönü ve hızı dahil olmak üzere yüksek doğruluklu el takibi gerektiğ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 giriş için yüksek doğruluklu göz takibi gerektirdiğ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 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 eye tracking. -->
<uses-feature android:name="android.hardware.xr.input.eye_tracking" android:required="true" />

android.hardware.xr.input.face_tracking

Bu işaret, uygulamanın düzgün çalışması için yüz takibi donanımı gerektiğini gösterir. Uygulamanız yüz takibini destekliyorsa ve bu özellik olmadan çalışamıyorsa değeri true olarak ayarlayın. Uygulamanız yüz 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 face tracking. -->
<uses-feature android:name="android.hardware.xr.input.face_tracking" android:required="true" />

Mobil ve büyük ekran uygulamaları için uygulama manifesti uyumluluğuyla ilgili dikkat edilmesi gerekenler

XR uygulamaları için PackageManager özellikleri bölümünde açıklandığı gibi, uygulamalar bir özelliği kullandıklarını uygulama manifestindeki <uses-feature> öğesinde bildirir. 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, bir cihaza yüklenebilecek uygulamaları filtrelemek için aşağıdaki Android özellik bildirimlerini kullanır.

Kamera Donanımı

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

Bağlantı

android.hardware.ethernet

android.hardware.uwb

android.hardware.ipsec_tunnel_migration

Cihaz Yapılandırması

android.hardware.ram.low

Form Faktörü Yapılandırması

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

Giriş

android.hardware.consumerir

android.software.input_methods

Konum

android.hardware.location.gps

Near Field Communication

android.hardware.nfc

android.hardware.nfc.ese

android.hardware.nfc.hce

android.hardware.nfc.hcef

android.hardware.nfc.uicc

android.hardware.nfc.beam

Güvenlik Yapılandırması ve Donanım

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

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

android.hardware.sensor.relative_humidity

android.hardware.sensor.stepcounter

android.hardware.sensor.stepdetector

Yazılım Yapılandırması

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

Telefon

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

Sanal Gerçeklik (Eski)

android.hardware.vr.headtracking

android.hardware.vr.high_performance

android.software.vr.mode

Widget'lar

android.software.app_widgets

Sonraki adımlar

Uygulamanızın manifest dosyasını yapılandırmayı ve önemli bilgileri incelemeyi tamamladığınıza göre, etkileyici deneyimler oluşturmanın yollarını keşfedin: