XR_EXT_interaction_profile_battery_state_display

Name String

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 は、インタラクション プロファイルで使用されるデバイスのバッテリー状態情報をアプリがランタイムにクエリするためのメカニズムを提供します。このバッテリー状態情報すべき表示目的および実行時のみに使用されるすべきこの情報が、システムに組み込まれているユーザーインターフェースで使用されている情報と一致していることを確認してください。

複数の実機が、ユーザーのカスタマイズやユーザー補助のために再マッピングを実行するランタイムなど、最上位パスに関連付けられたアクションに入力を提供する場合、それらのランタイムは、有用なバッテリー情報を単一の値で提供するよう最善を尽くすべきです。

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

バッテリーの状態をクエリする

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

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

メンバーの説明

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

バッテリー残量をクエリするには、アプリは xrGetCurrentInteractionProfile を呼び出すときに、XrBatteryStateDisplayEXT 構造体を XrInteractionProfileState :: next チェーンにチェーンします。

xrGetCurrentInteractionProfile が XrInteractionProfileState :: interactionProfile を XR_NULL_PATH に設定する場合、ランタイムは stateFlags に XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT ビットを設定してはなりません。

XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT は、batteryLevel に有効なデータが含まれているかどうかを示します。stateFlags で XR_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)

    • 初版ドラフト。