XR_EXT_interaction_profile_battery_state_display

Chaîne de nom

XR_EXT_interaction_profile_battery_state_display

Type d'extension

Extension d'instance

Numéro d'extension enregistré

837

Révision

1

État de ratification

Ratifié

Dépendances d'extension et de version

OpenXR 1.0

Date de dernière modification

2025-10-21

État de la propriété intellectuelle

Aucune revendication de propriété intellectuelle connue.

Participants

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

Présentation

XR_EXT_interaction_profile_battery_state_display fournit aux applications un mécanisme permettant d'interroger l'environnement d'exécution pour obtenir des informations sur l'état de la batterie des appareils utilisés avec les profils d'interaction. Ces informations sur l'état de la batterie ne doivent être utilisées qu'à des fins d'affichage, et l'environnement d'exécution doit s'assurer qu'elles correspondent à celles utilisées dans les interfaces utilisateur système intégrées.

Dans les cas où plusieurs appareils physiques fournissent des entrées aux actions associées à un chemin de premier niveau, par exemple lorsque les environnements d'exécution effectuent un remappage pour la personnalisation ou l'accessibilité par l'utilisateur, ils doivent faire de leur mieux pour présenter des informations utiles sur la batterie dans une seule valeur.

Plus précisément, il n'est pas prévu que ces informations soient calibrées entre les environnements d'exécution ou les appareils, et elles ne doivent pas être utilisées pour générer des avertissements ni modifier le comportement de l'application.

Interroger l'état de la batterie

La structure XrBatteryStateDisplayEXT est définie comme suit :

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

Descriptions des membres

  • type correspond au XrStructureType de cette structure.
  • next est NULL ou un pointeur vers la structure suivante dans une chaîne de structures.
  • stateFlags décrit la validité de batteryLevel avec des masques de bits définis dans XrBatteryStateDisplayStateFlagBitsEXT
  • batteryLevel correspond au niveau de la batterie (de 0,0f à 1,0f) de l'appareil connecté par l'entité ou l'action associée.

Pour interroger le niveau de batterie, l'application enchaîne une structure XrBatteryStateDisplayEXT à la chaîne XrInteractionProfileState :: next lorsqu’elle appelle xrGetCurrentInteractionProfile .

Si xrGetCurrentInteractionProfile définit XrInteractionProfileState :: interactionProfile sur XR_NULL_PATH , l'environnement d'exécution ne doit pas définir le bit XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT dans stateFlags .

XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT indique si batteryLevel contient des données valides. L'application ne doit pas lire batteryLevel si le bit XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT n'est pas défini dans stateFlags .

Utilisation valide (implicite)

Le membre XrBatteryStateDisplayEXT :: stateFlags est du type suivant et contient un OR bit à bit de zéro ou plusieurs bits définis dans XrBatteryStateStateFlagBitsEXT .

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;

Les bits d'indicateur ont les significations suivantes :

Descriptions des indicateurs

  • XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT : indique la validité de XrBatteryStateDisplayEXT :: batteryLevel.
  • XR_BATTERY_STATE_DISPLAY_STATE_CHARGING_BIT_EXT : indique que l'appareil associé au profil d'interaction est en charge.
  • XR_BATTERY_STATE_DISPLAY_STATE_PLUGGED_IN_BIT_EXT : indique que l'appareil associé au profil d'interaction est branché à une source d'alimentation.
  • XR_BATTERY_STATE_DISPLAY_STATE_NO_BATTERY_BIT_EXT : indique que l'appareil associé au profil d'interaction n'a pas de source d'alimentation par batterie.

Exemple

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

Nouvelles structures

Nouvelles énumérations

Nouveaux masques de bits

Nouvelles constantes d'énumération

  • XR_EXT_INTERACTION_PROFILE_BATTERY_STATE_DISPLAY_EXTENSION_NAME
  • XR_EXT_interaction_profile_battery_state_display_SPEC_VERSION
  • Extension de XrStructureType :

    • XR_TYPE_BATTERY_STATE_DISPLAY_EXT

Problèmes

  • L'application peut-elle interroger le niveau de batterie affiché pour un appareil monté sur la tête avec cette extension ?

    • Résolu. Pas directement . Cette extension ne permet de renvoyer le niveau de batterie affiché que pour les chemins /user de premier niveau avec les profils d'interaction actuels. Si l'application suggère des liaisons pour un profil d'interaction pour l'appareil monté sur la tête ( /user/head ) et que l'environnement d'exécution active ce profil d'interaction, il peut renvoyer le niveau de batterie pour ce chemin /user de premier niveau.

Historique des versions

  • Révision 1, 21/10/2025 (John Kearney)

    • Suggestion initiale.