XR_EXT_interaction_profile_battery_state_display

String do nome

XR_EXT_interaction_profile_battery_state_display

Tipo de extensão

Extensão de instância

Número de extensão registrada

837

Revisão

1

Status de ratificação

Ratificado

Dependências de extensão e versão

OpenXR 1.0

Data da última modificação

2025-10-21

Status de IP

Nenhuma reivindicação de IP conhecida.

Colaboradores

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

Visão geral

XR_EXT_interaction_profile_battery_state_display oferece um mecanismo para que os aplicativos consultem o ambiente de execução para informações sobre o estado da bateria de dispositivos usados com perfis de interação. Essas informações podem ser usadas para fins de exibição, e o ambiente de execução precisa garantir que elas correspondam ao que é usado nas interfaces de usuário do sistema integradas.

Nos casos em que vários dispositivos físicos fornecem entrada para as ações associadas a um caminho de nível superior, como ambientes de execução que realizam o remapeamento para personalização ou acessibilidade do usuário, esses ambientes precisam fazer o possível para apresentar informações úteis sobre a bateria em um único valor.

Especificamente, não é esperado que essas informações sejam calibradas entre ambientes de execução ou dispositivos e não podem ser usadas para gerar avisos ou modificar o comportamento do aplicativo.

Como consultar o estado da bateria

A estrutura XrBatteryStateDisplayEXT é definida como:

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

Descrições de membros

  • type é o XrStructureType dessa estrutura.
  • next é NULL ou um ponteiro para a próxima estrutura em uma cadeia de estruturas.
  • stateFlags descreve a validade de batteryLevel com máscaras de bits definidas em XrBatteryStateDisplayStateFlagBitsEXT
  • batteryLevel é o nível da bateria (de 0,0f a 1,0f) do dispositivo conectado pela entidade ou ação associada.

Para consultar o nível de bateria, o aplicativo encadeia uma estrutura XrBatteryStateDisplayEXT à cadeia XrInteractionProfileState :: next ao chamar xrGetCurrentInteractionProfile .

Se xrGetCurrentInteractionProfile definir XrInteractionProfileState :: interactionProfile como XR_NULL_PATH , o ambiente de execução não poderá definir o bit XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT em stateFlags .

XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT indica se o batteryLevel contém dados válidos. O aplicativo não pode ler o batteryLevel se o bit XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT não estiver definido em stateFlags .

Uso válido (implícito)

O membro XrBatteryStateDisplayEXT :: stateFlags é do tipo a seguir e contém um OR bit a bit de zero ou mais dos bits definidos em 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;

Os bits de flag têm os seguintes significados:

Descrições de flags

  • XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT — Indica a validade de XrBatteryStateDisplayEXT :: batteryLevel
  • XR_BATTERY_STATE_DISPLAY_STATE_CHARGING_BIT_EXT — Indica que o dispositivo associado ao perfil de interação está carregando.
  • XR_BATTERY_STATE_DISPLAY_STATE_PLUGGED_IN_BIT_EXT — Indica que o dispositivo associado ao perfil de interação está conectado a uma fonte de energia.
  • XR_BATTERY_STATE_DISPLAY_STATE_NO_BATTERY_BIT_EXT — Indica que o dispositivo associado ao perfil de interação não tem uma fonte de energia da bateria.

Exemplo

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

Novas estruturas

Novos enums

Novas máscaras de bits

Novas constantes de enum

  • XR_EXT_INTERACTION_PROFILE_BATTERY_STATE_DISPLAY_EXTENSION_NAME
  • XR_EXT_interaction_profile_battery_state_display_SPEC_VERSION
  • Extensão de XrStructureType :

    • XR_TYPE_BATTERY_STATE_DISPLAY_EXT

Problemas

  • O aplicativo pode consultar o nível de bateria exibido para um dispositivo montado na cabeça com essa extensão?

    • Resolvido. Não diretamente . Essa extensão só oferece suporte ao retorno do nível da bateria exibido para caminhos /user de nível superior com perfis de interação atuais. Se o aplicativo sugerir vinculações para um perfil de interação para o dispositivo montado na cabeça ( /user/head) e se o ambiente de execução ativar esse perfil de interação, ele poderá retornar o nível da bateria para esse caminho /user de nível superior.

Histórico de versões

  • Revisão 1, 21/10/2025 (John Kearney)

    • Rascunho inicial.