XR_EXT_interaction_profile_battery_state_display

Stringa del nome

XR_EXT_interaction_profile_battery_state_display

Tipo di estensione

Estensione dell'istanza

Numero di estensione registrato

837

Revisione

1

Stato di ratifica

Ratificato

Dipendenze di estensione e versione

OpenXR 1.0

Data dell'ultima modifica

2025-10-21

Stato IP

Nessuna rivendicazione IP nota.

Collaboratori

John Kearney, Meta
Daniel Willmott, Valve
Denny Rönngren, Varjo
Jakob Bornecrantz, NVIDIA
Nathan Nuber, Valve
Lachlan Ford, Google
Nihav Jain, Google

Panoramica

XR_EXT_interaction_profile_battery_state_display fornisce alle applicazioni un meccanismo per eseguire query sul runtime per ottenere informazioni sullo stato della batteria dei dispositivi utilizzati con i profili di interazione. Queste informazioni sullo stato della batteria devono essere utilizzate solo a scopo di visualizzazione e il runtime deve assicurarsi che corrispondano a quelle utilizzate nelle interfacce utente di sistema integrate.

Nei casi in cui più dispositivi fisici forniscono input alle azioni associate a un percorso di primo livello, ad esempio i runtime che eseguono il rimapping per la personalizzazione o l'accessibilità dell'utente, questi runtime devono fare del loro meglio per presentare informazioni utili sulla batteria in un unico valore.

In particolare, non è previsto che queste informazioni vengano calibrate tra runtime o dispositivi e non devono essere utilizzate per generare avvisi o modificare in altro modo il comportamento dell'applicazione.

Eseguire query sullo stato della batteria

La struttura XrBatteryStateDisplayEXT è definita come segue:

typedef struct XrBatteryStateDisplayEXT {
    XrStructureType                       type;
    void*                                 next;
    XrBatteryStateDisplayStateFlagsEXT    stateFlags;
    float                                 batteryLevel;
} XrBatteryStateDisplayEXT;

Descrizioni dei membri

  • type è l'XrStructureType di questa struttura.
  • next è NULL o un puntatore alla struttura successiva in una catena di strutture.
  • stateFlags descrive la validità di batteryLevel con le maschere di bit definite in XrBatteryStateDisplayStateFlagBitsEXT
  • batteryLevel è il livello della batteria (da 0,0f a 1,0f) del dispositivo collegato dall'entità o dall'azione associata.

Per eseguire una query sul livello batteria, l'applicazione incatena una struttura XrBatteryStateDisplayEXT alla catena XrInteractionProfileState :: next quando chiama xrGetCurrentInteractionProfile .

Se xrGetCurrentInteractionProfile imposta XrInteractionProfileState :: interactionProfile su XR_NULL_PATH , il runtime non deve impostare il bit XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT in stateFlags .

XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT indica se batteryLevel contiene dati validi. L'applicazione non deve leggere batteryLevel se il bit XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT non è impostato in stateFlags .

Utilizzo valido (implicito)

Il membro XrBatteryStateDisplayEXT :: stateFlags è del seguente tipo e contiene un OR bit a bit di zero o più bit definiti in 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;

I bit di flag hanno i seguenti significati:

Descrizioni dei flag

  • XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT : indica la validità di XrBatteryStateDisplayEXT :: batteryLevel
  • XR_BATTERY_STATE_DISPLAY_STATE_CHARGING_BIT_EXT : indica che il dispositivo associato al profilo di interazione è in carica.
  • XR_BATTERY_STATE_DISPLAY_STATE_PLUGGED_IN_BIT_EXT : indica che il dispositivo associato al profilo di interazione è collegato a una fonte di alimentazione.
  • XR_BATTERY_STATE_DISPLAY_STATE_NO_BATTERY_BIT_EXT : indica che il dispositivo associato al profilo di interazione non ha una fonte di alimentazione a batteria.

Esempio

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

Nuove strutture

Nuovi enum

Nuove maschere di bit

Nuove costanti enum

  • XR_EXT_INTERACTION_PROFILE_BATTERY_STATE_DISPLAY_EXTENSION_NAME
  • XR_EXT_interaction_profile_battery_state_display_SPEC_VERSION
  • Estensione di XrStructureType :

    • XR_TYPE_BATTERY_STATE_DISPLAY_EXT

Problemi

  • L'applicazione può eseguire query sul livello della batteria visualizzato per un dispositivo montato sulla testa con questa estensione?

    • Risolto. Non direttamente . Questa estensione supporta solo la restituzione del livello batteria visualizzato per i percorsi /user di primo livello con i profili di interazione correnti. Se l'applicazione suggerisce associazioni per un profilo di interazione per il dispositivo montato sulla testa ( /user/head ) e se il runtime rende attivo questo profilo di interazione, il runtime può restituire il livello batteria per il percorso /user di primo livello.

Cronologia delle versioni

  • Revisione 1, 21/10/2025 (John Kearney)

    • Bozza iniziale.