XR_EXT_interaction_profile_battery_state_display

名前文字列

XR_EXT_interaction_profile_battery_state_display

拡張機能の種類

インスタンス拡張機能

登録済み拡張機能番号

837

リビジョン

1

批准ステータス

批准済み

拡張機能とバージョンの依存関係

OpenXR 1.0

最終更新日

2025-10-21

IP ステータス

既知の IP クレームはありません。

寄与者

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

概要

XR_EXT_interaction_profile_battery_state_display は、アプリケーションがランタイムにクエリを実行して、インタラクション プロファイルで使用されるデバイスのバッテリー残量情報を取得するためのメカニズムを提供します。このバッテリー残量情報は表示目的でのみ使用する必要があり 、ランタイムは、この情報が組み込みのシステム ユーザー インターフェースで使用されている情報と一致するようにする必要があります

複数の物理デバイスが最上位パスに関連付けられたアクションに入力を提供する場合(ユーザーのカスタマイズやアクセシビリティのためにランタイムが再マッピングを行う場合など)、ランタイムは、有用なバッテリー情報を 1 つの値で表示するよう最善を尽くす必要があります

具体的には、この情報がランタイムやデバイス間で調整されることは想定されておらず、警告の生成やアプリケーションの動作の変更に使用すべきではありません

バッテリー残量のクエリ

XrBatteryStateDisplayEXT 構造体は次のように定義されます。

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

メンバーの説明

  • type は、この構造体の XrStructureType です。
  • next は、NULL または構造体チェーン内の次の構造体へのポインタです。
  • stateFlags は、batteryLevel の有効性を、XrBatteryStateDisplayStateFlagBitsEXT で定義されたビットマスクを使用して記述します。
  • batteryLevel は、関連付けられたエンティティまたはアクションによって接続されたデバイスのバッテリー残量(0.0f ~ 1.0f)です。

バッテリー残量をクエリするには、XrBatteryStateDisplayEXT 構造体を XrInteractionProfileState :: next チェーンに連結します。

xrGetCurrentInteractionProfileXrInteractionProfileState :: interactionProfileXR_NULL_PATH に設定する場合、ランタイムは stateFlagsXR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT ビットを設定してはなりません

XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT は、batteryLevel に有効なデータが含まれているかどうかを示します。stateFlagsXR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT ビットが設定されていない場合、アプリケーションは batteryLevel を読み取ってはなりません

有効な使用方法(暗黙的)

  • XrBatteryStateDisplayEXT を使用する前に、XR_EXT_interaction_profile_battery_state_display 拡張機能を有効にする必要があります
  • type にする必要があります XR_TYPE_BATTERY_STATE_DISPLAY_EXT
  • next は、NULL または構造体チェーン内の次の構造体への有効なポインタにする必要があります
  • stateFlags は、XrBatteryStateDisplayStateFlagBitsEXT 値の有効な組み合わせ**にする必要があります**
  • stateFlags 0 **にしないでください** 。

XrBatteryStateDisplayEXT :: stateFlags メンバーは次の型で、XrBatteryStateDisplayStateFlagBitsEXT で定義された 0 個以上のビットのビット単位の OR を含みます。

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;

フラグビットには次の意味があります。

フラグの説明

  • XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT - XrBatteryStateDisplayEXT :: batteryLevel の有効性を示します。
  • XR_BATTERY_STATE_DISPLAY_STATE_CHARGING_BIT_EXT - インタラクション プロファイルに関連付けられたデバイスが充電中であることを示します。
  • XR_BATTERY_STATE_DISPLAY_STATE_PLUGGED_IN_BIT_EXT - インタラクション プロファイルに関連付けられたデバイスが電源に接続されていることを示します。
  • XR_BATTERY_STATE_DISPLAY_STATE_NO_BATTERY_BIT_EXT - インタラクション プロファイルに関連付けられたデバイスにバッテリー電源がないことを示します。

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

新しい構造体

新しい列挙型

新しいビットマスク

新しい列挙型定数

  • XR_EXT_INTERACTION_PROFILE_BATTERY_STATE_DISPLAY_EXTENSION_NAME
  • XR_EXT_interaction_profile_battery_state_display_SPEC_VERSION
  • XrStructureType の拡張 :

    • XR_TYPE_BATTERY_STATE_DISPLAY_EXT

問題

  • この拡張機能を使用して、ヘッドマウント デバイスに表示されるバッテリー残量をクエリできますか?

    • 解決済み。直接的には統合されません 。この拡張機能は、現在のインタラクション プロファイルで最上位の /user パスに表示されるバッテリー残量の返送のみをサポートしています。アプリケーションがヘッドマウント デバイス( /user/head )のインタラクション プロファイルのバインディングを提案し、ランタイムがそのインタラクション プロファイルをアクティブにする場合、ランタイムはその最上位の /user パスのバッテリー残量を返すことができます。

変更履歴

  • リビジョン 1、2025-10-21(John Kearney)

    • 初版ドラフト。