Omówienie kompilowania aplikacji na Androida XR

Android XR to rozszerzenie platformy i ekosystemu Androida. Pakiet SDK Androida XR umożliwia tworzenie aplikacji XR za pomocą znanych platform i narzędzi Androida lub z wykorzystaniem otwartych standardów, takich jak OpenXR i WebXR. Wszystkie zgodne aplikacje na urządzenia mobilne lub duże ekrany będą dostępne do zainstalowania na zestawach XR ze Sklepu Play. Zapoznaj się z uwagami na temat zgodności, aby sprawdzić, czy Twoja aplikacja jest zgodna.

W tym przewodniku znajdziesz informacje na te tematy:

  • Wybieranie narzędzi i technologii programistycznych
  • Projektowanie aplikacji na Androida XR
  • Konfigurowanie pliku manifestu aplikacji
  • Informacje o zgodności pliku manifestu aplikacji
  • Informacje o uprawnieniach w Androidzie XR
  • Jakość aplikacji na Androida XR
  • Pakowanie i rozpowszechnianie aplikacji na Androida XR

Wybierz narzędzia i technologie programistyczne

Podczas tworzenia aplikacji na Androida XR możesz skorzystać z tych platform i technologii programistycznych:

Pakiet SDK Jetpack XR

Pakiet Jetpack XR SDK zawiera biblioteki Jetpacka na Androida XR, które umożliwiają korzystanie z unikatowych możliwości urządzeń XR. Zacznij od tego pakietu SDK, jeśli chcesz wykonać jedną z tych czynności:

  • Optymalizowanie lub ulepszanie istniejącej aplikacji na telefon lub tablet z Androidem
  • Tworzenie nowej aplikacji na Androida XR za pomocą Androida Studio i Jetpacka

Jeśli czujesz się już pewnie, tworząc aplikacje za pomocą Jetpacka na Androida, Jetpack XR SDK będzie dla Ciebie odpowiednim wyborem. Jest ona zaprojektowana tak, aby płynnie integrować się z tymi frameworkami i bibliotekami, a także umożliwia wykorzystanie istniejącej wiedzy do tworzenia wciągających doświadczeń XR.

Więcej informacji o programowaniu z użyciem pakietu Jetpack XR SDK

Unity

Unity Engine to silnik do tworzenia gier 3D w czasie rzeczywistym, który umożliwia współpracę między artystami, projektantami i programistami w celu tworzenia wciągających i interakcyjnych treści. Obsługa XR na Androida w Unity zapewnia wysoki poziom kontroli nad tworzonymi przez Ciebie wrażeniami 3D, a zarazem korzystanie z dobrze rozwiniętego wsparcia OpenXR i ekosystemu deweloperów Unity.

Jeśli masz już treści XR utworzone w Unity lub znasz się na programowaniu w Unity, zacznij od tej opcji.

Więcej informacji o programowaniu w Unity na potrzeby XR na Androida

OpenXR

OpenXR to otwarty standard bez tantiem, który można wykorzystać do tworzenia wydajnych, wieloplatformowych środowisk XR. Android XR obsługuje OpenXR 1.0 i 1.1, a my rozszerzamy specyfikację o nowe rozszerzenia na potrzeby Androida XR. Platforma Android XR jest oparta na otwartych standardach, dlatego narzędzia do tworzenia aplikacji, które obsługują OpenXR i Androida, powinny być zgodne z Androidem XR.

Więcej informacji o obsługiwaniu OpenXR na Androidzie XR

WebXR

WebXR umożliwia tworzenie wciągających wrażeń w internecie. Zapewnia dostęp do urządzeń VR i AR w kompatybilnych przeglądarkach, takich jak Chrome na Androidzie XR.

Zacznij od tej opcji, jeśli chcesz tworzyć treści XR na potrzeby internetu lub dodawać funkcje XR do aplikacji internetowej. Dotychczasowe treści WebXR będą też działać na Androidzie XR.

Więcej informacji o tworzeniu aplikacji internetowych za pomocą WebXR

Projektowanie z myślą o XR

Technologia XR rozszerza możliwości projektowania poza tradycyjne płaskie ekrany. Możesz tworzyć wciągające doświadczenia, które łączą rzeczywistość fizyczną z wirtualną. Niezależnie od tego, czy tworzysz zupełnie nowe środowisko, czy dodajesz elementy skoncentrowane na użytkowniku do istniejącej aplikacji, ten przewodnik po projektowaniu środowisk XR na Androida pomoże Ci zacząć.

Konfigurowanie pliku manifestu aplikacji

Podobnie jak w przypadku innych projektów aplikacji na Androida, aplikacja na Androida XR musi mieć plik AndroidManifest.xml z określonymi ustawieniami pliku manifestu. Plik manifestu zawiera istotne informacje o aplikacji, które są potrzebne narzędziom do kompilacji Androida, systemowi operacyjnemu Android i Google Play. Więcej informacji znajdziesz w przewodniku na temat pliku manifestu aplikacji.

W przypadku aplikacji z różnymi wersjami na urządzenia XR plik manifestu musi zawierać te elementy i atrybuty:

Właściwość PROPERTY_ACTIVITY_XR_START_MODE

Właściwość android:name="android.window.PROPERTY_ACTIVITY_XR_START_MODE" informuje system, że aktywność powinna być uruchamiana w określonym trybie.

Właściwość ta może mieć 3 możliwe wartości:

  • XR_ACTIVITY_START_MODE_HOME_SPACE (dotyczy tylko pakietu SDK Jetpack XR)
  • XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED (dotyczy tylko pakietu SDK Jetpack XR)
  • XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED (tylko OpenXR)

XR_ACTIVITY_START_MODE_HOME_SPACE

(dotyczy tylko aplikacji utworzonych za pomocą pakietu Jetpack XR SDK)

Użyj tego trybu uruchamiania, aby uruchomić aplikację w obszarze Home Space. W obszarze Home Space można uruchamiać wiele aplikacji obok siebie, co pozwala użytkownikom na wykonywanie wielu zadań jednocześnie. W domu można używać dowolnej aplikacji na Androida na telefony i duże ekrany, a także aplikacji XR utworzonych za pomocą pakietu Jetpack XR SDK.

<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

(dotyczy tylko aplikacji utworzonych za pomocą pakietu Jetpack XR SDK)

Użyj tego trybu uruchamiania, aby uruchomić aplikację w trybie pełnego ekranu. W trybie pełnego obrazu działa tylko jedna aplikacja, bez żadnych granic, a wszystkie inne aplikacje są ukryte.


<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

(dotyczy tylko aplikacji utworzonych za pomocą OpenXR)

Aplikacje utworzone za pomocą OpenXR uruchamiają się w trybie pełnego obrazu i muszą używać trybu uruchamianiaXR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED. Niezarządzane sygnały w pełnym zakresie przestrzeni na Androida XR – aplikacja korzysta z OpenXR.


<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>

Funkcje PackageManagera dla aplikacji XR

Podczas rozpowszechniania aplikacji w Sklepie Google Play możesz określić wymagane funkcje sprzętowe lub programowe w manifeście aplikacji. Element uses-feature pozwala Sklepowi Play odpowiednio filtrować aplikacje wyświetlane użytkownikom.

Poniższe funkcje są dostępne tylko w przypadku aplikacji XR.

android.software.xr.immersive

Jeśli Twoja aplikacja jest kierowana na platformę XR na Androida i działa tylko na platformach obsługujących XR, ustaw wartość na „true” (prawda). Jeśli aplikacja zawiera funkcje zoptymalizowane pod kątem XR, ale może też działać na urządzeniach innych niż XR, ustaw wartość na „false” (fałsz).

W przypadku aplikacji utworzonych za pomocą OpenXR lub Unity musi być ustawiona wartość „true”.

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

android.hardware.xr.input.controller

Ta funkcja wskazuje, że aplikacja wymaga do prawidłowego działania sterowania ruchem o wysokiej precyzji i 6 stopniach swobody. Jeśli Twoja aplikacja obsługuje kontrolery i nie może działać bez nich, ustaw wartość na „true” (prawda). Jeśli Twoja aplikacja obsługuje kontrolery, ale może działać bez nich, ustaw tę wartość na „false” (fałsz).

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

android.hardware.xr.input.hand_tracking

Ta flaga wskazuje, że aplikacja wymaga do prawidłowego działania śledzenia dłoni o wysokiej wierności, w tym pozycji, orientacji i prędkości stawów w ręce użytkownika. Jeśli Twoja aplikacja obsługuje śledzenie dłoni i nie może działać bez niego, ustaw wartość na „true”. Jeśli Twoja aplikacja obsługuje śledzenie dłoni, ale może działać bez niego, ustaw tę opcję na „false” (fałsz).

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

android.hardware.xr.input.eye_tracking

Ten parametr wskazuje, że aplikacja wymaga do prawidłowego działania śledzenia ruchów oczu o wysokiej rozdzielczości. Jeśli Twoja aplikacja obsługuje śledzenie ruchów gałek ocznych i nie może działać bez niego, ustaw wartość na „Prawda”. Jeśli Twoja aplikacja obsługuje śledzenie wzroku, ale może działać bez niego, ustaw tę opcję na „false” (fałsz).

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

Zagadnienia związane ze zgodnością pliku manifestu aplikacji na urządzenia mobilne i duże ekrany

Jak opisano w sekcji Funkcje PackageManagera dla aplikacji XR, aplikacje deklarują, że korzystają z funkcji, deklarując ją w elementach <uses-feature> w manifeście aplikacji. Niektóre funkcje, takie jak telefonia czy GPS, mogą nie być zgodne ze wszystkimi urządzeniami.

Nieobsługiwane funkcje

Sklep Google Play filtruje aplikacje dostępne do zainstalowania na urządzeniu, korzystając z tych deklaracji funkcji Androida.

Sprzęt do kamer

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

Łączność

android.hardware.ethernet

android.hardware.uwb

android.hardware.ipsec_tunnel_migration

Konfiguracja urządzenia

android.hardware.ram.low

Konfiguracja formatu

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

Urządzenie wejściowe

android.hardware.consumerir

android.software.input_methods

Lokalizacja

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

Konfiguracja zabezpieczeń i sprzęt

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

Czujniki

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

Konfiguracja oprogramowania

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

Połączenia telefoniczne

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

Rzeczywistość wirtualna (starsza wersja)

android.hardware.vr.headtracking

android.hardware.vr.high_performance

android.software.vr.mode

Widżety

android.software.app_widgets

Informacje o uprawnieniach w XR

Podobnie jak w przypadku aplikacji na urządzenia mobilne i inne formaty, niektóre funkcje oferowane przez aplikacje XR mogą wymagać oświadczenia uprawnień w pliku AndroidManifest aplikacji. W przypadku niebezpiecznych uprawnień aplikacja może prosić o uprawnienia w czasie działania. Więcej informacji znajdziesz w artykule Uprawnienia na Androidziesprawdzonych metodach dotyczących uprawnień.

Uprawnienia do funkcji XR

Aplikacje XR mogą używać tych uprawnień. Wszystkie uprawnienia opisane w tej sekcji są uważane za niebezpieczne, dlatego musisz je zadeklarować w pliku manifestu aplikacji iwymagać ich w czasie działania.

android.permission.EYE_TRACKING

Przypadki użycia wymagające tego uprawnienia

przedstawianie oczu i ich orientacji na potrzeby awatara;

Funkcje pakietu SDK Jetpack XR, które wymagają tego uprawnienia

nie dotyczy

Rozszerzenia OpenXR wymagające tego uprawnienia

XR_ANDROID_avatar_eyes

Funkcje Unity, które wymagają tego uprawnienia

Android XR: AR Face

android.permission.EYE_TRACKING_FINE

Przypadki użycia wymagające tego uprawnienia

Interakcje i dane dotyczące śledzenia wzroku

Funkcje pakietu SDK Jetpack XR, które wymagają tego uprawnienia

nie dotyczy

Rozszerzenia OpenXR wymagające tego uprawnienia

XR_EXT_eye_gaze_interaction

Funkcje Unity, które wymagają tego uprawnienia

Eye Gaze Interaction

android.permission.FACE_TRACKING

Przypadki użycia wymagające tego uprawnienia

Śledzenie i renderowanie wyrazów twarzy

Funkcje pakietu SDK Jetpack XR, które wymagają tego uprawnienia

nie dotyczy

Rozszerzenia OpenXR wymagające tego uprawnienia

XR_ANDROID_face_tracking

Funkcje Unity, które wymagają tego uprawnienia

XRFaceTrackingFeature

android.permission.HAND_TRACKING

Przypadki użycia wymagające tego uprawnienia

śledzenie pozycji stawów dłoni oraz prędkości kątowej i liniowej; korzystanie z reprezentowania dłoni użytkownika za pomocą siatki.

Funkcje pakietu SDK Jetpack XR, które wymagają tego uprawnienia

nie dotyczy

Rozszerzenia OpenXR wymagające tego uprawnienia

XR_ANDROID_hand_mesh

XR_EXT_hand_tracking

Funkcje Unity, które wymagają tego uprawnienia

XR Hands

XRHandMeshFeature

android.permission.SCENE_UNDERSTANDING

Przypadki użycia wymagające tego uprawnienia

oszacowanie światła; rzutowanie przezroczystości na powierzchnie siatki; wykonywanie rzutów promieni na elementy śledzenia w środowisku; śledzenie płaszczyzn; śledzenie obiektów; praca z głębią w celu testowania zasłonięcia i uderzenia; stałe punkty kotwiczenia.

Funkcje pakietu SDK Jetpack XR, które wymagają tego uprawnienia

Śledzenie samolotu

Testowanie pozycji wskaźnika

Trwałość kotwicy

Rozszerzenia OpenXR wymagające tego uprawnienia

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

Funkcje Unity, które wymagają tego uprawnienia

XRAnchorFeature

XRDepthTextureFeature

XRLightEstimationFeature

XRPassthroughFeature

XRTrackableFeature

XRObjectTrackingFeature

Zapewnienie jakości aplikacji na Androida XR

Aby zapewnić użytkownikom wygodę korzystania z aplikacji, zapoznaj się z wskazówkami dotyczącymi jakości aplikacji na Androida XR.

Tworzenie pakietu i rozpowszechnianie aplikacji na Androida XR

Android XR umożliwia korzystanie z różnych aplikacji i funkcji w goglach XR za pomocą Google Play. W przewodniku dotyczącym pakowania i rozpowszechniania aplikacji na Androida XR znajdziesz informacje o pierwszych krokach w Sklepie Play i Konsoli Play, publikowaniu ścieżek, przygotowywaniu pakietów aplikacji na Androida oraz ograniczeniach rozmiaru aplikacji.