Sprawdzanie możliwości dźwięku przestrzennego

Obsługiwane urządzenia z XR
Te wskazówki pomogą Ci tworzyć aplikacje na te typy urządzeń z XR.
Gogle XR
Przewodowe okulary XR

Możliwości przestrzenne mogą się różnić w zależności od urządzenia i zmieniać się w miarę interakcji użytkowników z Twoją aplikacją lub systemem. Mogą być też zmieniane przez samą aplikację, np. podczas przechodzenia do przestrzeni domowej lub pełnej. Aby uniknąć problemów, aplikacja musi sprawdzać możliwości przestrzenne, aby określić, które interfejsy API są obsługiwane w bieżącym środowisku.

Sprawdzanie możliwości przestrzennych za pomocą Jetpack Compose for XR

Jetpack Compose for XR tworzy lokalną kompozycję do sprawdzania możliwości przestrzennych. Użyj jej, aby sprawdzić, czy włączone są przestrzenny interfejs, dźwięk przestrzenny, środowiska, tryb passthrough lub treści 3D.

Za pomocą LocalSpatialCapabilities.current możesz sprawdzić, czy obecnie dostępne są te możliwości przestrzenne:

Poniższy przykład pokazuje, jak sprawdzić, czy włączony jest przestrzenny interfejs:

if (LocalSpatialCapabilities.current.isSpatialUiEnabled) {
    Subspace {
        SpatialPanel(
            modifier = SubspaceModifier
                .width(1488.dp)
                .fillMaxHeight()
        ) {
            AppContent()
        }
    }
} else {
    AppContent()
}

Sprawdzanie możliwości przestrzennych za pomocą SceneCore

Gdy używasz biblioteki SceneCore, musisz utworzyć sesję. Po utworzeniu sesji użyj spatialCapabilities z scene sesji, aby sprawdzić, które możliwości przestrzenne są obecnie dostępne.

  • SPATIAL_3D_CONTENT: aktywność może tworzyć treści 3D.
  • APP_ENVIRONMENT: aktywność może ustawić własne środowisko.
  • EMBED_ACTIVITY: aktywność może przestrzennie osadzić inną aktywność.
  • PASSTHROUGH_CONTROL: aktywność może włączać i wyłączać tryb passthrough.
  • SPATIAL_AUDIO: aktywność może używać dźwięku przestrzennego.
  • SPATIAL_UI: aktywność może się przestrzennie dostosować (np. dodać panel przestrzenny).

Możesz też zasubskrybować wywołanie zwrotne, addSpatialCapabilitiesChangedListener które powiadomi Cię o zmianie możliwości przestrzennych.

// Example 1: check if enabling passthrough mode is allowed
if (xrSession.scene.spatialCapabilities.contains(
        SpatialCapability.PASSTHROUGH_CONTROL
    )
) {
    xrSession.scene.spatialEnvironment.preferredPassthroughOpacity = 1f
}
// Example 2: multiple capability flags can be checked simultaneously:
if (xrSession.scene.spatialCapabilities.contains(SpatialCapability.PASSTHROUGH_CONTROL) &&
    xrSession.scene.spatialCapabilities.contains(SpatialCapability.SPATIAL_3D_CONTENT)
) {
    // ...
}

Sprawdzanie możliwości wyświetlania urządzenia za pomocą trybu mieszania

Na Androidzie XR gogle XR i przewodowe okulary XR mają różne możliwości sprzętowe, zwłaszcza jeśli chodzi o rodzaj wyświetlacza. Może być konieczne dostosowanie kolorów interfejsu aplikacji i renderowanych obiektów, aby zmaksymalizować widoczność, na którą może wpływać rodzaj wyświetlacza i preferowany tryb mieszania używany przez urządzenie. Interfejs API DisplayBlendMode udostępnia możliwość mieszania wyświetlacza urządzenia na potrzeby renderowania. Użyj tego interfejsu API, aby określić, jak wirtualne treści są dodawane do świata rzeczywistego.

Oto niektóre typy trybów mieszania, o których warto pamiętać:

  • ADDITIVE: wirtualne treści są dodawane do świata rzeczywistego przez dodanie wartości pikseli dla każdego z komponentów: czerwonego, zielonego i niebieskiego. Kanał alfa jest ignorowany, a czarne piksele są przezroczyste.
  • ALPHA_BLEND: wirtualne treści są dodawane do świata rzeczywistego przez mieszanie alfa wartości pikseli na podstawie komponentu alfa.
  • NO_DISPLAY: mieszanie nie jest obsługiwane na urządzeniu.

Aby sprawdzić, jakiego typu tryb mieszania jest używany i w razie potrzeby wprowadzić zmiany, użyj XrDevice.getCurrentDevice(session).getPreferredDisplayBlendMode() z biblioteki Jetpack XR Runtime.

Zobacz też