Android XR için uygulama oluşturmaya genel bakış

Android XR, Android platformunun ve ekosisteminin bir uzantısıdır. Android XR SDK'sı, aşina olduğunuz Android çerçevelerini ve araçlarını ya da OpenXR ve WebXR gibi açık standartları kullanarak XR uygulamaları oluşturmanıza olanak tanıyacak şekilde tasarlanmıştır. Uyumlu tüm mobil veya büyük ekran uygulamaları, Play Store'dan XR kulaklıklara yüklenebilecek. Uygulamanızın uyumlu olup olmadığını görmek için uyumlulukla ilgili hususları inceleyin.

Bu kılavuzda aşağıdaki konular açıklanmaktadır:

  • Geliştirme araçlarınızı ve teknolojilerinizi seçme
  • Android XR için uygulama tasarlama
  • Uygulamanızın manifest dosyasını yapılandırma
  • Uygulama manifest uyumluluğuyla ilgili dikkat edilecek noktalar
  • Android XR için izinleri anlama
  • Android XR uygulama kalitesini sağlama
  • Uygulamanızı Android XR için paketleme ve dağıtma

Geliştirme araçlarınızı ve teknolojilerinizi seçme

Android XR için uygulama oluştururken aşağıdaki geliştirme platformları ve teknolojileri arasından seçim yapabilirsiniz:

Jetpack XR SDK'sı

Jetpack XR SDK'sı, XR cihazların benzersiz özelliklerinden yararlanmak için oluşturulan Android XR Jetpack kitaplıklarını içerir. Aşağıdakilerden birini yapmak istiyorsanız bu SDK'yı kullanın:

  • Mevcut bir Android mobil veya tablet uygulamasını optimize etme ya da geliştirme
  • Android Studio ve Jetpack'i kullanarak yeni bir Android XR uygulaması oluşturma

Android Jetpack ile geliştirme yapma konusunda rahatsanız Jetpack XR SDK'sı sizin için idealdir. Bu çerçeve ve kitaplıklarla sorunsuz bir şekilde entegre olacak şekilde tasarlanmıştır ve sürükleyici XR deneyimleri oluşturmak için mevcut bilgileri kullanmanıza olanak tanır.

Jetpack XR SDK'sı ile geliştirme yapma hakkında daha fazla bilgi edinin.

Unity

Unity Engine, sanatçıların, tasarımcıların ve geliştiricilerin sürükleyici ve etkileşimli deneyimler oluşturmak için birlikte çalışmasını sağlayan gerçek zamanlı bir 3D geliştirme motorudur. Unity'nin Android XR desteği, Unity'nin yerleşik OpenXR desteğinden ve geliştirici ekosisteminden yararlanırken geliştirdiğiniz 3D deneyimler üzerinde yüksek düzeyde kontrol sahibi olmanızı sağlar.

Unity ile oluşturulmuş bir XR deneyiminiz varsa veya Unity geliştirme konusunda bilginiz varsa bu seçenekle başlayın.

Android XR için Unity ile geliştirme yapma hakkında daha fazla bilgi edinin.

OpenXR

OpenXR, yüksek performanslı, çok platformlu XR deneyimleri oluşturmak için kullanılabilen, telifsiz, açık bir standarttır. Android XR, OpenXR 1.0 ve 1.1'i destekler. Spesifikasyonu, Android XR için yeni uzantılarla genişletiyoruz. Android XR, açık standartlar üzerine kurulduğundan OpenXR ve Android'i destekleyen geliştirme araçları Android XR ile uyumlu olmalıdır.

Android XR için OpenXR desteği hakkında daha fazla bilgi edinin.

WebXR

WebXR, web için etkileyici deneyimler oluşturmanıza olanak tanır. Android XR'de Chrome gibi uyumlu web tarayıcılarında VR ve AR cihazlara erişim sağlar.

Web için bir XR deneyimi oluşturmak veya bir web uygulamasına XR özellikleri eklemek istiyorsanız bu seçenekle başlayın. Mevcut WebXR deneyimleri Android XR'de de çalışır.

WebXR ile web uygulamaları oluşturma hakkında daha fazla bilgi edinin.

XR için tasarım

XR, tasarım yüzeyini geleneksel düz ekranların ötesine taşır. Fiziksel ve sanal gerçekliği bir araya getiren etkileyici deneyimler tasarlayabilirsiniz. Yepyeni bir deneyim mi geliştiriyorsunuz yoksa mevcut bir uygulamaya sürükleyici öğeler mi ekleyeceksiniz? Android XR için tasarım kılavuzu, işe başlamanıza yardımcı olabilir.

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

Diğer Android uygulama projelerinde olduğu gibi, Android XR uygulamanızda belirli manifest ayarlarına sahip bir AndroidManifest.xml dosyası olmalıdır. Manifest dosyası, Android derleme araçları, Android işletim sistemi ve Google Play için uygulamanızla ilgili temel bilgileri açıklar. Daha fazla bilgi için uygulama manifest dosyasına genel bakış kılavuzuna bakın.

XR'de farklılaştırılmış uygulamalar için manifest dosyanızda aşağıdaki öğeler ve özellikler bulunmalıdır:

PROPERTY_ACTIVITY_XR_START_MODE mülkü

android:name="android.window.PROPERTY_ACTIVITY_XR_START_MODE" mülkü, bir etkinlik başlatıldığında sistemin belirli bir modda başlatılması gerektiğini bildirir.

Bu özellik için üç olası değer vardır:

  • 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_FULL_SPACE_UNMANAGED (yalnızca OpenXR)

XR_ACTIVITY_START_MODE_HOME_SPACE

(Yalnızca Jetpack XR SDK'sı ile oluşturulan uygulamalar)

Uygulamanızı Ev 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 çoklu görev yapabilir. Mobil veya büyük ekran Android uygulamaları, Home Space'te ve Jetpack XR SDK'sı kullanılarak oluşturulan XR uygulamaları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

(Yalnızca Jetpack XR SDK'sı ile oluşturulan uygulamalar)

Uygulamanızı tam alanda başlatmak için bu başlatma modunu kullanın. Tam Alan'da, alan sınırı 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>

XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED

(Yalnızca OpenXR ile oluşturulan uygulamalar)

OpenXR ile oluşturulan uygulamalar Tam Alan'da açılır ve XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED başlangıç modunu kullanmalıdır. Yönetilmeyen tam alan, Android XR'ye uygulamanın OpenXR kullandığını bildirir.


<manifest ... >

   <application ... >
       <property
           android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE"
           android:value="XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED" />
       <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 uygulamaları için PackageManager özellikleri

Uygulamaları Google Play Store üzerinden dağıtırken 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 uygulamalarına özeldir.

android.software.xr.immersive

Uygulamanız Android XR platformunu hedefliyorsa ve yalnızca XR'yi destekleyen platformlarda çalışıyorsa değeri true olarak ayarlayın. Uygulamanızda XR için optimize edilmiş bazı özellikler varsa ancak XR olmayan cihazlarda da çalışabiliyorsa değeri false olarak ayarlayın.

OpenXR veya Unity ile oluşturulan uygulamaların bu değerin true olarak ayarlanması zorunludur.

<uses-feature android:name="android.software.xr.immersive" android:required="true" />

android.hardware.xr.input.controller

Bu özellik, uygulamanın düzgün çalışması için yüksek hassasiyetli, 6 serbestlik dereceli (DoF) bir hareket denetleyiciden giriş alması gerektiğini gösterir. Uygulamanız denetleyicileri destekliyorsa ve bunlar olmadan çalışamıyorsa değeri true olarak ayarlayın. Uygulamanız kumandaları destekliyorsa ancak bunlar olmadan da çalışabiliyorsa bu özelliği false olarak ayarlayın.

<uses-feature android:name="android.hardware.xr.input.controller" android:required="true" />

android.hardware.xr.input.hand_tracking

Bu işaret, uygulamanın düzgün çalışması için kullanıcının elindeki eklemlerin konumu, yönü ve hızı da dahil olmak üzere yüksek hassasiyetli el izleme gerektirdiğini gösterir. Uygulamanız el izlemeyi destekliyorsa ve bu özellik olmadan çalışamıyorsa değeri true olarak ayarlayın. Uygulamanız el izlemeyi destekliyor ancak bu özellik olmadan da çalışabiliyorsa false olarak ayarlayın.

<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şin düzgün çalışması için yüksek hassasiyetli göz izleme gerektirdiğini gösterir. Uygulamanız giriş için göz izlemeyi destekliyorsa ve bu olmadan çalışamıyorsa değeri true olarak ayarlayın. Uygulamanız giriş için göz izlemeyi destekliyorsa ancak bu özellik olmadan da çalışabiliyorsa false olarak ayarlayın.

<uses-feature android:name="android.hardware.xr.input.eye_tracking" android:required="true" />

Mobil ve büyük ekran uygulamaları için uygulama manifest uyumluluğuyla ilgili dikkat edilmesi gereken noktalar

XR uygulamaları için PackageManager özellikleri bölümünde açıklandığı gibi, uygulamalar bir özelliği uygulama manifestindeki <uses-feature> öğesinde beyan ederek kullandıklarını belirtir. Telefon veya GPS gibi bazı özellikler tüm cihazlarla uyumlu olmayabilir.

Desteklenmeyen özellikler

Google Play Store, aşağıdaki Android özellik beyanlarını kullanarak cihaza yüklenebilecek uygulamaları filtreler.

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 Hizmeti

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

XR için izinleri anlama

Mobil cihazlardaki ve diğer form faktörlerindeki uygulamalarda olduğu gibi, XR uygulamalarının sunduğu bazı işlevler için uygulamanızın AndroidManifest dosyasında izinleri belirtmesi gerekebilir. Tehlikeli izinler söz konusu olduğunda uygulamanızın çalışma zamanında izin istemesi gerekebilir. Daha ayrıntılı bilgi için Android'de izinler ve izinlerle ilgili en iyi uygulamalar başlıklı makaleleri okuyun.

XR özellikleri için izinler

Aşağıdaki izinler XR uygulamaları tarafından kullanılabilir. Bu bölümdeki tüm izinler tehlikeli izin olarak kabul edilir. Bu nedenle, bunları uygulama manifest'inizde belirtmeniz ve çalışma zamanında istemeniz gerekir.

android.permission.EYE_TRACKING

Bu izni gerektiren kullanım alanları

Avatarlar için kullanıcının göz pozunu ve yönünü temsil eder.

Bu izni gerektiren Jetpack XR SDK özellikleri

Yok

Bu izni gerektiren OpenXR uzantıları

XR_ANDROID_avatar_eyes

Bu izni gerektiren Unity özellikleri

Android XR: AR Yüz

android.permission.EYE_TRACKING_FINE

Bu izni gerektiren kullanım alanları

Göz hareketi girişi ve etkileşimler

Bu izni gerektiren Jetpack XR SDK özellikleri

Yok

Bu izni gerektiren OpenXR uzantıları

XR_EXT_eye_gaze_interaction

Bu izni gerektiren Unity özellikleri

Eye Gaze Interaction

android.permission.FACE_TRACKING

Bu izni gerektiren kullanım alanları

Yüz ifadelerini izleme ve oluşturma

Bu izni gerektiren Jetpack XR SDK özellikleri

Yok

Bu izni gerektiren OpenXR uzantıları

XR_ANDROID_face_tracking

Bu izni gerektiren Unity özellikleri

XRFaceTrackingFeature

android.permission.HAND_TRACKING

Bu izni gerektiren kullanım alanları

El eklemlerinin duruşlarını, açısal ve doğrusal hızlarını izleme; Kullanıcının ellerinin ağ temsilini kullanma

Bu izni gerektiren Jetpack XR SDK özellikleri

Yok

Bu izni gerektiren OpenXR uzantıları

XR_ANDROID_hand_mesh

XR_EXT_hand_tracking

Bu izni gerektiren Unity özellikleri

XR Hands

XRHandMeshFeature

android.permission.SCENE_UNDERSTANDING

Bu izni gerektiren kullanım alanları

Işık tahmini; geçişi ağ yüzeylerine yansıtma; ortamdaki izlenebilirlere karşı ışın izleme gerçekleştirme; düzlem izleme; nesne izleme; örtme ve isabet testi için derinlikle çalışma; kalıcı ankrajlar.

Bu izni gerektiren Jetpack XR SDK özellikleri

Uçak takibi

İsabet Testi

Sabit Kalıcı

Bu izni gerektiren OpenXR uzantıları

XR_ANDROID_anchor_persistence

XR_ANDROID_depth_texture

XR_ANDROID_light_estimation

XR_ANDROID_composition_layer_passthrough_mesh

XR_ANDROID_raycast

XR_ANDROID_trackables

XR_ANDROID_trackables_object

Bu izni gerektiren Unity özellikleri

XRAnchorFeature

XRDepthTextureFeature

XRLightEstimationFeature

XRPassthroughFeature

XRTrackableFeature

XRObjectTrackingFeature

Android XR uygulama kalitesini sağlama

Uygulamanızın mükemmel bir kullanıcı deneyimi sağladığından emin olmak için Android XR uygulama kalite yönergelerimizi inceleyin.

Uygulamanızı Android XR için paketleme ve dağıtma

Android XR, Google Play üzerinden XR kulaklıklarına çok çeşitli uygulama ve deneyimler sunar. Android XR için uygulamaları paketleme ve dağıtma kılavuzunda Play Store ve Play Console'u kullanmaya başlama, kanal yayınlama, Android uygulama paketleri hazırlama ve uygulama boyutu kısıtlamaları hakkında bilgi bulabilirsiniz.