mirino della fotocamera

  
Mirino basato su View e Composable autonomo per la fotocamera"

Questa tabella elenca tutti gli artefatti nel gruppo androidx.camera-viewfinder.

Elemento Release stabile Candidato per la release Release beta Release alpha
viewfinder-compose 1.5.0 - - 1.4.0-alpha13
viewfinder-core 1.5.0 - - 1.4.0-alpha13
viewfinder-view 1.5.0 - - 1.4.0-alpha13
Questa libreria è stata aggiornata l'ultima volta il 10 settembre 2025.

Dichiara le dipendenze

Per aggiungere una dipendenza da camera-viewfinder, devi aggiungere il repository Maven di Google al tuo progetto. Per saperne di più, consulta il repository Maven di Google.

Aggiungi le dipendenze per gli artefatti necessari nel file build.gradle per la tua app o il tuo modulo:

Groovy

dependencies {
    // Use to implement camera viewfinders
    
    implementation "androidx.camera.viewfinder:viewfinder-view:1.5.0"
    implementation "androidx.camera.viewfinder:viewfinder-compose:1.5.0"
    implementation "androidx.camera.viewfinder:viewfinder-core:1.5.0"

}

Kotlin

dependencies {
    // Use to implement camera viewfinders
    implementation("androidx.camera.viewfinder:viewfinder-view:1.5.0")
    implementation("androidx.camera.viewfinder:viewfinder-core:1.5.0")
    implementation("androidx.camera.viewfinder:viewfinder-compose:1.5.0")


}

Per saperne di più sulle dipendenze, consulta Aggiungi dipendenze di build.

Feedback

Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa libreria. Prima di segnalare un nuovo problema, dai un'occhiata ai problemi esistenti in questa raccolta. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.

Crea un nuovo problema

Per ulteriori informazioni, consulta la documentazione di Issue Tracker.

Versione 1.5

Versione 1.5.0

10 settembre 2025

androidx.camera.viewfinder:viewfinder-compose:1.5.0, androidx.camera.viewfinder:viewfinder-core:1.5.0 e androidx.camera.viewfinder:viewfinder-view:1.5.0 sono stati rilasciati. La versione 1.5.0 contiene questi commit.

Modifiche importanti dalla versione 1.4.0:

Questa è la prima release stabile della libreria Camera Viewfinder, che fornisce API robuste, consapevoli del ciclo di vita e facili da usare basate su View e Compose. Questi componenti sono progettati per fungere da mirino della fotocamera e possono essere integrati direttamente con Camera2.

Questa release pone anche le basi per il nuovo artefatto androidx.camera:camera-compose, che introduce CameraXViewfinder, un mirino idiomatico di Compose che si integra perfettamente con CameraX SurfaceRequest, in modo simile al funzionamento di PreviewView per i layout basati su View. Alcune delle modifiche più importanti includono:

  • Rilocazione degli artefatti:per migliorare la modularità, gli artefatti del mirino sono stati spostati nel proprio gruppo di librerie. Gli sviluppatori che utilizzavano in precedenza le dipendenze androidx.camera:camera-viewfinder* devono eseguire la migrazione a androidx.camera.viewfinder:viewfinder-*.
  • Stabilizzazione e perfezionamenti dell'API:la superficie dell'API è stata perfezionata per questa release stabile. Ciò include la ridenominazione di CameraViewfinder in ViewfinderView per riflettere meglio la sua versatilità, la riorganizzazione dei pacchetti per maggiore chiarezza e la trasformazione di ViewfinderSurfaceRequest in un tipo di dati immutabile per una gestione dello stato più prevedibile.
  • Aggiornamenti dell'API Compose: l'API Compose Viewfinder ora supporta ContentScale e Alignment per un controllo granulare su come viene visualizzato lo stream della videocamera all'interno del suo contenitore, rispecchiando il comportamento del composable androidx.compose.foundation.Image standard.
  • Surface Lifecycle Management:ViewfinderSurfaceSession ora viene mantenuto attivo durante le modifiche alla configurazione e gli eventi del ciclo di vita su API 29 e versioni successive. Questa modifica è progettata per ridurre i frame persi e offrire un'esperienza utente più fluida.
  • Valori predefiniti della modalità di implementazione:ora Viewfinder è impostato per impostazione predefinita su un ImplementationMode intelligente che seleziona automaticamente l'implementazione sottostante migliore. Dà la priorità a SurfaceView (modalità EXTERNAL) ad alte prestazioni e torna in modo controllato a TextureView (modalità EMBEDDED) più compatibile su livelli API precedenti o dispositivi con problemi di compatibilità noti. Questo comportamento può comunque essere ignorato per consentire agli sviluppatori di avere il controllo completo.

Correzioni di bug

  • Il composable Viewfinder ora funziona correttamente all'interno di Pager di Compose e con movableContentOf(), garantendo che la superficie venga reimpostata e gestita correttamente in scenari di UI complessi. (I0d9be, I79432)
  • È stato risolto un problema su Android 10 e 11 per cui l'elemento Viewfinder basato su SurfaceView poteva apparire allungato quando venivano applicate trasformazioni. (Icc77c)

Versione 1.5.0-rc01

13 agosto 2025

androidx.camera.viewfinder:viewfinder-compose:1.5.0-rc01, androidx.camera.viewfinder:viewfinder-core:1.5.0-rc01 e androidx.camera.viewfinder:viewfinder-view:1.5.0-rc01 sono stati rilasciati. La versione 1.5.0-rc01 contiene questi commit.

Correzioni di bug

Versione 1.5.0-beta03

16 luglio 2025

androidx.camera.viewfinder:viewfinder-compose:1.5.0-beta03, androidx.camera.viewfinder:viewfinder-core:1.5.0-beta03 e androidx.camera.viewfinder:viewfinder-view:1.5.0-beta03 sono stati rilasciati. La versione 1.5.0-beta03 contiene questi commit.

Correzioni di bug

  • Il ImplementationMode predefinito per Viewfinder (sia basato su Compose che su View) ora seleziona in modo intelligente tra EXTERNAL (per il rendimento) e EMBEDDED (per la compatibilità con API precedenti/dispositivi particolari). Questo comportamento può comunque essere sostituito da impostazioni esplicite in ViewfinderSurfaceRequest o da attributi XML (nell'API basata su View). (Iecd3a)
  • Gestione migliorata delle sessioni di Surface consentendo di mantenere attivo ViewfinderSurfaceSession durante i cicli di vita di creazione/eliminazione di Surface quando si utilizza TextureView o SurfaceView su API 29+. (I112d9)
  • Ora Viewfinder garantisce che le superfici vengano rilasciate al momento giusto, solo quando non sono più in uso nella sessione, anziché sempre quando viene eliminato il composable. Per EXTERNAL (SurfaceView), questo comportamento è attualmente disponibile solo sull'API 29+. Per EMBEDDED (TextureView), questo comportamento è presente in tutti i livelli API. (I9a03f)
  • Ora Viewfinder gestisce correttamente la sostituzione della superficie in scenari come quando un mirino EXTERNAL a livello API 28 o inferiore si sposta fuori dallo schermo o se un Viewfinder (con qualsiasi ImplementationMode) fa parte di moveableContentOf(). (I79432)
  • Il composable Viewfinder ora funziona correttamente con Pager di Compose. Questa modifica garantisce che il componente componibile possa essere reimpostato correttamente implementando il callback onReset di AndroidView, supportando le implementazioni EMBEDDED e EXTERNAL. (I0d9be)
  • Corregge un problema su Android 10/11 in cui EXTERNAL Viewfinder potrebbe apparire allungato o errato a causa dell'applicazione troppo precoce di operazioni di trasformazione (come scalatura o traslazione). Il sistema ora attende la creazione della superficie prima di applicare queste trasformazioni nella fase di layout, garantendo un output corretto. (Icc77c)

Versione 1.5.0-beta02

4 giugno 2025

androidx.camera.viewfinder:viewfinder-compose:1.5.0-beta02, androidx.camera.viewfinder:viewfinder-core:1.5.0-beta02 e androidx.camera.viewfinder:viewfinder-view:1.5.0-beta02 sono stati rilasciati. La versione 1.5.0-beta02 contiene questi commit.

Versione 1.5.0-beta01

7 maggio 2025

androidx.camera.viewfinder:viewfinder-compose:1.5.0-beta01, androidx.camera.viewfinder:viewfinder-core:1.5.0-beta01 e androidx.camera.viewfinder:viewfinder-view:1.5.0-beta01 sono stati rilasciati. La versione 1.5.0-beta01 contiene questi commit.

  • Questa è la prima release beta ufficiale dei mirini basati su visualizzazione e composizione, sufficientemente flessibili da essere utilizzati con Camera2. Se cerchi una View o un elemento componibile da utilizzare con CameraX, consulta PreviewView e CameraXViewfinder.

Nuove funzionalità

  • ContentScale e Alignment ora possono essere utilizzati nel mirino basato sulla composizione per scalare e posizionare la superficie visualizzata all'interno del contenitore, in modo simile al comportamento di androidx.compose.foundation.Image. (Ibcea3)

Modifiche alle API

  • TransformationInfo ora ha valori predefiniti per tutti gli argomenti. In questo modo, i mirini possono essere creati senza TransformationInfo, che per impostazione predefinita avrà una rotazione della sorgente pari a 0, nessun mirroring della sorgente e nessun rettangolo di ritaglio. (I2b1b2)
  • Composable Viewfinder ora accetta una lambda finale per ricevere una sessione di Surface, in modo simile a AndroidExternalSurface. La funzione lambda fornita utilizza ViewfinderInitScope come destinatario, il che consente di installare un callback per ricevere nuove sessioni di Surface. Queste sessioni di superficie rilasciano automaticamente le risorse detenute dal mirino quando escono dall'ambito. (Ib2b0d)
  • ViewfinderSurfaceRequest.Builder.populateFromCharacteristics è stato rimosso e sostituito con un insieme equivalente di API statiche che possono essere utilizzate per generare TransformationInfo, che produrrà la stessa trasformazione di populateFromCharacteristics. Questi metodi statici vengono aggiunti alla classe Camera2TransformationInfo. (Idc6af)
  • ViewfinderSurfaceRequest non include più API asincrone per il recupero della superficie. Ora è un tipo di dati immutabile. Le API per il recupero della superficie sono state spostate nel mirino. (I30127)
  • CameraViewfinder è stato rinominato in ViewfinderView in modo che la denominazione sia in linea con quella del composable Viewfinder e per indicare che può essere utilizzato con più di una sorgente della videocamera. (Id9e6b)
  • I corsi di viewfinder-view sono stati spostati nel sottopacchetto androidx.camera.viewfinder.view dal pacchetto androidx.camera.viewfinder. (I6cb44)
  • Sono state aggiunte nuove API al mirino basato sulla visualizzazione che consentono di impostare la rotazione, il mirroring e il rettangolo di ritaglio della sorgente. Questa classe TransformationInfo è la stessa utilizzata da Viewfinder basato su Compose. (I907c3)
  • Il mirino basato sulla visualizzazione ora utilizza nuove API ViewfinderSurfaceRequest che non gestiscono più internamente la risposta di Surface. Anziché restituire ListenableFuture<Surface>, le API requestSurfaceSession() ora restituiscono ListenableFuture<ViewfinderSurfaceSession>, che restituisce una classe AutoCloseable che, una volta chiusa, si comporta allo stesso modo della chiamata alla vecchia API di ViewfinderSurfaceRequest.markSurfaceSafeToRelease(). In questo modo, le responsabilità tra la richiesta e la risposta della superficie sono più chiaramente separate. (I19041)

Versione 1.4

Versione 1.4.0-alpha13

26 febbraio 2025

androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha13, androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha13 e androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha13 sono stati rilasciati. La versione 1.4.0-alpha13 contiene questi commit.

Versione 1.4.0-alpha12

15 gennaio 2025

androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha12, androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha12 e androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha12 sono stati rilasciati. La versione 1.4.0-alpha12 contiene questi commit.

Nuove funzionalità

  • È stato eseguito l'upgrade di compileSdk a 35 per l'utilizzo dell'API correlata ad Android 15. Le app che utilizzano le librerie CameraX dovranno anche eseguire l'upgrade dell'impostazione di configurazione compileSdk. (Ic80cd)
  • Questa libreria ora utilizza le annotazioni di nullabilità JSpecify, che sono di tipo use. Gli sviluppatori Kotlin devono utilizzare il seguente argomento del compilatore per imporre l'utilizzo corretto: -Xjspecify-annotations=strict (questo è il valore predefinito a partire dalla versione 2.1.0 del compilatore Kotlin). (I7bcd7, b/326456246)

Versione 1.4.0-alpha11

11 dicembre 2024

androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha11, androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha11 e androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha11 sono stati rilasciati. La versione 1.4.0-alpha11 contiene questi commit.

Modifiche alle API

  • Le classi viewfinder-core sono state spostate in pacchetti coerenti con la libreria a cui appartengono. (I431c6)
  • CameraViewfinder.ScaleType è stato spostato in viewfinder-core in modo che possa essere riutilizzato con la composizione (I87ef1)
  • Le classi CameraViewfinder deprecate vengono rimosse. Utilizza le nuove API che forniscono funzionalità equivalenti. (I6e59a)

Versione 1.4.0-alpha10

30 ottobre 2024

androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha10, androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha10 e androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha10 sono stati rilasciati. La versione 1.4.0-alpha10 contiene questi commit.

Versione 1.4.0-alpha09

2 ottobre 2024

androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha09, androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha09 e androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha09 sono stati rilasciati. La versione 1.4.0-alpha09 contiene questi commit.

Versione 1.4.0-alpha08

4 settembre 2024

androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha08, androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha08 e androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha08 sono stati rilasciati. La versione 1.4.0-alpha08 contiene questi commit.

Nuove funzionalità

Con l'aggiornamento alla versione 1.4.0-alpha08, l'artefatto del mirino di CameraX è stato spostato nel proprio gruppo di librerie. Questa modifica è necessaria per migliorare la modularità e la manutenibilità della libreria CameraX.

Se in precedenza utilizzavi androidx.camera:camera-viewfinder, androidx.camera:camera-viewfinder-compose o androidx.camera:camera-viewfinder-core, dovrai eseguire la transizione delle dipendenze ai seguenti elementi:

  • androidx.camera:camera-viewfinder -> androidx.camera.viewfinder:viewfinder-view
  • androidx.camera:camera-viewfinder-compose -> androidx.camera.viewfinder:viewfinder-compose
  • androidx.camera:camera-viewfinder-core -> androidx.camera.viewfinder:viewfinder-core

Per eseguire questa transizione non dovrebbero essere necessarie modifiche al codice. Le vecchie coordinate Maven di Viewfinder non riceveranno più aggiornamenti.

Inoltre, se utilizzi Compose con CameraX, è ora disponibile una nuova libreria Compose-first in versione alpha: androidx.camera:camera-compose. Questo fornisce il composable CameraXViewfinder, che è un Viewfinder idiomatico di Compose che adatta SurfaceRequest di CameraX a Compose, in modo simile al funzionamento di PreviewView per le visualizzazioni.