XR_EXT_interaction_profile_battery_state_display
Name String
XR_EXT_interaction_profile_battery_state_display
Extension Type
Rozszerzenie instancji
Registered Extension Number
837
Revision
1
Ratification Status
Zatwierdzone
Extension and Version Dependencies
Last Modified Date
2025-10-21
IP Status
Brak znanych roszczeń dotyczących własności intelektualnej.
Contributors
John Kearney, Meta
Daniel Willmott, Valve
Denny Rönngren, Varjo
Jakob Bornecrantz, NVIDIA
Nathan Nuber, Valve
Lachlan Ford, Google
Nihav Jain, Google
Przegląd
Rozszerzenie XR_EXT_interaction_profile_battery_state_display umożliwia aplikacjom wysyłanie do środowiska wykonawczego zapytań o informacje o stanie baterii urządzeń używanych z profilami interakcji. Informacje o stanie baterii powinny być używane tylko do wyświetlania, a środowisko wykonawcze powinno dbać o to, aby te informacje były zgodne z informacjami używanymi w wbudowanych interfejsach systemowych.
W przypadkach, gdy wiele urządzeń fizycznych przekazuje dane wejściowe do działań powiązanych ze ścieżką najwyższego poziomu, np. gdy środowiska wykonawcze przeprowadzają ponowne mapowanie na potrzeby dostosowania przez użytkownika lub ułatwień dostępu, środowiska te powinny dołożyć wszelkich starań, aby przedstawić przydatne informacje o baterii w postaci pojedynczej wartości.
W szczególności nie oczekuje się, że te informacje będą kalibrowane między środowiskami wykonawczymi lub urządzeniami, i nie należy ich używać do generowania ostrzeżeń ani do modyfikowania zachowania aplikacji.
Wysyłanie zapytań o stan baterii
Struktura XrBatteryStateDisplayEXT jest zdefiniowana w ten sposób:
typedef struct XrBatteryStateDisplayEXT {
XrStructureType type;
void* next;
XrBatteryStateDisplayStateFlagsEXT stateFlags;
float batteryLevel;
} XrBatteryStateDisplayEXT;
Opisy elementów
typeto XrStructureType tej struktury.nexttoNULLlub wskaźnik do następnej struktury w łańcuchu struktur.stateFlagsopisuje ważnośćbatteryLevelza pomocą masek bitowych zdefiniowanych w XrBatteryStateDisplayStateFlagBitsEXTbatteryLevelto poziom naładowania baterii (od 0,0f do 1,0f) urządzenia połączonego z powiązanym elementem lub działaniem.
Aby wysłać zapytanie o poziom baterii, aplikacja łączy strukturę XrBatteryStateDisplayEXT z łańcuchem XrInteractionProfileState :: next podczas wywoływania xrGetCurrentInteractionProfile .
Jeśli xrGetCurrentInteractionProfile ustawi XrInteractionProfileState :: interactionProfile na XR_NULL_PATH , środowisko wykonawcze nie może ustawić bitu XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT w stateFlags .
XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT wskazuje, czy batteryLevel zawiera prawidłowe dane. Aplikacja nie może odczytywać batteryLevel, jeśli bit XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT nie jest ustawiony w stateFlags .
Prawidłowe użycie (niejawne)
- Przed użyciem XrBatteryStateDisplayEXT musisz włączyć rozszerzenie
XR_EXT_interaction_profile_battery_state_display. -
typemusi mieć wartośćXR_TYPE_BATTERY_STATE_DISPLAY_EXT -
nextmusi mieć wartośćNULLlub być prawidłowym wskaźnikiem do następnej struktury w łańcuchu struktur. -
stateFlagsmusi być prawidłową kombinacją wartości XrBatteryStateDisplayStateFlagBitsEXT. -
stateFlagsnie może mieć wartości0
Element XrBatteryStateDisplayEXT :: stateFlags jest typu podanego poniżej i zawiera bitowe OR zera lub większej liczby bitów zdefiniowanych w XrBatteryStateDisplayStateFlagBitsEXT .
typedef XrFlags64 XrBatteryStateDisplayStateFlagsEXT;
// Flag bits for XrBatteryStateDisplayStateFlagsEXT
static const XrBatteryStateDisplayStateFlagsEXT XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT = 0x00000001;
static const XrBatteryStateDisplayStateFlagsEXT XR_BATTERY_STATE_DISPLAY_STATE_CHARGING_BIT_EXT = 0x00000002;
static const XrBatteryStateDisplayStateFlagsEXT XR_BATTERY_STATE_DISPLAY_STATE_PLUGGED_IN_BIT_EXT = 0x00000004;
static const XrBatteryStateDisplayStateFlagsEXT XR_BATTERY_STATE_DISPLAY_STATE_NO_BATTERY_BIT_EXT = 0x00000008;
Bity flag mają te znaczenia:
Opisy flag
XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT– wskazuje ważność XrBatteryStateDisplayEXT ::batteryLevel.XR_BATTERY_STATE_DISPLAY_STATE_CHARGING_BIT_EXT– wskazuje, że urządzenie powiązane z profilem interakcji jest ładowane.XR_BATTERY_STATE_DISPLAY_STATE_PLUGGED_IN_BIT_EXT– wskazuje, że urządzenie powiązane z profilem interakcji jest podłączone do źródła zasilania.XR_BATTERY_STATE_DISPLAY_STATE_NO_BATTERY_BIT_EXT– wskazuje, że urządzenie powiązane z profilem interakcji nie ma baterii.
Przykład
// previously initialized
extern XrSession session;
extern XrPath topLevelUserPath;
XrBatteryStateDisplayEXT batteryStateDisplay{XR_TYPE_BATTERY_STATE_DISPLAY_EXT};
XrInteractionProfileState ipState{XR_TYPE_INTERACTION_PROFILE_STATE, &batteryStateDisplay};
CHK_XR(xrGetCurrentInteractionProfile(session, topLevelUserPath, &ipState));
if ((batteryStateDisplay.stateFlags & XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT) != 0) {
// use value of batteryStateDisplay.batteryLevel
}
Nowe struktury
Rozszerzanie XrInteractionProfileState :
Nowe wartości w polu enum
Nowe maski bitowe
Nowe stałe w polu enum
XR_EXT_INTERACTION_PROFILE_BATTERY_STATE_DISPLAY_EXTENSION_NAMEXR_EXT_interaction_profile_battery_state_display_SPEC_VERSIONRozszerzanie XrStructureType :
XR_TYPE_BATTERY_STATE_DISPLAY_EXT
Problemy
Czy za pomocą tego rozszerzenia aplikacja może wysyłać zapytania o poziom baterii wyświetlany na urządzeniu montowanym na głowie?
- Rozwiązane. Nie bezpośrednio. To rozszerzenie obsługuje tylko zwracanie poziomu naładowania baterii wyświetlanego w przypadku ścieżek /user najwyższego poziomu z bieżącymi profilami interakcji. Jeśli aplikacja sugeruje powiązania z profilem interakcji dla urządzenia montowanego na głowie ( /user/head), a środowisko wykonawcze aktywuje ten profil interakcji, może zwrócić poziom naładowania baterii dla tej ścieżki /user najwyższego poziomu.
Historia zmian
Wersja 1, 2025-10-21 (John Kearney)
- Pierwsza wersja robocza.