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

Android XR, Android platformunun ve ekosisteminin bir uzantısıdır. Android XR SDK, 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ımak için tasarlanmıştır. Tüm uyumlu mobil veya büyük ekran uygulamaları, Play Store'dan XR kulaklıklara yüklenebilir. Uygulamanızın uyumlu olup olmadığını görmek için uyumlulukla ilgili hususları inceleyin.

Bu kılavuzda aşağıdaki alanlar 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 manifesti uyumluluğuyla ilgili dikkat edilmesi gereken noktalar
  • Android XR izinlerini anlama
  • Android XR uygulama kalitesini doğrulama
  • Android XR için uygulamanızı paketleme ve dağıtma

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

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

Jetpack XR SDK

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

  • Mevcut bir Android mobil uygulamasını 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 yapmaktan memnunsanız Jetpack XR SDK sizin için idealdir. Bu araç, söz konusu çerçeveler ve kitaplıklarla sorunsuz bir şekilde entegre olacak şekilde tasarlanmıştır ve mevcut bilgilerinizi kullanarak etkileyici XR deneyimleri oluşturmanıza olanak tanır.

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

Unity

Unity Engine, sanatçıların, tasarımcıların ve geliştiricilerin ortak çalışarak etkileyici ve etkileşimli deneyimler oluşturmasına olanak tanıyan gerçek zamanlı bir 3D geliştirme motorudur. Unity'nin Android XR desteği, Unity'nin yerleşik OpenXR desteği 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ştirmeyle ilgili bilginiz varsa bu seçeneği kullanın.

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

OpenXR

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

Android XR'da OpenXR desteği hakkında daha fazla bilgi edinin.

WebXR

WebXR, web için etkileyici deneyimler oluşturmanıza olanak tanır. Android XR'deki Chrome gibi uyumlu web tarayıcılarında VR ve AR cihazlarına 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 de Android XR'da ç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 birleştiren etkileyici deneyimler tasarlayabilirsiniz. İster yepyeni bir deneyim oluşturun ister mevcut bir uygulamaya sürükleyici öğeler ekleyin, Android XR için tasarım rehberi ile çalışmaya başlayabilirsiniz.

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ını içeren bir AndroidManifest.xml dosyası bulunmalı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 göz atı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 özellik için üç olası değer 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_FULL_SPACE_UNMANAGED (yalnızca OpenXR)

XR_ACTIVITY_START_MODE_HOME_SPACE

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

Uygulamanızı Home Space'te 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ı, Ev 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

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

Uygulamanızı tam alanda başlatmak için bu başlangıç modunu kullanın. Tam alanda, alan sınırları olmadan her seferinde 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 başlatılır ve XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED başlangıç modunu kullanmalıdır. Yönetilmeyen Tam Alan Android XR'a 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>

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, kullanıcıların fiziksel alanlarında hareket etmelerine olanak tanımak için tasarlanmışsa XR_BOUNDARY_TYPE_LARGE belirtmelidir. XR_BOUNDARY_TYPE_NO_RECOMMENDATION belirtildiğinde güvenlik sınırı türü için öneri sunulmaz. 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>

<uses-native-library> OpenXR

(Yalnızca OpenXR ile oluşturulan uygulamalar)

OpenXR uygulamalarının, çalışma zamanını başarıyla yüklemek için yerel OpenXR kitaplığının kullanımını bildirmesi gerekir. Bu beyan olmadan çalışma zamanı yüklenemez.

<manifest ... >

    <application ... >

    <uses-native-library andro id:name="libopenxr.google.so" android:required="false" />

       <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ğı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, uygulama manifestine bu özelliği eklemesi gerekir. android:required özelliği için ayarladığınız değer, uygulamanızın yayın 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 özellikle XR özellikli cihazlar için 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.software.xr.api.openxr

Android XR platformunu hedefleyen ve OpenXR veya Unity ile oluşturulan uygulamalar, android:required özelliği true olarak ayarlanmış şekilde bu özelliği uygulama manifestine eklemelidir.

Android XR Extensions Package for Unity 1.0.0 veya sonraki bir sürümünü ya da Unity OpenXR: Android XR Package 0.5.0-exp.1 veya sonraki bir sürümünü kullanan uygulamaların bu öğeyi uygulama manifestine manuel olarak eklemesi gerekmez. Bu iki paket, bu öğeyi sizin için uygulama manifestine yerleştirir.

Cihazlar, bu özellik için cihazın desteklediği en yüksek OpenXR sürümünü belirtebilir. Yüksek 16 bit, ana numarayı, düşük 16 bit ise alt numarayı temsil eder. Örneğin, OpenXR 1.1 sürümünü belirtmek için değer "0x00010001" olarak ayarlanır.

Uygulamalar, özelliğin sürümünü kullanarak uygulamanın gerektirdiği minimum OpenXR sürümünü belirtebilir. Örneğin, uygulamanız OpenXR 1.1 sürümünün desteklenmesini gerektiriyorsa aşağıdaki özelliği bildirin:

<uses-feature android:name="android.software.xr.api.openxr"
    android:version="0x00010001"
    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 kumandasız ç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 giriş için yüksek doğrulukta göz izleme 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 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 bir özelliği kullandıklarını uygulama manifestindeki <uses-feature> öğesinde beyan ederek belirtir. Telefon veya GPS gibi bazı özellikler tüm cihazlarla uyumlu olmayabilir.

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.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 izinleri hakkında

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

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

android.permission.EYE_TRACKING_COARSE

Kullanıcının göz pozunu, durumunu ve yönünü temsil etme (ör. avatarlarla kullanım için). Düşük hassasiyetli göz izleme verileri gerektiğinde bu izni kullanın.

Jetpack XR SDK

Yok

OpenXR Uzantıları

Unity Özellikleri

android.permission.EYE_TRACKING_FINE

Seçim, giriş ve etkileşim için gözle kontrol.

Jetpack XR SDK

Yok

OpenXR Uzantıları

Unity Özellikleri

android.permission.FACE_TRACKING

Yüz ifadelerini izleme ve oluşturma

Jetpack XR SDK

Yok

OpenXR Uzantıları

Unity Özellikleri

android.permission.HAND_TRACKING

El eklemi pozlarını, açısal ve doğrusal hızları izleme; kullanıcının ellerinin ağ gösterimini kullanma.

android.permission.SCENE_UNDERSTANDING_COARSE

Işık tahmini; geçişi ağ yüzeylerine yansıtma; ortamdaki izlenebilir öğelere karşı ışın dökümü gerçekleştirme; düzlem izleme; nesne izleme; kalıcı bağlantı noktaları.

android.permission.SCENE_UNDERSTANDING_FINE

Derinlik dokusu.

Jetpack XR SDK

Yok

OpenXR Uzantıları

Unity Özellikleri

Android XR uygulama kalitesini doğrulama

Uygulamanızın mükemmel bir kullanıcı deneyimi sunduğunu doğrulamak için Android XR uygulama kalite yönergelerimizi inceleyin.

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

Android XR, Google Play aracılığıyla XR başlıklarına çok çeşitli uygulamalar ve deneyimler getirir. Android XR için uygulamaları paketleme ve dağıtma kılavuzunda Play Store ve Play Console'u kullanmaya başlama, yayınlama kanalları, Android App Bundle'ları hazırlama ve uygulama boyutu kısıtlamaları hakkında bilgi bulabilirsiniz.


OpenXR™ ve OpenXR logosu, The Khronos Group Inc. şirketinin ticari markalarıdır ve Çin, Avrupa Birliği, Japonya ve Birleşik Krallık'ta ticari marka olarak tescillidir.