O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

CameraX

O CameraX é um complemento do Android Jetpack que facilita a adição de recursos da câmera ao seu app. A biblioteca fornece uma série de correções de compatibilidade e soluções alternativas para ajudar a tornar a experiência do desenvolvedor consistente em vários dispositivos.

Esta tabela lista todos os artefatos no grupo androidx.camera.

Artefato Versão estável atual Próximo candidato a lançamento Versão Beta Versão Alfa
camera-camera2 - - 1.0.0-beta08 -
camera-core - - 1.0.0-beta08 -
camera-extensions - - - 1.0.0-alpha15
camera-lifecycle - - 1.0.0-beta08 -
camera-view - - - 1.0.0-alpha15
Última atualização desta biblioteca: 19 de agosto de 2020

Teste de dispositivo

O CameraX é testado em vários dispositivos no nosso laboratório. Para ver uma lista dos dispositivos no laboratório atualmente, consulte Dispositivos do CameraX testados no laboratório.

Declarar dependências

Para adicionar uma dependência ao CameraX, é preciso adicionar o repositório Maven do Google ao projeto. Leia Repositório Maven do Google para ver mais informações.

Adicione as dependências dos artefatos necessários no arquivo build.gradle para seu app ou módulo:

dependencies {
  // CameraX core library using the camera2 implementation
  def camerax_version = "1.0.0-beta08"
  // The following line is optional, as the core library is included indirectly by camera-camera2
  implementation "androidx.camera:camera-core:${camerax_version}"
  implementation "androidx.camera:camera-camera2:${camerax_version}"
  // If you want to additionally use the CameraX Lifecycle library
  implementation "androidx.camera:camera-lifecycle:${camerax_version}"
  // If you want to additionally use the CameraX View class
  implementation "androidx.camera:camera-view:1.0.0-alpha15"
  // If you want to additionally use the CameraX Extensions library
  implementation "androidx.camera:camera-extensions:1.0.0-alpha15"
}

Feedback

Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas existentes nesta biblioteca antes de criar um novo. Adicione seu voto a um problema existente clicando no botão de estrela.

Criar novo problema (link em inglês)

Consulte a documentação do Issue Tracker para saber mais.

Camera-Camera2 e Camera-Core versão 1.0.0

Camera-Camera2 versão 1.0.0-beta08

19 de agosto de 2020

androidx.camera:camera-camera2:1.0.0-beta08 é lançado. A versão 1.0.0-beta08 contém essas confirmações.

Correções de bugs

  • bindToLifecycle foi otimizado para ser executado rapidamente na linha de execução principal (I1d57e).
  • DisplayOrientedMeteringPointFactory usa uma instância de CameraInfo, em vez de CameraSelector, para que haja um mapeamento direto para o qual Camera gerará pontos. Todas as classes que usam DisplayOrientedMeteringPointFactory também aceitam uma instância de CameraInfo em vez de CameraSelector (I400c1).
  • Foi corrigido o problema de agrupamento do tamanho da proporção de resolução automática, em que um tamanho de 16:9 mod16 (864x480) é selecionado quando a configuração de resolução de destino é 2016x1080 e há outro tamanho de 1920x1080 16:9 compatível (I53167, b/159363774).
  • Correção do problema de CameraControl em que ele não funciona durante uma disputa (I2279f, b/152333890, b/160714166).

Camera-Core versão 1.0.0-beta08

19 de agosto de 2020

androidx.camera:camera-core:1.0.0-beta08 é lançado. A versão 1.0.0-beta08 contém essas confirmações.

Mudanças na API

  • DisplayOrientedMeteringPointFactory usa uma instância de CameraInfo, em vez de CameraSelector, para que haja um mapeamento direto para o qual Camera gerará pontos. Todas as classes que usam DisplayOrientedMeteringPointFactory também aceitam uma instância de CameraInfo em vez de CameraSelector (I400c1).

Correções de bugs

  • Para captura de imagem, substitua a sinalização de virar para a horizontal nos metadados com base na direção da câmera (I28499).
  • A inicialização não deve mais falhar ao usar um Context que não retorna um objeto da Application de Context.getApplicationContext() (I3d3c9, b/160817073).

Camera-Camera2 versão 1.0.0-beta07

22 de julho de 2020

Lançamento do androidx.camera:camera-camera2:1.0.0-beta07. A versão 1.0.0-beta07 contém essas confirmações.

Correções de bugs

  • Corrigido o problema em que a visualização fica esticada em dispositivos legados do Android 5.0 (I0c03a).
  • Alguns tamanhos compatíveis com JPEG foram excluídos porque causam um problema de WYSIWYG em alguns dispositivos (Ib5128).

Camera-Core versão 1.0.0-beta07

22 de julho de 2020

Lançamento do androidx.camera:camera-core:1.0.0-beta07. A versão 1.0.0-beta07 contém essas confirmações.

Mudanças na API

  • Os estilos fit FIT_CENTER, FIT_START e FIT_END foram mesclados com FIT. FIT significa que o retângulo cortado retornado terá o tamanho máximo possível do sensor (Ia73c3).
  • A visualização do retângulo cortado é configurada pela janela de visualização. Somente a área abrangida pelo corte deve ficar visível para os usuários finais (I142a4).

Correções de bugs

  • Corrigido o problema em que a visualização fica esticada em dispositivos legados do Android 5.0 (I0c03a).
  • Corrigido o problema de exceção ConcurrentModificationException ao desvincular casos de uso (I371c0).

Camera-Camera2 versão 1.0.0-beta06

24 de junho de 2020

androidx.camera:camera-camera2:1.0.0-beta06 é lançado. A versão 1.0.0-beta06 contém estas confirmações (link em inglês).

Mudanças na API

  • Adição de interfaces experimentais para filtrar câmeras por ID e características da câmera (I28f61, link em inglês).

Correções de bugs

  • Correção do problema em que startFocusAndMetering falha ao se concentrar no Samsung Galaxy S7 (If3be7, b/159039233, links em inglês).
  • Correção do problema em que não era possível fechar a câmera depois de sair do app (I7a7b3, link em inglês).
  • Correção da visualização repetida da troca de câmera ao usar a implementação do SurfaceView (I920ce, link em inglês).
  • CameraControl#startFocusAndMetering falhará se nenhum dos MeteringPoint especificados puder gerar retângulos de medição válidos (Id53ce, link em inglês).

Camera-Core versão 1.0.0-beta06

24 de junho de 2020

androidx.camera:camera-core:1.0.0-beta06 é lançado. A versão 1.0.0-beta06 contém estas confirmações (link em inglês).

Mudanças na API

  • Adição de interfaces experimentais para filtrar câmeras por ID e características da câmera (I28f61, link em inglês).

Correções de bugs

  • O CameraX agora pode ser configurado com ProcessCameraProvider#configureInstance() antes de chamar ProcessCameraProvider#getInstance(). Isso permite a personalização do CameraXConfig sem precisar da implementação de CameraXConfig.Provider na classe Application do app (Ia1a8d, link em inglês).
  • CameraControl#startFocusAndMetering falhará se nenhum dos MeteringPoint especificados puder gerar retângulos de medição válidos (Id53ce, link em inglês).

Camera-Camera2 versão 1.0.0-beta05

10 de junho de 2020

androidx.camera:camera-camera2:1.0.0-beta05 é lançado. A versão 1.0.0-beta05 contém estas confirmações (link em inglês).

Correções de bugs

  • Correção da falha no app ao inicializar o CameraX enquanto o smartphone está no modo "Não perturbe". Uma InitializationException contém uma CameraUnavailableException que será definida como o ListenableFuture do resultado da inicialização em vez de causar a falha do aplicativo. (I9909a, b/149413835, links em inglês)
  • Correção da falha ao chamar startFocusAndMetering em dispositivos em que CONTROL_AF_STATE é nulo. (Ife55e, b/157084254, links em inglês)

Camera-Core versão 1.0.0-beta05

10 de junho de 2020

androidx.camera:camera-core:1.0.0-beta05 é lançado. A versão 1.0.0-beta05 contém estas confirmações (link em inglês).

Mudanças na API

  • Correção da falha no app ao inicializar o CameraX enquanto o smartphone está no modo "Não perturbe". Um InitializationException contém um CameraUnavailableException que será definido como o ListenableFuture do resultado da inicialização, em vez de falhar o aplicativo. (I9909a, b/149413835, links em inglês)

Correções de bugs

  • Atualização do Javadocs de setTargetResolution e setTargetRotation. (Ia16f, link em inglês)

Camera-Camera2 versão 1.0.0-beta04

27 de maio de 2020

androidx.camera:camera-camera2:1.0.0-beta04 é lançado. A versão 1.0.0-beta04 contém estas confirmações (link em inglês).

Correções de bugs

  • Permissão para aplicativos definirem qualquer parâmetro de solicitação de captura câmera2 via Camera2Interop sem causar uma falha. Observe se ocorrem problemas como resultado da modificação de parâmetros. A estabilidade e o comportamento não são garantidos ao modificar parâmetros usando o Camera2Interop. (Ibe5a1, b/14103700, links em inglês)
  • Correção da inicialização automática ao usar um app em um dispositivo usando uma pseudolocalidade. (I3bef3, b/157676663, links em inglês)
  • Conversão de erros de registro relacionados ao caso de uso de remoções na depuração de registro no Camera2CameraImpl. (I1a565, b/154422490, links em inglês)
  • Correção do problema em que a imagem capturada fica muito escura, mesmo quando o flash é disparado. (I5d9fa, b/149729613, links em inglês)
  • Correção do bug em que o buffer em ImageProxy de ImageCapture não era retrocedido. (I0c455, b/153249512, links em inglês)
  • Correção dos problemas em que a vinculação de ImageCapture apenas: (1) falha ao tirar fotos com MAX_QUALITY; (2) gera uma imagem de baixa qualidade porque a exposição automática não funciona. (I17782, b/145326998, links em inglês)
  • Melhoria na confiabilidade da reabertura da câmera quando o CameraX é desconectado por outro processo ou caminho de código "roubando" a câmera (I1fbc3, b/153714651, links em inglês)

Camera-Core versão 1.0.0-beta04

27 de maio de 2020

androidx.camera:camera-core:1.0.0-beta04 é lançado. A versão 1.0.0-beta04 contém estas confirmações (link em inglês).

Mudanças na API

  • Adição de uma API experimental, CameraXConfig.Builder#setSchedulerHandler(), para definir o gerenciador usado internamente pela pilha de câmera do CameraX. Essa nova API junto a CameraXConfig.Builder#setCameraExecutor() precisa permitir controle total sobre as linhas de execução usadas pela pilha de câmera do CameraX. (I7bf32, b/121160431, links em inglês)

Correções de bugs

  • Correções de falhas em ImageAnalysis, em que o ImageProxy é acessado após o ImageReaderProxy ser fechado. Isso também faz com que todos os ImageProxy recebidos pelo Analyzer precisem estar fechados antes de o ImageReaderProxy ser fechado. (I4b299, b/145956416, b/154155377, b/156357269, links em inglês)
  • Remoção do parâmetro CameraInfo de PreviewView#createSurfaceProvider(). Agora, PreviewView o recupera internamente de SurfaceRequest. (If18f0, b/154652477, links em inglês)
  • Correção da inicialização automática ao usar um app em um dispositivo usando uma pseudolocalidade. (I3bef3, b/157676663, links em inglês)
  • Correção do problema em que a imagem capturada fica muito escura, mesmo quando o flash é disparado. (I5d9fa, b/149729613, links em inglês)
  • Correção do problema com ImageAnalysis em que várias chamadas para setAnalyzer/clearAnalyzer resultavam no não recebimento de imagens para análise. (I6169f, b/151605317, b/153514544, links em inglês)
  • Correção do bug em que o buffer em ImageProxy de ImageCapture não era retrocedido. (I0c455, b/153249512, links em inglês)
  • Correção do problema em que a primeira câmera na lista de recursos compatíveis de CameraManager nem sempre está selecionada para usar. (I4c624, b/153418028, links em inglês)
  • Correção da falha intermitente causada pela configuração de Preview.SurfaceProvider que antes não liberava a superfície solicitada. “java.lang.IllegalStateException: Camera surface session should only fail with request cancellation” (I8e4e7, b/155936225, links em inglês)

Camera-Camera2 versão 1.0.0-beta03

15 de abril de 2020

Lançamento do androidx.camera:camera-camera2:1.0.0-beta03. A versão 1.0.0-beta03 contém estas confirmações (link em inglês).

Correções de bugs

  • Correções para oferecer compatibilidade com o lançamento de camera-core

Camera-Core versão 1.0.0-beta03

15 de abril de 2020

Lançamento do androidx.camera:camera-core:1.0.0-beta03. A versão 1.0.0-beta03 contém estas confirmações (link em inglês).

Correções de bugs

  • Correção da regressão de beta03 em casos em que chamar bindToLifecycle() sem UseCase geraria uma exceção. Isso impediu a recuperação de uma Camera sem vincular um UseCase.

Camera-Camera2 versão 1.0.0-beta02

1º de abril de 2020

Lançamento do androidx.camera:camera-camera2:1.0.0-beta02. A versão 1.0.0-beta02 contém estas confirmações (link em inglês).

Correções de bugs

  • Correção de ImageInfo.getRotationDegrees() do ImageProxy produzido por ImageCapture para que ele corresponda ao valor de orientação rotacional EXIF. (Id4281, b/150802561, links em inglês)
  • A solicitação explícita de dependências do CameraX no build.gradle não é mais necessária para usar a implementação padrão do CameraX/Camera2. Agora, para casos em que a declaração de dependências estritas é obrigatória, todas as dependências do CameraX podem ser incluídas no arquivo de compilação. (I46e88, link em inglês)
  • Correção do problema IllegalArgumentException que acontecia nos dispositivos em que o tamanho da tela é menor que 640 x 480. (Ife3f2, b/150506192, links em inglês)
  • Correção do bindToLifecycle para que ele só modifique o UseCase se a vinculação for realizada. Antes, ao chamar bindToLifecycle para fazer cálculos de resolução, o UseCase era atualizado. Agora, não é mais necessário atualizar o UseCase para fazer os cálculos (I78d9e, link em inglês)

Camera-Core versão 1.0.0-beta02

1º de abril de 2020

Lançamento do androidx.camera:camera-core:1.0.0-beta02. A versão 1.0.0-beta02 contém estas confirmações (link em inglês).

Correções de bugs

  • Correção de ImageInfo.getRotationDegrees() do ImageProxy produzido por ImageCapture para que ele corresponda ao valor de orientação rotacional EXIF. (Id4281, b/150802561, links em inglês)
  • Correção do bindToLifecycle para que ele só modifique o UseCase se a vinculação for realizada. Antes, ao chamar bindToLifecycle para fazer cálculos de resolução, o UseCase era atualizado. Agora, não é mais necessário atualizar o UseCase para fazer os cálculos (I78d9e, link em inglês)
  • Correção de um problema em que a sessão de captura do caso de uso Preview não estava sendo atualizada quando a superfície de visualização mudava após chamar Preview.setSurfaceProvider() mais de uma vez.

Camera-Camera2 versão 1.0.0-beta01

26 de fevereiro de 2020

Lançamento do androidx.camera:camera-camera2:1.0.0-beta01. A versão 1.0.0-beta01 contém estas confirmações (link em inglês).

Correções de bugs

  • SurfaceRequest.setSurface(Surface) foi renomeado como SurfaceRequest.provideSurface(Surface), e SurfaceRequest.setWillNotComplete() foi renomeado como SurfaceRequest.willNotProvideSurface(). (I224fe, link em inglês).
  • Correção de um problema com a proporção de uma imagem salva, que ficava errada após mudar o valor de rotação desejado usando ImageCapture.setTargetRotation(). (I474ea, b/150763432, links em inglês).
  • Correção da inicialização de variantes do app com o ProGuard ativado, preservando a sinalização que define o provedor CameraXConfig padrão. (I2d6c1, link em inglês).

Camera-Core versão 1.0.0-beta01

26 de fevereiro de 2020

Lançamento do androidx.camera:camera-core:1.0.0-beta01. A versão 1.0.0-beta01 contém estas confirmações (link em inglês).

Mudanças na API

  • Em SurfaceRequest.provideSurface(), ListenableFuture foi substituído por Executor e Callback. Isso simplifica a API ao não exigir mais o processamento de exceções em provideSurface() e restringe que o callback provideSurface() não possa ser cancelado. O objetivo é evitar falhas em dispositivos mais antigos, causadas pelo lançamento prematuro de plataformas. O objeto SurfaceRequest.Result agora é usado para rastrear como uma SurfaceRequest usa a Surface fornecida. (I7731b, link em inglês).
  • SurfaceRequest.setSurface(Surface) foi renomeado como SurfaceRequest.provideSurface(Surface), e SurfaceRequest.setWillNotComplete() foi renomeado como SurfaceRequest.willNotProvideSurface(). (I224fe, link em inglês).

Correções de bugs

  • Correção de um problema com a proporção de uma imagem salva, que ficava errada após mudar o valor de rotação desejado usando ImageCapture.setTargetRotation(). (I474ea, b/150763432, links em inglês).
  • Correção da inicialização de variantes do app com o ProGuard ativado, preservando a sinalização que define o provedor CameraXConfig padrão. (I2d6c1, link em inglês).
  • Atualização da documentação das APIs no modo flash para incluir valores possíveis. (I4a3ec, link em inglês).

Camera-Camera2 versão 1.0.0-alpha10

10 de fevereiro de 2020

Lançamento do androidx.camera:camera-camera2:1.0.0-alpha10. A versão 1.0.0-alpha10 contém estas confirmações (link em inglês).

Correções de bugs

  • Aprimoramento da estabilidade em dispositivos INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY, garantindo que Surfaces sejam retidas somente durante o uso de Camera2. (I9dac2, link em inglês)
  • Correção do problema de visualização com pouca exposição em dispositivos LEGACY, ajustando CONTROL_AE_TARGET_FPS_RANGE corretamente. (1224638, link em inglês)

Camera-Core versão 1.0.0-alpha10

10 de fevereiro de 2020

Lançamento do androidx.camera:camera-core:1.0.0-alpha10. A versão 1.0.0-alpha10 contém estas confirmações (link em inglês).

Mudanças na API

  • Atualização de ImageCapture para que seja possível salvar imagens em Uri e OutputStream. Os métodos takePicture sobrecarregados foram unificados em apenas um. Atualização do app de teste para usar Uri como exemplo canônico. (Ia3bec, link em inglês)
  • Preview.PreviewSurfaceProvider foi renomeado como Preview.SurfaceProvider. Os SurfaceProvider não exigem mais que os desenvolvedores criem os próprios ListenableFuture, e as Surfaces passaram a ser fornecidas por meio de um novo objeto SurfaceRequest. O método Preview.getPreviewSurfaceProvider() foi removido devido ao potencial de uso indevido quando Preview está pareado com outras classes, como PreviewView. (I20105, link em inglês)
  • getTargetRotation() e getTargetName() foram adicionados a Preview. (Iceee7, link em inglês)
  • getTargetRotation(), getBackpressureStrategy() e getImageQueueDepth() foram adicionados em ImageAnalysis. (I9d6d9, link em inglês)
  • getTargetRotation() e getCaptureMode() foram adicionados em ImageCapture() (I5bc17, link em inglês)
  • Os argumentos que anteriormente eram transmitidos em ImageCapture.OnImageSavedCallback.onError() e ImageCapture.OnImageCapturedCallback.onError() foram substituídos por um único argumento ImageCaptureException, que ainda contém todas as informações transmitidas anteriormente.
  • O argumento do arquivo anteriormente transmitido em ImageCapture.OnImageSavedCallback.onImageSaved() foi removido. (I750d2, link em inglês)
  • As classes Preview e ImageCapture agora são marcadas como finais. (I7731b, link em inglês)
  • Atualização da API, com os métodos getZoomRatio(), getMaxZoomRatio(), getMinZoomRatio() e getLinearZoom() de junção da CameraInfo em getZoomState(), que retorna uma instância ZoomState. (Ib19fe, link em inglês).
  • Remoção dos campos de API OPTION_TARGET_CLASS e OPTION_TARGET_NAME de CameraXConfig, já que eles são destinados apenas para uso de biblioteca interna. Remoção do construtor de CameraXConfig.Builder. (I96912, link em inglês)
  • Remoção da exigência de que o app inclua Application para inicializar o CameraX. O CameraX será inicializado com uma configuração Camera2 padrão, desde que o artefato camera-camera2 esteja incluído no build.gradle do aplicativo. (I58ff5, b/146923574, links em inglês).

Camera-Camera2 versão 1.0.0-alpha09

22 de janeiro de 2020

Lançamento de androidx.camera:camera-camera2:1.0.0-alpha09. A versão 1.0.0-alpha09 contém estas confirmações (link em inglês).

Mudanças na API

  • Adição de caminho de interoperabilidade de camera2 para extração de um ID de câmera Camera2. Você pode extrair o ID de câmera de CameraInfo usando Camera2CameraInfo.extractCameraId(). A amostra de código a seguir mostra como fazer isso:

    Camera camera = provider.bindToLifecycle(...);
    String cameraId =
        Camera2CameraInfo.extractCameraId(camera.getCameraInfo());
    

    A classe Camera2CameraInfo precisa da markerClass ExperimentalCamera2Interop.

Camera-Core versão 1.0.0-alpha09

22 de janeiro de 2020

Lançamento de androidx.camera:camera-core:1.0.0-alpha09. A versão 1.0.0-alpha09 contém estas confirmações (link em inglês).

Mudanças na API

  • O parâmetro SurfaceOrientedMeteringPointFactory useCaseForSurface foi renomeado como useCaseForAspectRatio, e a documentação de referência foi expandida.
  • Os métodos FocusMeteringAction.Builder.from() foram substituídos pelos construtores FocusMeteringAction.Builder().
  • A função DisplayOrientedMeteringPointFactory(android.content.Context, androidx.camera.core.CameraSelector, float, float) foi removida. Os aplicativos precisam usar o construtor que aceita um parâmetro Display e transmitir a exibição atual.
  • Melhorias no Javadoc para APIs de foco e medição relacionadas a MeteringMode, sinalizações 3A e ao uso do parâmetro Display.
  • Expansão da documentação de referência para setZoomRatio e setLinearZoom.

Correções de bugs

  • Correção de problemas ao fechar e abrir câmeras, que resultam em falha na verificação de "pré-condição".
  • Correção de uma ConcurrentModificationException que podia ocorrer ao usar as APIs de lanterna e zoom.
  • Correção do problema para selecionar resoluções mais próximas da solicitada quando um tamanho de dimensões mod16 está disponível.
  • As APIs startFocusMetering e cancelFocusMetering agora se comportam conforme documentadas, com o tempo correto e possivelmente retornando erros quando ocorrem.
  • Correção do problema que ocorria quando uma resolução específica era solicitada com uma proporção de corte em um dispositivo que não era compatível com aquele tamanho. Agora, um tamanho não cortado de resolução suficiente será selecionado, quando disponível, para vincular a solicitação original.

Camera-Camera2 versão 1.0.0-alpha08

18 de dezembro de 2019

Lançamento de androidx.camera:camera-camera2:1.0.0-alpha08. A versão 1.0.0-alpha08 contém estas confirmações (link em inglês).

Problemas conhecidos

  • Nem todas as opções de solicitação de captura de Camera2 funcionam ao usar a interoperabilidade de Camera2. Se a opção solicitada não for compatível, a sessão não será iniciada e um erro como este poderá ocorrer: 09-09 14:04:13.643 10117 26020 26036 E AndroidRuntime: java.lang.IllegalArgumentException: Unsupported session configuration combination

Correções de bugs

  • Correção de um problema em que uma tela preta de visualização aparecia após girar ou alternar a câmera para os níveis de API 21 e 22.

Mudanças na API

  • Experimental: adição de um caminho de interoperabilidade de camera2 para extrair o ID da câmera.

Camera-Core Versão 1.0.0-alpha08

18 de dezembro de 2019

Lançamento de androidx.camera:camera-core:1.0.0-alpha08. A versão 1.0.0-alpha08 contém estas confirmações (link em inglês).

Problemas conhecidos

  • Os apps que usam PreviewView ou CameraView podem ter uma proporção incorreta na visualização. Isso acontece depois de uma pausa ou retomada em alguns dispositivos FULL, como o Pixel2.

Correções de bugs

  • Atualização da documentação de FocusMeteringAction e CameraControl.
  • Implementação de TorchControl para enableTorch() e getTorchState().

Mudanças na API

  • IntDefs foram ocultadas e constantes de IntDef foram removidas da definição de IntDef.
  • rotationDegrees movido da classe OnImageCaptureCallback para ImageInfo.
  • rotationDegrees movido da classe Analyzer para ImageInfo.

Camera-Camera2 Versão 1.0.0-alpha07

4 de dezembro de 2019

Lançamento de androidx.camera:camera-camera2:1.0.0-alpha07. A versão 1.0.0-alpha07 da camera-camera2 contém estas confirmações (link em inglês).

  • Camera2Config agora está disponível para uso na inicialização e na configuração de uma implementação baseada em Camera2 para o CameraX. Mais detalhes sobre como usar esse recurso na inicialização podem ser encontrados na seção camera-core das notas da versão.
  • A funcionalidade de interoperabilidade da camera2 agora está marcada como experimental e foi movida para um pacote separado, androidx.camera.camera2.interop..

Camera-Core Versão 1.0.0-alpha07

4 de dezembro de 2019

Lançamento de androidx.camera:camera-core:1.0.0-alpha07. A versão 1.0.0-alpha07 da camera-core contém estas confirmações (link em inglês).

Observe que há algumas mudanças significativas nessa versão Alfa conforme nos preparamos para a versão Beta. Recomendamos que você analise as mudanças e compartilhe seu feedback no Grupo do Google sobre CameraX. Para os desenvolvedores que usam o CameraX em apps que estão na Play Store, recomendamos esperar a versão Beta formal antes de fazer o upgrade da biblioteca nos aplicativos.

Mudanças na API

  • Importante: a inicialização do CameraX mudou. Os aplicativos precisam implementar CameraXConfig.Provider e usar a Camera2Config padrão fornecida por androidx.camera.camera2. Veja um uso típico:

    import androidx.camera.camera2.Camera2Config
    import androidx.camera.core.CameraXConfig
    
    public class MyCameraXApplication : Application(),  CameraXConfig.Provider {
        override fun getCameraXConfig(): CameraXConfig {
                return Camera2Config.defaultConfig(this)
        }
    }
    
  • A classe CameraX foi removida. bindToLifecycle(), unbind(), unbindAll(), isBound() e hasCamera(), anteriormente fornecidos pela chamada de classe do CameraX, agora estão disponíveis por meio do ProcessCameraProvider.

  • Uma instância por processo de ProcessCameraProvider é recebida de maneira assíncrona usando o método estático ProcessCameraProvider.getInstance(), que retorna um futuro audível, que, por sua vez, fornece o ProcessCameraProvider na conclusão. Aqui, ele é mostrado em onCreate() em um uso típico. Você pode fazer chamadas para getInstance() posteriormente no ciclo de vida da atividade para adiar a latência de inicialização (por exemplo, para quando uma ação do usuário abrir a IU de uma câmera).

    import androidx.camera.lifecycle.ProcessCameraProvider
    import com.google.common.util.concurrent.ListenableFuture
    
    class MainActivity : AppCompatActivity() {
       private lateinit var cameraProviderFuture : ListenableFuture<ProcessCameraProvider>
       override fun onCreate(savedInstanceState: Bundle?) {
           cameraProviderFuture = ProcessCameraProvider.getInstance(this);
      }
    
  • Um listener pode ser adicionado ao ListenableFuture retornado por getInstance(). Isso garante que o provedor da câmera possa ser recuperado do Future sem bloqueio em Future.get()

    cameraProviderFuture.addListener(Runnable {
      val cameraProvider = cameraProviderFuture.get()
      cameraProvider.bindToLifecycle(...)
    }, ContextCompat.getMainExecutor(this))
    
  • A seleção da câmera agora é feita por um seletor de câmera, e não mais por caso de uso.

    val cameraSelector = CameraSelector.Builder().requireLensFacing(LensFacing.BACK).build()
    
  • CameraProvider.bindToLifecycle recebe o proprietário do ciclo de vida, o seletor de câmera e casos de uso, que são vinculados ao proprietário do ciclo de vida e executados para a câmera selecionada.

    cameraProvider.bindToLifecycle(this as LifecycleOwner,
           cameraSelector, preview, imageAnalysis)
    
  • As classes "Config" de caso de uso foram removidas. Em vez disso, crie casos de uso diretamente, definindo opções em cada builder de casos de uso. Por exemplo:

    preview = Preview.Builder().setTargetAspectRatio(AspectRatio.RATIO_16_9).build()
    
  • O caso de uso de Preview foi atualizado para aceitar uma superfície criada e gerenciada pelo aplicativo para garantir as práticas recomendadas do Android. É altamente recomendável usar a classe de visualização PreviewView fornecida no pacote camera-view.

    preview.setPreviewSurfaceProvider(previewView.previewSurfaceProvider)
    
  • Consulte a documentação para anexar uma superfície gerenciada pelo aplicativo. Nesses casos, o app gerencia o ciclo de vida da superfície.

  • Importante: a implementação do método Analyzer ImageAnalysis precisa chamar image.close() nas imagens recebidas quando terminar de usá-las. Caso contrário, novas imagens podem não ser recebidas ou a câmera pode travar, dependendo da configuração de pressão de retorno. Consulte os documentos de referência para ver detalhes.

  • ImageAnalysis ImageReaderMode foi mudado para uma estratégia de pressão de retorno intdef.

  • ImageProxy.getImage() está marcado como experimental. Os aplicativos precisam anotar o uso, por exemplo, com @androidx.camera.core.ExperimentalGetImage.

  • O requisito de anotação UIThread para o Analyzer foi removido.

  • A função ImageAnalysis.clearAnalyzer() é adicionada para remover um analisador.

  • Os listeners com mais de um método foram renomeados para Callback:

    • ImageCapture.OnImageCapturedListener agora é ImageCapture.OnImageCapturedCallback
    • ImageCapture.OnImageSavedListener agora é ImageCapture.OnImageSavedCallback
    • VideoCapture.OnVideoSavedListener agora é VideoCapture.OnVideoSavedCallback
  • Enums foram mudados para IntDef.

  • Controles de zoom foram adicionados:

    • CameraControl.setLinearZoom()
    • CameraControl.setZoomRatio()
    • CameraInfo.getLinearZoom()
    • CameraInfo.getMaxZoomRatio()
    • CameraInfo.getZoomRatio()
  • CameraInfo.hasFlashUnit() foi adicionado para determinar se o hardware de flash/lanterna está presente.

  • O CameraInfo.isFlashAvailable() foi removido. A lanterna substitui a funcionalidade do flash. Mais detalhes estão incluídos na documentação de referência.

  • Os campos ImageCapture.Metadata foram substituídos por acessadores get/set/is.

  • startFocusMetering e cancelFocusMetering agora retornam ListenableFutures, que representam a operação assíncrona da chamada.

  • MeteringPoints agora funcionam como identificadores para ações de medição e são produzidos por fábricas. Os apps devem usar as fábricas existentes, em vez de fábricas personalizadas.

Problemas corrigidos

  • Correção do problema ao tirar uma foto depois da retomada. Após uma pausa, a foto ficava pendente.
  • Problema conhecido: CameraControl.enableTorch() é funcional, mas o ListenableFuture<Void> retornado é sempre um futuro complete(success) imediato, mesmo sem uma unidade de flash. As próximas versões corrigirão esse problema no comportamento final: quando não houver unidade de flash, enableTorch(true) falhará imediatamente (não enviará a solicitação para CaptureSession) e TorchState permanecerá desativado.
  • Problema conhecido: startFocusAndMetering e cancelFocusAndMetering iniciam e cancelam a medição de foco, mas retornam um futuro completed (success) imediato que não representa o comportamento documentado. O FocusMeteringResult de ListenableFuture<FocusMeteringResult> CameraControl.startFocusAndMetering() é um resultado falso que isFocusSuccessful() e é sempre "false", diferentemente do comportamento documentado e pretendido.
  • Problema conhecido: uma fábrica de pontos de medição para uso com eventos de toque PreviewView está sendo desenvolvida. Por enquanto, os apps que conectam superfícies gerenciadas personalizadas podem usar as fábricas de pontos de medição existentes. Caso contrário, nenhuma funcionalidade de toque de foco estará disponível para PreviewView.

Camera-Camera2 e Camera-Core Versão 1.0.0-alpha06

9 de outubro de 2019

Lançamento de androidx.camera:camera-camera2:1.0.0-alpha06 e androidx.camera:camera-core:1.0.0-alpha06. Estas são as confirmações incluídas em camera-camera2:1.0.0-alpha06 e estas são as confirmações incluídas em camera-core:1.0.0-alpha06.

Novos recursos

Mudanças nas proporções de configuração:

  • setTargetAspectRatioMode() foi adicionado e aceita um argumento enum. Isso define o modo de proporção com as opções RATIO_4_3 ou RATIO_16_9 em vez de uma proporção arbitrária. Isso reflete o fato de que apenas certas proporções são fornecidas pela câmera, em vez de proporções arbitrárias.
    • Atualmente, as únicas proporções disponíveis são 16:9 e 4:3. No caso de dispositivos 1:1, apenas alguns dispositivos têm essa opção disponível na câmera e apenas em resoluções limitadas. Os aplicativos que projetam uma interface 1:1 ou processamento individual precisam usar as opções mais flexíveis 16:9 ou 4:3 e cortar a exibição ou processar uma sub-região.
    • Essas proporções são orientadas para usar a área máxima do sensor.
  • getTargetAspectRatio() foi adicionado para usar as APIs de configuração de caso de uso, retornando a proporção para a qual a saída de caso de uso está segmentada.
  • O método setTargetAspectRatio(Rational aspectRatio) foi modificado para ImageCapture para setTargetAspectRatioCustom(Rational aspectRatio). Quando definido, a saída de ImageCapture será cortada da forma correta.

APIs Executor

  • As funções a seguir aceitam um parâmetro de executor, que permite ao app controlar em qual executor a função será executada.
    • API Preview.setOnPreviewOutputUpdateListener(). Se o executor não estiver presente para essa função, ele será executado na linha de execução principal.
    • Preview.setOnPreviewOutputUpdateListener
    • FocusMeteringAction.Builder.setAutoFocusCallback
    • ImageAnalysis.setAnalyzer
    • ImageCapture.takePicture
    • CameraView.takePicture
    • CameraView.startRecording
    • VideoCapture.startRecording

CameraInfo adicionada com Check Flash disponível e APIs de rotação do sensor

  • Adição de CameraInfo e um método getCameraInfo, que permite que os apps verifiquem se uma lente com a CameraInfo está disponível e se há um flash disponível na câmera. Por exemplo:

    try {
        CameraInfo cameraInfo = CameraX.getCameraInfo(currentCameraLensFacing);
        LiveData<Boolean> isFlashAvailable = cameraInfo.isFlashAvailable();
        flashToggle.setVisibility(isFlashAvailable.getValue() ? View.VISIBLE : View.INVISIBLE);
    } catch (CameraInfoUnavailableException e) {
        Log.w(TAG, "Cannot get flash available information", e);
        flashToggle.setVisibility(View.VISIBLE);
    }
    
  • Adição de CameraInfo.getSensorRotationDegrees() Ele fornece a orientação do sensor da câmera em relação à orientação natural do dispositivo, ou para conveniência, em relação a uma orientação descrita por uma rotação de superfície (que descreve uma orientação relativa à orientação natural).

Mudanças na API e correções de bugs

  • Proporções: para cada caso de uso, é preciso que os aplicativos chamem apenas um de setTargetResolution() ou setTargetAspectRatio(). Chamar ambos no mesmo builder retornará um erro.
    • Em geral, recomenda-se usar setTargetAspectRatio() com base no design da IU do aplicativo. Resoluções específicas serão baseadas no caso de uso. Por exemplo, a visualização será próxima a resoluções de tela e a captura de imagem fornecerá imagens estáticas de alta resolução. Consulte a tabela de resoluções automáticas para ter mais informações.
    • Use setTargetResolution() para casos mais específicos, como quando o mínimo (para salvar o cálculo) ou as resoluções máximas (para detalhes de processamento) forem necessárias.
  • API Executor: remoção da chamada setCallbackHandler() das APIs de configuração de casos de uso. Em vez disso, os aplicativos podem definir o executor como um parâmetro em várias outras APIs que definem um callback.
  • Anotações nulas atualizadas para várias funções.
  • Correção de um problema que fazia com que java.lang.IllegalStateException at Camera$StateCallback.onError fosse gerado ao abrir a câmera.
  • Correção do problema que selecionava resoluções muito pequenas (menos de 640 x 480) quando o app solicitava resoluções maiores ou padrão, resultando em uma imagem de visualização bloqueada ou desfocada. Os aplicativos que precisam especificamente de resoluções menores podem solicitá-los explicitamente.
  • Correção de um problema em que a câmera mostrava uma tela preta (falha ao iniciar a câmera) após retornar de um intent que acionou outro aplicativo de câmera.
  • Correção de um bug que gerava o seguinte erro quando os apps eram iniciados ou interrompidos várias vezes: java.lang.IllegalArgumentException: CaptureRequest contains unconfigured Input/Output Surface!
  • Correção do seguinte erro que ocorre ao desativar o ImageAnalysis: java.lang.IllegalStateException: maxImages (4) has already been acquired, call #close before acquiring more.
  • Adição de mais testes para o fluxo de desconexão da câmera.
  • Mais robustez do sistema de testes ao realizar testes consecutivos de câmera.

Camera-Camera2 e Camera-Core Versão 1.0.0-alpha05

5 de setembro de 2019

Lançamento de androidx.camera:camera-camera2:1.0.0-alpha05 e androidx.camera:camera-core:1.0.0-alpha05. Estas são as confirmações incluídas em camera-camera2:1.0.0-alpha05 e estas são as confirmações incluídas em camera-core:1.0.0-alpha05 (links em inglês).

  • Mudança da API: variáveis de erro de caso de uso renomeadas:

    • ImageCapture.UseCaseError foi renomeado para ImageCapture.ImageCaptureError
    • VideoCapture.UseCaseError foi renomeado para VideoCapture.VideoCaptureError
  • Adição da API CameraControl com APIs de "Toque para focar"

    • Adição da API para receber um CameraControl de CameraX para uma câmera, selecionada com "lens facing":

      CameraX.getCameraControl(LensFacing lensFacing)

    • Adição de MeteringPointFactory, MeteringPoint, MeteringMode e FocusMeteringAction para executar "Toque para focar".

      MeteringPointFactory factory = new SensorOrientedMeteringPointFactory(width, height);
      MeteringPoint point = factory.createPoint(x, y);
      FocusMeteringAction action = FocusMeteringAction.Builder.from(point,
                                       MeteringMode.AF_ONLY)
          .addPoint(point2, MeteringMode.AE_ONLY) // could have many
          .setAutoFocusCallback(new OnAutoFocusListener(){
              public void onFocusCompleted(boolean isSuccess) {
              }
          })
          // auto calling cancelFocusAndMetering in 5 sec.
          .setAutoCancelDuration(5, TimeUnit.Second)
          .build();
      
    • Adição da API para CameraControl iniciar e cancelar a medição de foco:

      getCameraControl(lensFacing).startFocusAndMetering(action); getCameraControl(lensFacing).cancelFocusAndMetering();

    • Adição de APIs para Metering Point Factories que auxiliam na conversão de coordenadas de toque para coordenadas de sensor, com base nas classes de visualização:

      MeteringPointFactory factory = new TextureViewMeteringPointFactory(textureView); MeteringPointFactory factory = new DisplayOrientedMeteringPointFactory(context, lensFacing, viewWidth, viewHeight);

  • Aplique chamando os seguintes métodos na linha de execução principal (IU), gerando um IllegalStateException quando não estiverem. Versões futuras permitirão o uso em outras linhas de execução e garantirão a serialização.

    • CameraX.bindToLifecycle()
    • CameraX.unbind()
    • CameraX.unbindAll()
    • ImageAnalysis.setAnalyzer()
    • ImageAnalysis.getAnalyzer()
    • ImageAnalysis.removeAnalyzer()
    • Preview.removePreviewOutputListener()
    • Preview.getOnPreviewOutputUpdateListener()
    • Preview.setOnPreviewOutputUpdateListener()
  • Várias configurações agora aceitam parâmetros nulos e getters correspondentes podem retornar nulo.

  • Correção do problema ao testar em emuladores que não são compatíveis com as configurações de AF/AE/AWB.

  • Correção do bug de falha na rotação durante a análise da imagem.

  • Correção do bug em que a visualização aparece em preto no início (sem dados da câmera), após a rotação ou alterna entre as câmeras frontal e traseira.

  • Remoção de testes para vários casos de uso simultâneos de análise de imagem. Para garantir a compatibilidade, os aplicativos só anexarão um único caso de uso de análise de imagem.

  • Adicionados testes robolétricos iniciais para a câmera falsa no conjunto de teste de câmera (WIP).

  • Remoção do teste do Camera2Inititalizer porque a cobertura não era clara ou era enganosa.

Camera-Camera2 e Camera-Core Versão 1.0.0-alpha04

7 de agosto de 2019

Lançamento de androidx.camera:camera-camera2:1.0.0-alpha04 e androidx.camera:camera-core:1.0.0-alpha04. A versão 1.0.0-alpha04 contém estas confirmações (link em inglês).

Novos recursos

Alterações na seleção de Proporção e de Resolução

O objetivo do CameraX é inicializar uma sessão de câmera. Isso significa que o CameraX comprometerá a resolução/proporção com base na capacidade do dispositivo, a fim de iniciar uma sessão de captura como principal objetivo. Assim, é possível que as solicitações não sejam atendidas de maneira precisa. Isso pode acontecer porque:

  • Os dispositivos não são compatíveis com a resolução solicitada.
  • Existem problemas de compatibilidade, como em dispositivos LEGADOS, em que determinadas resoluções precisam ser usadas para um funcionamento correto.
  • Em alguns dispositivos, determinados formatos estão disponíveis apenas em proporções específicas.
  • Existe uma preferência por um "mod16 mais próximo" para codificação JPEG ou de vídeo. Consulte CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP.

Embora o CameraX crie e gerencie a sessão, sempre verifique os tamanhos de imagem retornados na saída do caso de uso no seu código e faça as modificações necessárias.

Algumas mudanças foram feitas para definir resoluções e proporções, com o objetivo de tornar a API mais clara:

  • Agora, quando nenhuma outra proporção estiver definida, o caso de uso de visualização terá uma proporção padrão de 4:3.
  • Quando o CameraX considerar internamente mudanças para resoluções e proporções solicitadas com base na capacidade do dispositivo, ele tentará primeiramente manter a mesma proporção (conforme determinado por qualquer uma das chamadas setTargetAspectRatio ou setTargetResolution)
  • Uma versão "mod16 mais próximo" da resolução é considerada como a mesma proporção.

Modo sem bloqueio do ImageAnalysis

  • O comportamento de ImageReaderMode.ACQUIRE_LATEST_IMAGE não faz bloqueios. Ele adquire a imagem mais recente na fila, mas descarta as imagens não usadas continuamente para permitir que o pipeline da câmera evite o bloqueio.
  • O analisador pode manter uma única imagem indefinidamente, sem paralisar o pipeline.
  • Se o aplicativo disponibilizar um executor que faça bloqueios, o caso de uso do ImageAnalysis será bloqueado.
  • O conjunto de executores padrão se comporta internamente como um executor sem bloqueio.

Correções de bugs

  • Correção de problemas de tempo limite que aguardavam convergência 3A ao capturar imagens em dispositivos sem foco, exposição e balanço de branco automáticos.
  • Correção do problema que ocorria ao tirar fotos rapidamente com o ImageCapture. Correção de erro: java.lang.IllegalStateException: maxImages (2) has already been acquired
  • Correção de um problema que ocorria quando setLensFacing não era chamado para um caso de uso, resultando em java.lang.IllegalArgumentException: Unable to get camera ID for use case.
  • Correção do problema que ocorria quando o dispositivo LEGADO exigia uma proporção específica como resolução JPEG máxima.
  • Correção do problema que ocorria ao colocar o app em segundo plano enquanto a câmera era inicializada.
  • Correção do problema na API anterior a 25, por meio da remoção do erro checkAndUpdateEglState: invalid current EGLDisplay.
  • Correção do problema ao desvincular a visualização depois de ativar e iniciar extensões.
  • Artefatos de compilação para visualização e extensões de câmera agora são publicados como versões Alfa.

Camera-Camera2 e Camera-Core Versão 1.0.0-alpha03

2 de julho de 2019

Lançamento de androidx.camera:camera-core:1.0.0-alpha03 e androidx.camera:camera-camera2:1.0.0-alpha03. A versão 1.0.0-alpha03 contém estas confirmações (link em inglês).

Mudanças na API

  • Adição de esclarecimento javadoc para "target" nas chamadas de configuração setTarget.

Camera-Core

  • Correção da falha de superfície de entrada/saída não configurada ao abrir/fechar ou vincular/desvincular rapidamente.
  • Movimentação para novas implementações de Futures.
  • Correções de teste para aumentar a robustez.
  • O teste de integração do Core agora mostra o tempo de captura de fotos.
  • Desenvolvimento de classe compat interna para executores.
  • As imagens de captura do app de teste de tempo aguardam que as anteriores fiquem completas e com estabilidade aprimorada.

Extensões

  • Adição de verificações de controle de versão
  • Cobertura de teste extra: callbacks de evento de extensão
  • Melhorias para imagem e metadados correspondentes internamente
  • Correção da alternância de modo no app de teste

Camera-Camera2 e Camera-Core Versão 1.0.0-alpha02

5 de junho de 2019

Lançamento de androidx.camera:camera-core:1.0.0-alpha02 e androidx.camera:camera-camera2:1.0.0-alpha02. A versão 1.0.0-alpha02 contém estas confirmações (link em inglês).

Correções de bugs

  • Correção do problema de divisão por zero ao usar o emulador.
  • Correção do erro NullPointerException/Surface Abandoned que ocorria em alguns dispositivos ao tirar fotos rapidamente durante a desvinculação e nova vinculação de casos de uso em pouco tempo.
  • Correção de um problema interno para garantir que as atualizações da solicitação de captura afetem todas as superfícies de forma consistente.
  • Melhorias de estabilidade ao reiniciar casos de uso em novas instâncias de apps.
  • Alterações na arquitetura interna para preparar a compatibilidade com executores na API.
  • Esclarecimentos extras do Javadoc sobre gerenciamento de classes e ciclos de vida do CameraX.
  • Adição de teste de instrumentação para o app de teste de desempenho Antelope.
  • Remoção da necessidade de "-keepattributes Signature" na configuração do Proguard para apps.

Camera-Camera2 e Camera-Core 1.0.0-alpha01

7 de maio de 2019

Lançamento de androidx.camera:camera-core:1.0.0-alpha01 e androidx.camera:camera-camera2:1.0.0-alpha01. A versão 1.0.0-alpha01 contém estas confirmações (link em inglês).

Camera-Lifecycle versão 1.0.0

Camera-Lifecycle versão 1.0.0-beta08

19 de agosto de 2020

androidx.camera:camera-lifecycle:1.0.0-beta08 é lançado. A versão 1.0.0-beta08 contém essas confirmações.

Correções de bugs

  • A inicialização não deve mais falhar ao usar um Context que não retorna um objeto da Application de Context.getApplicationContext() (I3d3c9, b/160817073).

Camera-Lifecycle versão 1.0.0-beta07

22 de julho de 2020

Lançamento do androidx.camera:camera-lifecycle:1.0.0-beta07. A versão 1.0.0-beta07 contém essas confirmações.

Camera-Lifecycle versão 1.0.0-beta06

24 de junho de 2020

androidx.camera:camera-lifecycle:1.0.0-beta06 é lançado. A versão 1.0.0-beta06 contém estas confirmações (link em inglês).

Mudanças na API

  • Agora, o CameraX pode ser configurado com o ProcessCameraProvider#configureInstance() antes de chamar ProcessCameraProvider#getInstance(). Isso permite a personalização do CameraXConfig sem precisar implementar CameraXConfig.Provider na classe Application do app (Ia1a8d, link em inglês).

Camera-Lifecycle versão 1.0.0-beta05

10 de junho de 2020

androidx.camera:camera-lifecycle:1.0.0-beta05 é lançado. A versão 1.0.0-beta05 contém estas confirmações (link em inglês).

Correções de bugs

  • Correção da falha no app ao inicializar o CameraX enquanto o smartphone está no modo "Não perturbe". Um InitializationException contém um CameraUnavailableException que será definido como o ListenableFuture do resultado da inicialização, em vez de falhar o aplicativo. (I9909a, b/149413835, links em inglês)

Camera-Lifecycle versão 1.0.0-beta04

27 de maio de 2020

androidx.camera:camera-lifecycle:1.0.0-beta04 é lançado. A versão 1.0.0-beta04 contém estas confirmações (link em inglês).

Camera-Lifecycle versão 1.0.0-beta03

15 de abril de 2020

Lançamento do androidx.camera:camera-lifecycle:1.0.0-beta03. A versão 1.0.0-beta03 contém estas confirmações (link em inglês).

Correções de bugs

  • Correção da regressão de beta03 em casos em que chamar bindToLifecycle() sem UseCase geraria uma exceção. Isso impediu a recuperação de uma Camera sem vincular um UseCase.
  • Correções para oferecer compatibilidade com o lançamento de camera-core

Camera-Lifecycle versão 1.0.0-beta01

26 de fevereiro de 2020

Lançamento do androidx.camera:camera-lifecycle:1.0.0-beta01. A versão 1.0.0-beta01 contém estas confirmações (link em inglês).

Correções de bugs

  • Correção da documentação para mencionar que, ao receber um ProcessCameraProvider durante a inicialização, uma configuração padrão é usada e a extensão de Application é opcional. (I5e395, link em inglês).

Camera-Lifecycle versão 1.0.0-beta02

1º de abril de 2020

Lançamento do androidx.camera:camera-lifecycle:1.0.0-beta02. A versão 1.0.0-beta02 contém estas confirmações (link em inglês).

Correções de bugs

  • Atualização para oferecer compatibilidade com as correções de bugs nos artefatos camera-camera2:1.0.0-beta02 e camera-core:1.0.0-beta02.

Camera-Lifecycle versão 1.0.0-alpha10

10 de fevereiro de 2020

Lançamento do androidx.camera:camera-lifecycle:1.0.0-alpha10. A versão 1.0.0-alpha10 contém estas confirmações (link em inglês).

Mudanças na API

  • Adição da anotação @MainThread aos métodos BindToLifecycle, unind e unindAll. (I990d2, link em inglês)

Camera-Lifecycle versão 1.0.0-alpha03

22 de janeiro de 2020

Lançamento de androidx.camera:camera-lifecycle:1.0.0-alpha03. A versão 1.0.0-alpha03 contém estas confirmações (link em inglês).

Atualizações

  • Várias correções e atualizações compatíveis com as mudanças de Camera Core e Camera2.

Camera-Lifecycle Versão 1.0.0-alpha02

18 de dezembro de 2019

Lançamento de androidx.camera:camera-lifecycle:1.0.0-alpha02. A versão 1.0.0-alpha02 contém estas confirmações (link em inglês).

Mudanças na dependência

  • Atualizada para usar androidx.camera:camera-core:1.0.0-alpha08.

Camera-Lifecycle Versão 1.0.0-alpha01

4 de dezembro de 2019

Lançamento de androidx.camera:camera-lifecycle:1.0.0-alpha01. A versão 1.0.0-alpha01 do camera-lifecycle contém estas confirmações (link em inglês).

Observações sobre a API

  • O artefato camera-lifecycle foi adicionado, fornecendo a interface LifeCycleCameraProvider e uma implementação chamada ProcessCameraProvider, que oferece muitas das funções da classe CameraX anterior no núcleo e é usada por meio do método getInstance().
  • Os apps precisam incluir a biblioteca camera-lifecycle para usar o CameraX.
  • Veja as notas na seção camera-core sobre como inicializar o CameraX usando um ProcessCameraProvider.

Camera-Extensions e Camera-View versão 1.0.0

Camera-Extensions versão 1.0.0-alpha15

19 de agosto de 2020

androidx.camera:camera-extensions:1.0.0-alpha15 é lançado. A versão 1.0.0-alpha15 contém essas confirmações.

Correções de bugs

  • O método ExtensionsManager.init() agora usa um Context como parâmetro em vez de 0 args (Ife754).
  • A inicialização não deve mais falhar ao usar um Context que não retorna um objeto da Application de Context.getApplicationContext() (I3d3c9, b/160817073).

    Camera-View versão 1.0.0-alpha15

    19 de agosto de 2020

androidx.camera:camera-view:1.0.0-alpha15 é lançado. A versão 1.0.0-alpha15 contém essas confirmações.

Correções de bugs

  • DisplayOrientedMeteringPointFactory usa uma instância de CameraInfo, em vez de CameraSelector, para que haja um mapeamento direto para o qual Camera gerará pontos. Todas as classes que usam DisplayOrientedMeteringPointFactory também aceitam uma instância de CameraInfo em vez de CameraSelector (I400c1).
  • Contato removido: TextureViewMeteringPointFactory. PreviewView fornece uma API pública (createMeteringPointFactory()) para criar uma fábrica de ponto de medição, independentemente de usar TextureView ou SurfaceView (Ide693).
  • Renomeação dos modos de implementação SURFACE_VIEW/TEXTURE_VIEW do PreviewView como PERFORMANCE/COMPATIBLE. PERFORMANCE é o modo SURFACE_VIEW antigo e COMPATIBLE é o modo TEXTURE_VIEW antigo (I0edc2).
  • Para captura de imagem, substitua a sinalização de virar para a horizontal nos metadados com base na direção da câmera (I28499).

Camera-Extensions versão 1.0.0-alpha14

22 de julho de 2020

Lançamento do androidx.camera:camera-extensions:1.0.0-alpha14. A versão 1.0.0-alpha14 contém essas confirmações.

Camera-View versão 1.0.0-alpha14

22 de julho de 2020

Lançamento do androidx.camera:camera-view:1.0.0-alpha14. A versão 1.0.0-alpha14 contém essas confirmações.

Camera-Extensions versão 1.0.0-alpha13

24 de junho de 2020

androidx.camera:camera-extensions:1.0.0-alpha13 é lançado. A versão 1.0.0-alpha13 contém estas confirmações (link em inglês).

Correções de bugs

  • Adição de interfaces experimentais para filtrar câmeras por ID e características da câmera (I28f61, link em inglês).

Camera-View versão 1.0.0-alpha13

24 de junho de 2020

androidx.camera:camera-view:1.0.0-alpha13 é lançado. A versão 1.0.0-alpha13 contém estas confirmações (link em inglês).

Correções de bugs

  • O CameraView não falha mais com uma IllegalArgumentException ao vincular a um LifecycleOwner cujo ciclo de vida transita para um estado DESTROYED logo após ser vinculado. Os ciclos de vida de vinculação em um estado DESTROYED não tentarão abrir a câmera (I7c2b8, link em inglês).
  • PreviewView StreamState agora está disponível por meio do CameraView.getPreviewStreamState() (I21a2b, link em inglês).

Camera-Extensions versão 1.0.0-alpha12

10 de junho de 2020

androidx.camera:camera-extensions:1.0.0-alpha12 é lançado. A versão 1.0.0-alpha12 contém estas confirmações (link em inglês).

Correções de bugs

  • Correção da falha no app ao inicializar o CameraX enquanto o smartphone está no modo "Não perturbe". Um InitializationException contém um CameraUnavailableException que será definido como o ListenableFuture do resultado da inicialização, em vez de falhar o aplicativo. (I9909a, b/149413835, links em inglês)

Camera-View versão 1.0.0-alpha12

10 de junho de 2020

androidx.camera:camera-view:1.0.0-alpha12 é lançado. A versão 1.0.0-alpha12 contém estas confirmações (link em inglês).

Correções de bugs

  • Adição da API PreviewView#getBitmap() para retornar uma representação de bitmap do conteúdo exibido na superfície de visualização. (I9b500, b/157659818, links em inglês)

Camera-Extensions versão 1.0.0-alpha11

27 de maio de 2020

androidx.camera:camera-extensions:1.0.0-alpha11 é lançado. A versão 1.0.0-alpha11 contém estas confirmações (link em inglês).

Camera-View versão 1.0.0-alpha12

10 de junho de 2020

androidx.camera:camera-view:1.0.0-alpha12 é lançado. A versão 1.0.0-alpha12 contém estas confirmações (link em inglês).

Novos recursos

Mudanças na API

Correções de bugs

  • Adição da API PreviewView#getBitmap() para retornar uma representação de bitmap do conteúdo exibido na superfície de visualização. (I9b500, b/157659818, links em inglês)

Camera-View versão 1.0.0-alpha11

27 de maio de 2020

androidx.camera:camera-view:1.0.0-alpha11 é lançado. A versão 1.1.0-alpha11 contém estas confirmações (link em inglês).

Mudanças na API

  • Adição da API PreviewView#getPreviewStreamState para permitir aos apps observar se a visualização está em streaming ou não. Quando o PreviewView está no modo TEXTURA_VIEW, o estado STREAMING também garante a visibilidade da imagem de visualização. (Ic0906, b/154652477, links em inglês)
  • Adição da API PreviewView#setDeviceRotationForRemoteDisplayMode() para fornecer rotação de dispositivos para cálculos de transformação se o aplicativo estiver em execução no modo de exibição remota. (I59b95, b/153514525, links em inglês)

Correções de bugs

  • Foi corrigido o problema de distorção da visualização em câmeras FULL/LIMITED/LEVEL_3 com o Android 7.0 e versões anteriores. Uso forçado do modo ImplementationMode#TEXTURE_VIEW quando a versão do Android é 7.0 ou anterior. (I83e30, b/155085307, links em inglês)
  • Remoção do parâmetro CameraInfo de PreviewView#createSurfaceProvider(). Agora, PreviewView o recupera internamente de SurfaceRequest. (If18f0, b/154652477, links em inglês)
  • Correção da proporção padrão do VideoCapture para 16:9 no CameraView. (Ie6a7b, b/153237864, links em inglês)
  • Correção dos problemas de tela preta de PreviewView ao deslizar o fragmento Preview e depois de volta para o ViewPager2. Também foi corrigido o problema quando removeView(previewview) e depois addView(previewView). (Iab555, b/149877652, b/14354615, links em inglês)
  • Atualize a API CameraView#takePicture() para que seja possível salvar imagens em Uri e OutputStream. Atualize o app de teste para usar Uri como exemplo canônico. (Ia2459, b/153607583, links em inglês)
  • Você pode configurar o tipo de escala de PreviewView a partir de um layout XML ao definir o atributo ScaleType. (I08565, b/153015659, link em inglês)
  • O CameraView.ScaleType foi removido. Em vez disso, use PreviewView.ScaleType para definir/receber um tipo de escala com o CameraView. (Ia8974, b/153014831, links em inglês)
  • Defina uma cor de plano de fundo para PreviewView, se ainda não tiver uma. Isso impede o conteúdo por trás dele de ser visível antes do início da visualização do stream. (I09fad, link em inglês)

Camera-Extensions versão 1.0.0-alpha10

15 de abril de 2020

Lançamento do androidx.camera:camera-extensions:1.0.0-alpha10. A versão 1.0.0-alpha10 contém estas confirmações (link em inglês).

Correções de bugs

  • Correções para oferecer compatibilidade com o lançamento do Camera-Core

Camera-View versão 1.0.0-alpha10

15 de abril de 2020

Lançamento do androidx.camera:camera-view:1.0.0-alpha010. A versão 1.0.0-alpha10 contém estas confirmações (link em inglês).

Correções de bugs

  • Correção de um problema conhecido em que a implementação do SurfaceView de PreviewView não funcionava bem em alguns dispositivos e causava falha no app após retomar a visualização. (I5ed6b, link em inglês)

Camera-Extensions versão 1.0.0-alpha09

1º de abril de 2020

Lançamento do androidx.camera:camera-extensions:1.0.0-alpha09. A versão 1.0.0-alpha09 contém estas confirmações (link em inglês).

Correções de bugs

  • Atualização para oferecer compatibilidade com as correções de bugs nos artefatos camera-camera2:1.0.0-beta02, camera-core:1.0.0-beta02 e camera-lifecycle:1.0.0-beta02

Camera-View versão 1.0.0-alpha09

1º de abril de 2020 Lançamento do androidx.camera:camera-view:1.0.0-alpha09. A versão 1.0.0-alpha09 contém estas confirmações (link em inglês).

Problemas conhecidos

  • É possível que o ImplementationMode.SURFACE_VIEW com PreviewView não funcione bem em alguns dispositivos, porque a SurfaceView usada para visualização invalida a plataforma quando o ciclo de vida da janela é interrompido. Ao reiniciar, a câmera é aberta novamente e pode tentar retomar a visualização antes que a plataforma de SurfaceView seja válida novamente. Por enquanto, use ImplementationMode.TEXTURE_VIEW.

Mudanças na API

  • PreviewView.setImplementationMode() foi renomeado como PreviewView.setPreferredImplementationMode().
  • PreviewView.getImplementationMode() foi renomeado como PreviewView.getPreferredImplementationMode().
  • Substituição de PreviewView.getSurfaceProvider() por PreviewView.createSurfaceProvider(CameraInfo), que usa uma instância CameraInfo anulável para otimizar a visualização usando ImplementationMode.SURFACE_VIEW sempre que possível. Se uma instância nula for transmitida ou o modo de implementação preferencial for definido como ImplementationMode.TEXTURE_VIEW, ImplementationMode.TEXTURE_VIEW será usado internamente.
  • A amostra de código a seguir demonstra como um caso de uso de visualização era usado anteriormente com o PreviewView.

    preview.setSurfaceProvider(previewView.previewSurfaceProvider)
    cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, preview)
    

    Agora, você pode escrever o seguinte:

    val camera = cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, preview)
    previewView.preferredImplementationMode = ImplementationMode.TEXTURE_VIEW
    preview.setSurfaceProvider(previewView.createSurfaceProvider(camera.cameraInfo))
    
  • A anotação @UiThread foi adicionada a PreviewView.getSurfaceProvider(), o que significa que ela precisa ser chamada a partir da linha de execução principal. (I5977f, link em inglês)

  • Adição de PreviewView.setScaleType(), que permite definir o tipo de escala da visualização. Ela aceita um dos valores em PreviewView.ScaleType e assume PreviewView.ScaleType.FILL_CENTER como padrão.

  • Adição do PreviewView.getScaleType().

  • Remoção da compatibilidade com a configuração do modo de implementação de PreviewView em um layout XML que usa o atributo implementationMode.

  • Adição da API createMeteringPointFactory() ao PreviewView para oferecer compatibilidade com a conversão (x, y) em PreviewView para MeteringPoint. (IB36d7, link em inglês)

Correções de bugs

  • Correção de casos em que uma visualização incorreta é exibida após a mudança do tamanho de PreviewView. (I71101, link em inglês)

Camera-Extensions versão 1.0.0-alpha08

26 de fevereiro de 2020

Lançamento do androidx.camera:camera-extensions:1.0.0-alpha08. A versão 1.0.0-alpha08 contém estas confirmações (link em inglês).

Camera-View versão 1.0.0-alpha08

26 de fevereiro de 2020

Lançamento do androidx.camera:camera-view:1.0.0-alpha08. A versão 1.0.0-alpha08 contém estas confirmações (link em inglês).

Correções de bugs

  • Em SurfaceRequest.provideSurface(), ListenableFuture foi substituído por Executor e Callback. Isso simplifica a API ao não exigir mais o processamento de exceções em provideSurface() e restringe que o callback provideSurface() não possa ser cancelado. O objetivo é evitar falhas em dispositivos mais antigos, causadas pelo lançamento prematuro de plataformas. O objeto SurfaceRequest.Result agora é usado para rastrear como uma SurfaceRequest usa a Surface fornecida. (I7731b, link em inglês).
  • SurfaceRequest.setSurface(Surface) foi renomeado como SurfaceRequest.provideSurface(Surface), e SurfaceRequest.setWillNotComplete() foi renomeado como SurfaceRequest.willNotProvideSurface(). (I224fe, link em inglês).
  • Correção da inicialização de variantes do app com o ProGuard ativado, preservando a sinalização que define o provedor CameraXConfig padrão. (I2d6c1, link em inglês).

Camera-Extensions versão 1.0.0-alpha07

10 de fevereiro de 2020

Lançamento do androidx.camera:camera-extensions:1.0.0-alpha07. A versão 1.0.0-alpha07 contém estas confirmações (link em inglês).

Correções de bugs

  • Os argumentos que anteriormente eram transmitidos em ImageCapture.OnImageSavedCallback.onError() e ImageCapture.OnImageCapturedCallback.onError() foram substituídos por um único argumento ImageCaptureException, que ainda contém todas as informações transmitidas anteriormente.
  • O argumento do arquivo anteriormente transmitido em ImageCapture.OnImageSavedCallback.onImageSaved() foi removido. (I750d2, link em inglês)

Camera-View versão 1.0.0-alpha07

10 de fevereiro de 2020

Lançamento do androidx.camera:camera-view:1.0.0-alpha07. A versão 1.0.0-alpha07 contém estas confirmações (link em inglês).

Mudanças na API

  • A implementação TextureView do PreviewView agora define o tamanho de TextureView como o tamanho de saída do sensor da câmera antes de dimensioná-lo para preencher a PreviewView mãe. Caso você queira que a visualização da câmera preencha uma parte inteira da IU (a tela inteira, por exemplo), não defina o tamanho de PreviewView como um valor fixo nem faça com que ele agrupe o conteúdo, por exemplo, usando o atributo "wrap_content". Isso pode fazer com que a visualização da câmera só preencha parte de PreviewView, caso o tamanho de saída do sensor da câmera seja menor. Em vez disso, defina o tamanho de PreviewView para que seja igual ao do pai, por exemplo, usando o atributo "match_parent". (1204869, link em inglês)

Correções de bugs

  • Atualização de ImageCapture para que seja possível salvar imagens em Uri e OutputStream. Os métodos takePicture sobrecarregados foram unificados em apenas um. Atualização do app de teste para usar Uri como exemplo canônico. (Ia3bec, link em inglês)
  • Preview.PreviewSurfaceProvider foi renomeado como Preview.SurfaceProvider. Os SurfaceProvider não exigem mais que os desenvolvedores criem os próprios ListenableFuture, e as Surfaces passaram a ser fornecidas por meio de um novo objeto SurfaceRequest. O método Preview.getPreviewSurfaceProvider() foi removido devido ao potencial de uso indevido quando Preview está pareado com outras classes, como PreviewView. (I20105, link em inglês)
  • Os argumentos que anteriormente eram transmitidos em ImageCapture.OnImageSavedCallback.onError() e ImageCapture.OnImageCapturedCallback.onError() foram substituídos por um único argumento ImageCaptureException, que ainda contém todas as informações transmitidas anteriormente.
  • O argumento do arquivo anteriormente transmitido em ImageCapture.OnImageSavedCallback.onImageSaved() foi removido. (I750d2, link em inglês)
  • Atualização da API, com os métodos getZoomRatio(), getMaxZoomRatio(), getMinZoomRatio() e getLinearZoom() de junção da CameraInfo em getZoomState(), que retorna uma instância ZoomState. (Ib19fe, link em inglês)

Camera-Extensions versão 1.0.0-alpha06

22 de janeiro de 2020

Lançamento de androidx.camera:camera-extensions:1.0.0-alpha06. A versão 1.0.0-alpha06 contém estas confirmações (link em inglês).

Atualizações

  • Várias correções e atualizações compatíveis com as mudanças de Camera Core e Camera2.

Camera-View Versão 1.0.0-alpha06

22 de janeiro de 2020

Lançamento de androidx.camera:camera-view:1.0.0-alpha06. A versão 1.0.0-alpha06 contém estas confirmações (link em inglês).

Atualizações

  • Várias correções e atualizações compatíveis com as mudanças de Camera Core e Camera2.

Camera-Extensions Versão 1.0.0-alpha05

18 de dezembro de 2019

Lançamento de androidx.camera:camera-extensions:1.0.0-alpha05. A versão 1.0.0-alpha05 contém estas confirmações (link em inglês).

Correções de bugs

  • Atualizado para corresponder às APIs internas do Camera Core.

Camera-View Versão 1.0.0-alpha05

18 de dezembro de 2019

Lançamento de androidx.camera:camera-view:1.0.0-alpha05. A versão 1.0.0-alpha05 contém estas confirmações (link em inglês).

Problemas conhecidos

  • A proporção pode estar incorreta ao usar o PreviewView (b/146215202, link em inglês).

Novos recursos

  • Implementação de uma nova classe chamada PreviewView.TextureViewImplementation, que sincroniza o ciclo de vida do SurfaceTexture com o uso da superfície TextureView pela câmera.

Camera-Extensions Versão 1.0.0-alpha04

4 de dezembro de 2019

Lançamento de androidx.camera:camera-extensions:1.0.0-alpha04. A versão 1.0.0-alpha04 do camera-extensions contém estas confirmações (link em inglês).

Mudanças na API

  • A verificação de disponibilidade e a ativação de uma extensão agora aceitam CameraSelector como parâmetro de entrada. Ele precisa ser o mesmo CameraSelector usado para vincular o caso de uso.

    val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA
    val builder = ImageCapture.Builder()
    val bokehImageCaptureExtender = BokehImageCaptureExtender.create(builder)
    if (bokehImageCaptureExtender.isExtensionAvailable(cameraSelector)) {
        bokehImageCaptureExtender.enableExtension(cameraSelector)
    }
    val imageCapture = builder.build()
    mCameraProvider?.bindToLifecycle(this, cameraSelector, imageCapture)
    
  • Você precisa inicializar as extensões antes de usar a biblioteca de extensões.

    val availability = ExtensionsManager.init()
    Futures.addCallback<ExtensionsManager.ExtensionsAvailability>(
       availability,
       object : FutureCallback<ExtensionsManager.ExtensionsAvailability> {
           override fun onSuccess(availability: ExtensionsManager.ExtensionsAvailability?) {
               // Ready to make extensions calls
           }
           override fun onFailure(throwable: Throwable) {
               // Extensions could not be initialized
           }
       },
       Executors.newSingleThreadExecutor()
    )
    

Camera-View Versão 1.0.0-alpha04

4 de dezembro de 2019

Lançamento de androidx.camera:camera-view:1.0.0-alpha04. A versão 1.0.0-alpha04 do camera-view contém estas confirmações (link em inglês).

Mudanças na API

  • Uma classe PreviewView é fornecida para exibir facilmente a saída do caso de uso de Preview em um aplicativo.
  • PreviewView pode ser incluído no layout:

    <androidx.camera.view.PreviewView
      android:id="@+id/preview_view"
      … />
    
  • PreviewView fornece um PreviewSurfaceProvider para conectar facilmente um caso de uso de Preview.

    preview.setPreviewSurfaceProvider(previewView.previewSurfaceProvider)
    
  • "ZoomLevel" agora é "ZoomRatio" em API-naming.

  • Alguns parâmetros de método mudaram de nulidade.

Camera-Extensions e Camera-View Versão 1.0.0-alpha03

9 de outubro de 2019

Lançamento de androidx.camera:camera-extensions:1.0.0-alpha03 e androidx.camera:camera-view:1.0.0-alpha03. Estas são as confirmações incluídas em camera-extensions:1.0.0-alpha03 e estas são as confirmações incluídas em camera-view:1.0.0-alpha03.

Novos recursos

  • Adição do inicializador de contexto para extensões. Versão das extensões incrementada para 1.1.0

Camera-Extensions and Camera-View Versão 1.0.0-alpha02

5 de setembro de 2019

Lançamento de androidx.camera:camera-extensions:1.0.0-alpha02 e androidx.camera:camera-view:1.0.0-alpha02. Estas são as confirmações incluídas em camera-extensions:1.0.0-alpha02 e estas são as confirmações incluídas em camera-view:1.0.0-alpha02.

  • Adição de testes para verificar se PreviewImageProcessorImpl implementou corretamente os carimbos de data/hora.
  • Correção da falha de teste de ExtensionTest no Nexus 5 (API de nível 21) e garantia de que a visualização esteja disponível.

Camera-Extensions e Camera-View versão 1.0.0-alpha01

7 de agosto de 2019

Lançamento de androidx.camera:camera-extensions:1.0.0-alpha01 e androidx.camera:camera-view:1.0.0-alpha01. Estas são as confirmações incluídas em camera-extensions:1.0.0-alpha01 e estas são as confirmações incluídas em camera-view:1.0.0-alpha01 (links em inglês).

  • Nova biblioteca para futuras extensões de câmera, para acessar efeitos em dispositivos compatíveis. Essa biblioteca ainda está em andamento.
  • Nova classe de visualização da câmera. Essa biblioteca ainda está em andamento.