XR_EXT_interaction_profile_battery_state_display

Stringname

XR_EXT_interaction_profile_battery_state_display

Erweiterungstyp

Instanzerweiterung

Registrierte Erweiterungsnummer

837

Revision

1

Ratifizierungsstatus

Ratifiziert

Abhängigkeiten von Erweiterungen und Versionen

OpenXR 1.0

Datum der letzten Änderung

2025-10-21

IP-Status

Keine bekannten IP-Ansprüche.

Mitwirkende

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

Übersicht

XR_EXT_interaction_profile_battery_state_display bietet Anwendungen einen Mechanismus, um die Laufzeit nach Informationen zum Akkustand von Geräten zu fragen, die mit Interaktionsprofilen verwendet werden. Diese Informationen zum Akkustand sollten nur zu Anzeigezwecken verwendet werden. Die Laufzeit sollte dafür sorgen, dass diese Informationen mit den Informationen übereinstimmen, die in den integrierten Systembenutzeroberflächen verwendet werden.

Wenn mehrere physische Geräte Eingaben für die Aktionen liefern, die mit einem Pfad der obersten Ebene verknüpft sind, z. B. Laufzeiten, die eine Neuzuordnung für die Nutzeranpassung oder Barrierefreiheit durchführen, sollten diese Laufzeiten versuchen, nützliche Informationen zum Akkustand in einem einzigen Wert darzustellen.

Es wird nicht erwartet, dass diese Informationen zwischen Laufzeiten oder Geräten kalibriert werden. Sie sollten nicht verwendet werden, um Warnungen zu generieren oder das Verhalten der Anwendung anderweitig zu ändern.

Akkustand abfragen

Die Struktur XrBatteryStateDisplayEXT ist so definiert:

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

Mitgliederbeschreibungen

  • type ist der XrStructureType dieser Struktur.
  • next ist NULL oder ein Zeiger auf die nächste Struktur in einer Strukturkette.
  • stateFlags beschreibt die Gültigkeit von batteryLevel mit Bitmasken, die in XrBatteryStateDisplayStateFlagBitsEXT definiert sind.
  • batteryLevel ist der Akkustand (von 0,0f bis 1,0f) des Geräts, das mit der zugehörigen Entität oder Aktion verbunden ist.

Um den Akkustand abzufragen, verkettet die Anwendung eine XrBatteryStateDisplayEXT-Struktur mit der Kette XrInteractionProfileState :: next wenn xrGetCurrentInteractionProfile aufgerufen wird .

Wenn xrGetCurrentInteractionProfile XrInteractionProfileState :: interactionProfile auf XR_NULL_PATH setzt , darf die Laufzeit das Bit XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT in stateFlags nicht setzen .

XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT gibt an, ob batteryLevel gültige Daten enthält. Die Anwendung darf batteryLevel nicht lesen, wenn das Bit XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT in stateFlags nicht gesetzt ist .

Gültige Verwendung (implizit)

Das Mitglied XrBatteryStateDisplayEXT :: stateFlags hat den folgenden Typ und enthält eine bitweise OR-Verknüpfung von null oder mehr Bits, die in XrBatteryStateDisplayStateFlagBitsEXT definiert sind .

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;

Die Flag-Bits haben die folgende Bedeutung:

Flag-Beschreibungen

  • XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT – Gibt die Gültigkeit von XrBatteryStateDisplayEXT :: batteryLevel an.
  • XR_BATTERY_STATE_DISPLAY_STATE_CHARGING_BIT_EXT – Gibt an, dass das mit dem Interaktionsprofil verknüpfte Gerät geladen wird.
  • XR_BATTERY_STATE_DISPLAY_STATE_PLUGGED_IN_BIT_EXT – Gibt an, dass das mit dem Interaktionsprofil verknüpfte Gerät an eine Stromquelle angeschlossen ist.
  • XR_BATTERY_STATE_DISPLAY_STATE_NO_BATTERY_BIT_EXT – Gibt an, dass das mit dem Interaktionsprofil verknüpfte Gerät keine Akku-Stromquelle hat.

Beispiel

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

Neue Strukturen

Neue Enums

Neue Bitmasken

Neue Enum-Konstanten

  • XR_EXT_INTERACTION_PROFILE_BATTERY_STATE_DISPLAY_EXTENSION_NAME
  • XR_EXT_interaction_profile_battery_state_display_SPEC_VERSION
  • Erweitern von XrStructureType :

    • XR_TYPE_BATTERY_STATE_DISPLAY_EXT

Probleme

  • Kann die Anwendung mit dieser Erweiterung den Akkustand abfragen, der für ein am Kopf getragenes Gerät angezeigt wird?

    • Geklärt. Nicht direkt. Diese Erweiterung unterstützt nur die Rückgabe des Akkustands, der für /user-Pfade der obersten Ebene mit aktuellen Interaktionsprofilen angezeigt wird. Wenn die Anwendung Bindungen für ein Interaktionsprofil für das am Kopf getragene Gerät ( /user/head) vorschlägt und die Laufzeit dieses Interaktionsprofil aktiviert, kann die Laufzeit den Akkustand für diesen /user-Pfad der obersten Ebene zurückgeben.

Versionsverlauf

  • Revision 1, 21.10.2025 (John Kearney)

    • Erster Entwurf.