Dispositivos dobráveis e câmeras

Observação:esta página se refere ao pacote Camera2. A menos que o app exija recursos específicos de baixo nível do Camera2, recomendamos o uso do CameraX. CameraX e Camera2 oferecem suporte ao Android 5.0 (nível 21 da API) e versões mais recentes.

Os desenvolvedores de câmeras podem encontrar desafios únicos ao trabalhar em apps de câmera que são executados em dispositivos dobráveis. Ao contrário dos smartphones, em que várias suposições relacionadas à orientação da tela, da câmera e da face são geralmente válidas, os dispositivos dobráveis podem ter diversos formatos, layouts de tela e combinações de câmera.

Os smartphones geralmente têm câmeras com orientação retrato que correspondem à tela. No entanto, isso pode não ser verdade para alguns estados dobráveis. Uma tela desdobrada pode ter um sensor com orientação retrato e outro com orientação paisagem.

Se o app da câmera usar um SurfaceTexture ou um pipeline de renderização personalizado, observe a orientação do sensor da câmera.

Isso garante que o conteúdo renderizado esteja sempre na posição correta e que os pixels permaneçam quadrados, evitando alongamentos nas direções horizontal ou vertical.

Este guia fornece informações sobre o que os desenvolvedores da Camera2 precisam considerar e as etapas para ajustar a renderização da visualização da câmera para diferentes estados de dispositivos dobráveis.

Como as mudanças de estado do dispositivo afetam as câmeras

Os dispositivos dobráveis podem incluir:

  • Duas ou mais telas físicas
  • Vários dispositivos de câmera física

Esses dispositivos podem ficar ativos dependendo do estado deles. Para simplificar o processamento do estado do dispositivo, alguns dispositivos implementam uma câmera lógica que consiste em dois ou mais sensores físicos.

Se os desenvolvedores abrirem e ativarem o streaming de visualização em um dispositivo de câmera lógico, a câmera alternará automaticamente entre dispositivos físicos em resposta a estados de dobramento específicos.

Por exemplo, considere um dispositivo dobrável com duas telas:

  • Uma tela de retrato normal no estado dobrado com uma câmera frontal "externa" física na orientação retrato.
  • Uma tela dobrável ativada no estado aberto com uma câmera frontal física "interna" com orientação paisagem em relação à tela aberta.

Quando o usuário dobra ou desdobra o dispositivo enquanto um aplicativo transmite dados da câmera lógica frontal, a implementação do dispositivo pode alternar entre os sensores físicos interno e externo em resposta a cada mudança de estado do dispositivo.

A troca de tela pode exigir que o aplicativo ajuste a interface.

Além dos ajustes da interface, os desenvolvedores podem precisar ajustar a renderização da visualização da câmera em relação à câmera física ativa.

Interruptores físicos do dispositivo da câmera

A interface do dispositivo de câmera lógica fornece as APIs necessárias para processar as trocas de câmera física. Os desenvolvedores precisam monitorar o valor do ID físico ativo.

Em dispositivos dobráveis, o resultado da captura de ID físico ativo pode mudar em resposta a diferentes mudanças de estado, como dobrar e desdobrar.

Nesses casos, os desenvolvedores precisam usar o ID físico ativo atual e verificar as características da câmera correspondentes.

As duas características mais importantes da câmera que podem mudar e afetar a renderização da visualização são a orientação do sensor e a direção da lente.

Se o pipeline de renderização de visualização do seu aplicativo depender de parâmetros de câmera estáticos para calcular a matriz de transformação final, transmita os valores atuais e atualize as transformações gráficas.

Para entender melhor os pipelines de visualização da câmera e como as transformações são calculadas, consulte o guia de visualização da câmera.

Outras suposições inválidas

Não é recomendável armazenar em cache os valores das características da câmera.

Não é possível presumir que as características da câmera vão permanecer constantes, já que elas podem mudar quando o dispositivo é dobrado ou desdobrado. Por esse motivo, não armazene nem reutilize as características da câmera. Em vez disso, verifique as características da câmera sempre que possível.

Considere o caso em que um aplicativo de câmera é iniciado na tela externa frontal e armazena em cache as características atuais da câmera frontal e traseira. Se o aplicativo for reiniciado na tela interna, o sensor físico frontal ativo poderá ter uma orientação diferente, potencialmente desencadeando efeitos colaterais indesejados de renderização de visualização.