Streaming de aplicativos complementares

No Android 13, o recurso de streaming de aplicativos permite que os telefones transmitam seus aplicativos para dispositivos conectados e permite que esses dispositivos interajam com os aplicativos. Uma nova função COMPANION_DEVICE_APP_STREAMING permite que um aplicativo crie e gerencie proxies para dispositivos remotos conectados para transmitir aplicativos do dispositivo local para o dispositivo remoto. O aplicativo que detém a função COMPANION_DEVICE_APP_STREAMING pode obter permissões para criar uma exibição virtual, iniciar um aplicativo nele e, em seguida, transmitir um vídeo do aplicativo iniciado para outro dispositivo. O aplicativo detentor de função também pode injetar eventos de entrada e microfone recebidos de um dispositivo remoto de volta no dispositivo local, como se esse dispositivo estivesse conectado como um periférico.

Arquitetura

A partir do Android 13, o novo Virtual Device Manager e o Companion Device Manager (CDM) formam os principais blocos de construção para oferecer suporte ao streaming de aplicativos e à interação com dispositivos remotos conectados.

Gerenciador de dispositivos virtuais

O streaming de aplicativos funciona aproveitando as vantagens dos displays virtuais . O Virtual Device Manager cria uma tela virtual separada da tela primária visível. Quando o usuário consente em iniciar o streaming de um aplicativo, o aplicativo é iniciado ou transferido para o display virtual. O conteúdo do display virtual é transferido em um fluxo de vídeo para o dispositivo conectado a ser exibido.

O Virtual Device Manager inclui APIs que permitem a criação, registro e gerenciamento de instâncias VirtualDevice .

Uma instância VirtualDevice é um proxy para o dispositivo conectado e seus recursos. Uma instância VirtualDevice permite que um dispositivo conectado receba, exiba e interaja com um fluxo de aplicativo de entrada, fazendo o seguinte:

  • Criação de uma instância VirtualDisplay destinada a ser exibida na tela de um dispositivo conectado.
  • Injetar um fluxo de áudio remoto, como do microfone do dispositivo conectado, no dispositivo local para reprodução.
  • Injetar eventos de entrada remota, como do teclado do dispositivo conectado, no dispositivo local para reprodução.

Gerenciador de dispositivos complementar

O CDM gerencia o estado de conectividade e impõe os requisitos de função que devem ser atendidos para permitir o streaming de aplicativos.

A figura a seguir ilustra as interações entre o dispositivo local e remoto durante o streaming do aplicativo:

app-streaming-interaction

Figura 1. Interações entre dispositivos locais e remotos durante streaming de aplicativos

Implementação da função de streaming do aplicativo complementar

Os OEMs podem implementar um aplicativo com a função COMPANION_DEVICE_APP_STREAMING para permitir uma experiência avançada e segura entre dispositivos em seus dispositivos.

Para criar um dispositivo virtual para ativar o streaming de aplicativos, um aplicativo deve ser detentor da função COMPANION_DEVICE_APP_STREAMING . Quando a função é concedida, o aplicativo recebe a permissão CREATE_VIRTUAL_DEVICE , que permite ao aplicativo criar um dispositivo virtual. Espera-se que os detentores de funções implementem o streaming de aplicativos criando uma instância VirtualDevice que atue como proxy para um dispositivo conectado. A classe VirtualDevice fornece métodos que permitem a extração de uma superfície composta de um display virtual, adequada para streaming para outro dispositivo. A classe VirtualDevice também fornece APIs para injetar eventos de entrada que ocorrem em um dispositivo remoto no dispositivo local, permitindo que um aplicativo em execução em um dispositivo local pareça estar sendo executado nativamente em um dispositivo remoto.

Siga estas etapas para implementar a função de streaming do aplicativo complementar:

  1. Crie um aplicativo que solicite a permissão REQUEST_COMPANION_PROFILE_APP_STREAMING no manifesto.

  2. Solicite ao usuário que conceda permissão ao aplicativo para realizar streaming de aplicativos.

  3. Crie uma instância CDM AssociationRequest para solicitar uma função COMPANION_DEVICE_APP_STREAMING . O aplicativo recebe a permissão CREATE_VIRTUAL_DEVICE quando a função é concedida.

  4. Chame VirtualDeviceManager#create() para criar uma instância VirtualDevice . Com uma instância VirtualDevice , o aplicativo pode criar e gerenciar exibições e entradas virtuais.

  5. Inicie a intenção pendente da notificação no display virtual e crie uma captura de vídeo desse display.

  6. Crie uma conexão com o dispositivo conectado e transmita a exibição virtual para o dispositivo conectado.

  7. Injete eventos de entrada de volta do dispositivo conectado no dispositivo local por meio das APIs VirtualDevice .

  8. Quando o usuário fechar o aplicativo de streaming no dispositivo remoto, encerre o stream e desative a instância do VirtualDevice . Neste ponto, o aplicativo de streaming anterior é executado em segundo plano no dispositivo local e a conexão é encerrada.

  9. Se necessário, aguarde mais sinais do dispositivo conectado para reiniciar o streaming do aplicativo.

O aplicativo é responsável por conectar-se ao dispositivo remoto, relatar o estado de conectividade ao CDM e aplicar os requisitos de segurança descritos no CDD .

Requisitos do titular da função COMPANION_DEVICE_APP_STREAMING

O CDM concede a função COMPANION_DEVICE_APP_STREAMING quando o usuário associa um aplicativo de streaming de aplicativo a um dispositivo. Essa função está associada a um perfil de dispositivo, portanto, há algum controle sobre quais aplicativos podem ser adicionados à Play Store que correspondem a esse perfil. Consulte Funções do Android para obter uma lista dos requisitos da função COMPANION_DEVICE_APP_STREAMING . Entre em contato com seu ponto de contato do Google para obter mais informações.

Capacidades do titular da função COMPANION_DEVICE_APP_STREAMING

Para executar o streaming de aplicativos, a função COMPANION_DEVICE_APP_STREAMING pressupõe que o aplicativo detentor da função tenha os seguintes recursos e comportamentos:

  • Crie e gerencie conexões com outros dispositivos.
  • Crie e gerencie monitores virtuais confiáveis, incluindo monitores desbloqueados, da seguinte forma:
    • Inicie atividades no display virtual.
    • Injete eventos que acontecem em um aplicativo transmitido em um dispositivo conectado de volta ao dispositivo local, como reproduzir um evento de toque no tablet nas mesmas coordenadas do telefone.
    • Capture dados de áudio do aplicativo transmitido.
    • Substitua o fluxo do microfone do dispositivo local pelo fluxo do microfone de um dispositivo conectado enquanto um aplicativo transmitido estiver usando o microfone.
    • Substitua o stream da câmera do dispositivo local pelo stream da câmera de um dispositivo conectado enquanto um aplicativo transmitido estiver usando a câmera.
  • Gerencie e transmita notificações do dispositivo local para o dispositivo conectado e execute ações nas notificações.
  • Transmita metadados do dispositivo local, como a lista de aplicativos disponíveis no dispositivo local, para o dispositivo conectado.
  • Solicite a verificação do dispositivo.