Verificar a disponibilidade do dispositivo durante o tempo de execução para óculos com IA

Ao longo do dia, os óculos com IA de um usuário podem perder a conexão com o dispositivo host (como o smartphone) ou ficar temporariamente indisponíveis se forem retirados. Para considerar esses tipos de mudanças na disponibilidade do dispositivo, seu app pode usar a API XR Device Availability, que consolida os indicadores de disponibilidade do dispositivo nos valores Lifecycle.State padrão do Android. Use essa API para ajudar a gerenciar o roteamento de áudio, a ativação de hotword e saber quando esperar a entrada do usuário com base na disponibilidade dos óculos com IA.

Entender os estados do ciclo de vida

A tabela a seguir lista como os indicadores de disponibilidade do dispositivo são mapeados para os valores Lifecycle.State.

Estado do ciclo de vida

Status do dispositivo

Descrição

INITIALIZED

Criado

O objeto do ciclo de vida é criado, mas ainda não foi observado.

CREATED

Inativo

O serviço está conectado, mas o usuário não está usando o dispositivo.

STARTED

Ativo

O usuário está usando o dispositivo.

DESTROYED

Desconectado

O dispositivo está desconectado ou a conexão de serviço foi perdida.

Verificar e monitorar a disponibilidade do dispositivo

Para verificar e monitorar a disponibilidade de um dispositivo, use um contexto projetado com o estado do ciclo de vida para determinar como o app deve processar cada caso:

    val xrDevice = XrDevice.getCurrentDevice(projectedContext)

    xrDevice.getLifecycle().currentStateFlow
        .takeWhile { it != Lifecycle.State.DESTROYED }
        .collect { state ->
            when (state) {
                Lifecycle.State.STARTED -> { /* Device is ACTIVE (worn) */ }
                Lifecycle.State.CREATED -> { /* Device is INACTIVE (not worn) */ }
                else -> { /* Handle other states */ }
            }
        }
}

Pontos principais sobre o código

  • Verificar uma conexão: antes de acessar o ciclo de vida do dispositivo, chame ProjectedContext.isProjectedDeviceConnected para verificar se o dispositivo projetado está conectado ao dispositivo host.
  • Receber um ProjectedContext: chame ProjectedContext.createProjectedDeviceContext somente depois de verificar a conexão e transmita esse contexto para a instância XrDevice.
  • Processar a invalidação do contexto: um novo deviceId é gerado sempre que um dispositivo projetado se conecta. Quando o estado atinge DESTROYED, o ProjectedContext atual é inválido. Pare de usá-lo imediatamente e aguarde uma nova conexão.
  • Otimizar a bateria e os recursos: processe a funcionalidade do app normalmente com base no estado do ciclo de vida para preservar os recursos do sistema e reduzir o consumo de bateria. Por exemplo, pare de projetar conteúdo da interface nos óculos de IA quando o estado mudar para CREATED.