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ıklarına yüklenebilecek. 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 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

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 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 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'da 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 bir araya getiren etkileyici deneyimler tasarlayabilirsiniz. İster yepyeni bir deneyim oluşturuyor ister mevcut bir uygulamaya sürükleyici öğeler ekliyor olun, Android XR için tasarım rehberi başlangıçta size 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'den farklı 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 etkinliğin 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'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. Ana Ekran'da birden fazla uygulama yan yana çalışabilir. Böylece kullanıcılar çoklu görev yapabilir. Ana Ekran'da mobil veya büyük ekran Android uygulamalarının yanı sıra Jetpack XR SDK'sı kullanılarak oluşturulan XR uygulamaları da ç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'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>

<uses-native-library> OpenXR

(Yalnızca OpenXR ile oluşturulan uygulamalar)

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


<manifest ... >

    <application ... >

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

       <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'de farklılaştırılmış uygulamalara özeldir.

android.software.xr.api.spatial

Jetpack XR SDK'sı kullanılarak oluşturulan uygulamalar bu özelliği uygulama manifestine eklemelidir. android:required özelliği için belirlediğiniz değer, uygulamanızın sürüm kanalına bağlıdır.

Uygulamanız, XR'den farklılaştırılmış özellikleri veya içeriği mevcut bir mobil APK'da paketliyorsa ve mobil sürüm kanalında yayınlanıyorsa android:required özelliğini false olarak ayarlamanız gerekir. Uygulamanız özellikle XR özellikli cihazlar için geliştirildiyse ve Android XR'ye özel sürüm kanalında yayınlandıysa android:required özelliğini true olarak ayarlamanız gerekir.

<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, bu özelliği uygulama manifest dosyasına android:required özelliği true olarak ayarlanmış şekilde eklemelidir.

Unity için Android XR Uzantıları Paketi 1.0.0 veya sonraki bir sürümü ya da Unity OpenXR: Android XR Paketi 0.5.0-exp.1 veya sonraki bir sürümünü kullanan uygulamaların bu öğeyi uygulama manifest'ine manuel olarak eklemesi gerekmez. Bu iki paket, bu öğeyi sizin için uygulama manifestine ekler.

Cihazlar bu özellik için bir sürüm belirtebilir. Bu sürüm, cihaz tarafından desteklenen OpenXR'ın en yüksek sürümünü belirtir. Üstteki 16 bit ana sayıyı, alttaki 16 bit ise alt sayıyı temsil eder. Örneğin, OpenXR 1.1 sürümünü belirtmek için değer "0x00010001" olarak ayarlanır.

Uygulamalar, OpenXR'ın uygulamanın gerektirdiği minimum sürümünü belirtmek için özellik sürümünü kullanabilir. Örneğin, uygulamanız OpenXR 1.1 sürümü desteği gerektiriyorsa aşağıdaki özelliği belirtin:

<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 şekilde çalışması için yüksek hassasiyetli, 6 DoF (özgürlük derecesi) hareket denetleyicisinden 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 doğrulukta 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 destekliyorsa 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ı kullanılarak 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

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ı ö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ı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.

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 manifest'inizde belirtmeniz 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 eder (ö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şimler için göz hareketleri.

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 eklemlerinin duruşlarını, açısal ve doğrusal hızlarını izleme; Kullanıcının ellerinin ağ temsilini kullanma.

android.permission.SCENE_UNDERSTANDING_COARSE

Işık tahmini; geçişi ağ yüzeylerine yansıtma; ortamdaki izlenebilirlere karşı ışın izleme gerçekleştirme; düzlem izleme; nesne izleme; kalıcı ankrajlar.

android.permission.SCENE_UNDERSTANDING_FINE

Derinlik dokusu.

Jetpack XR SDK

Yok

OpenXR Uzantıları

Unity Özellikleri

Android XR uygulama kalitesini sağlama

Uygulamanızın mükemmel bir kullanıcı deneyimi sunmasını sağlamak için Android XR uygulama kalitesi yönergelerimizi inceleyin.

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

Android XR, Google Play üzerinden XR başlıklarda ç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.