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.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
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ı
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ı
Bu izni gerektiren Unity özellikleri
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ı
Bu izni gerektiren Unity özellikleri
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ı
Bu izni gerektiren Unity özellikleri
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ı
Bu izni gerektiren Unity özellikleri
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.