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
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 só 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éNULLou um ponteiro para a próxima estrutura em uma cadeia de estruturas.stateFlagsdescreve a validade debatteryLevelcom máscaras de bits definidas em XrBatteryStateDisplayStateFlagBitsEXTbatteryLevelé 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)
- A extensão
XR_EXT_interaction_profile_battery_state_displayprecisa ser ativada antes de usar XrBatteryStateDisplayEXT. -
typeprecisa serXR_TYPE_BATTERY_STATE_DISPLAY_EXT -
nextprecisa serNULLou um ponteiro válido para a próxima estrutura em uma cadeia de estruturas -
stateFlagsprecisa ser uma combinação válida de valores XrBatteryStateDisplayStateFlagBitsEXT -
stateFlagsnão pode ser0
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 ::batteryLevelXR_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
Extensão de XrInteractionProfileState :
Novos enums
Novas máscaras de bits
Novas constantes de enum
XR_EXT_INTERACTION_PROFILE_BATTERY_STATE_DISPLAY_EXTENSION_NAMEXR_EXT_interaction_profile_battery_state_display_SPEC_VERSIONExtensã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.