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>
PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED özelliği
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.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 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.
Jetpack XR SDK
OpenXR Uzantıları
Unity Özellikleri
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ı.
Jetpack XR SDK
OpenXR Uzantıları
Unity Özellikleri
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.