CameraX

CameraX to dodatek do Jetpacka, który ułatwia dodawanie do aplikacji funkcji aparatu. Biblioteka zawiera szereg poprawek zgodności i obejść, które pomagają zapewnić spójne działanie na wielu urządzeniach.

Ta tabela zawiera listę wszystkich artefaktów w grupie androidx.camera.

Artefakt Wersja stabilna Wersja kandydująca do publikacji Wersja beta Wersja alfa
camera-camera2 1.6.2 1.7.0-rc01 - -
camera-core 1.6.2 1.7.0-rc01 - -
camera-compose 1.6.2 1.7.0-rc01 - -
camera-effects 1.6.2 1.7.0-rc01 - -
camera-extensions 1.6.2 1.7.0-rc01 - -
camera-feature-combination-query - - - 1.5.0-alpha06
camera-feature-combination-query-play-services - - - 1.5.0-alpha06
camera-lifecycle 1.6.2 1.7.0-rc01 - -
camera-mlkit-vision 1.6.2 1.7.0-rc01 - -
camera-view 1.6.2 1.7.0-rc01 - -
camera-viewfinder - - 1.3.0-beta02 1.4.0-alpha07
camera-video 1.6.2 1.7.0-rc01 - -
Ostatnia aktualizacja tej biblioteki: 21 października 2026 r.

Testowanie urządzeń

CameraX jest testowana na wielu urządzeniach w naszym laboratorium. Listę urządzeń, które obecnie znajdują się w laboratorium, znajdziesz w artykule Urządzenia przetestowane w laboratorium CameraX.

Deklarowanie zależności

Aby dodać zależność od CameraX, musisz dodać do projektu repozytorium Maven Google. Więcej informacji znajdziesz w repozytorium Maven Google.

Dodaj zależności dla artefaktów, których potrzebujesz, w pliku build.gradle aplikacji lub modułu:

Groovy

dependencies {
  // CameraX core library using the camera2 implementation
  def camerax_version = "1.7.0-rc01"
  // 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 VideoCapture library
  implementation "androidx.camera:camera-video:${camerax_version}"
  // If you want to additionally use the CameraX View class
  implementation "androidx.camera:camera-view:${camerax_version}"
  // If you want to additionally add CameraX ML Kit Vision Integration
  implementation "androidx.camera:camera-mlkit-vision:${camerax_version}"
  // If you want to additionally use the CameraX Extensions library
  implementation "androidx.camera:camera-extensions:${camerax_version}"
}

Kotlin

dependencies {
    // CameraX core library using the camera2 implementation
    val camerax_version = "1.7.0-rc01"
    // 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 VideoCapture library
    implementation("androidx.camera:camera-video:${camerax_version}")
    // If you want to additionally use the CameraX View class
    implementation("androidx.camera:camera-view:${camerax_version}")
    // If you want to additionally add CameraX ML Kit Vision Integration
    implementation("androidx.camera:camera-mlkit-vision:${camerax_version}")
    // If you want to additionally use the CameraX Extensions library
    implementation("androidx.camera:camera-extensions:${camerax_version}")
}

Prześlij opinię

Twoja opinia pomoże nam ulepszyć Jetpacka. Daj nam znać, jeśli znajdziesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki. Przed utworzeniem nowego problemu zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk gwiazdki.

Tworzenie nowego zgłoszenia

Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.

Wizjer aparatu w Compose w wersji 1.0

Wersja 1.0.0-alpha02

12 czerwca 2024 r.

Publikacja androidx.camera:camera-viewfinder-compose:1.0.0-alpha02 Wersja 1.0.0-alpha02 zawiera te zatwierdzenia.

Wersja 1.0.0-alpha01

14 maja 2024 r.

Publikacja androidx.camera:camera-viewfinder-compose:1.0.0-alpha01 Wersja 1.0.0-alpha01 zawiera te zatwierdzenia.

Nowe funkcje

  • Nowa biblioteka. Ta biblioteka wprowadza natywną funkcję kompozycyjną Viewfinder dla Compose, której można używać z CameraX i Camera2. Funkcja kompozycyjna Viewfinder obsługuje różne formaty obrazu i obsługę zdarzeń dotknięcia.

Wizjer aparatu w wersji 1.4

Wersja 1.4.0-alpha07

12 czerwca 2024 r.

Publikacja androidx.camera:camera-viewfinder:1.4.0-alpha07 i androidx.camera:camera-viewfinder-core:1.4.0-alpha07 Wersja 1.4.0-alpha07 zawiera te commity.

Wersja 1.4.0-alpha06

14 maja 2024 r.

Publikacja androidx.camera:camera-viewfinder:1.4.0-alpha06 i androidx.camera:camera-viewfinder-core:1.4.0-alpha06 Wersja 1.4.0-alpha06 zawiera te zmiany.

Zmiany w interfejsie API

  • Zmieniono nazwy typów wyliczeniowych ImplementationMode w Viewfinder, aby lepiej odzwierciedlały podstawowe implementacje, i dodano stałe dla TransformationInfo.sourceRotation. (Ic6149)
  • Dodano ZoomGestureDetector.ZoomEvent, aby uwzględnić stany gestu powiększenia. (I84cdf)

Wersja 1.7

Wersja 1.7.0-rc01

21 października 2026 r.

Publikacja androidx.camera:camera-*:1.7.0-rc01 Wersja 1.7.0-rc01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Zmieniono UseCaseCamera2Interop, ImageCaptureCamera2Interop, SessionConfigCamera2Interop i CameraControlCamera2Interop z interfejsów na klasy abstrakcyjne. (If654e)
  • Rozwiązaliśmy problem z niejednoznacznością Camera2Interop V2 (I1bbe5).

Poprawki błędów

  • Rozwiązaliśmy problem z awarią systemową SIGSEGV w wątku CameraX OpenGL, gdy SurfaceProcessor zwalniał dane wejściowe SurfaceTexture, których SurfaceRequest został usunięty przez moduł czyszczenia pamięci przed zakończeniem. (I76f73, b/563673593)
  • Naprawiliśmy wyciek Surface i awarię systemową OpenGL, które mogły wystąpić podczas czyszczenia pamięci, gdy wykonawca CameraEffect lub HandlerThread został zamknięty przed zamknięciem SurfaceOutput efektu. (Ifcc19, b/558819242)
  • Ulepszone działanie funkcji ulepszania obrazu przy słabym oświetleniu: ulepszanie obrazu przy słabym oświetleniu i latarka działają teraz zgodnie z zasadą „ostatnie ustawienie wygrywa”, co oznacza, że włączenie jednej z nich automatycznie wyłącza drugą, zamiast odrzucać żądanie. Dodatkowo lampa błyskowa może teraz błyskać podczas robienia zdjęć, gdy aktywna jest funkcja ulepszania zdjęć przy słabym oświetleniu. (Ie583f)
  • Zależność androidx.lifecycle:lifecycle-runtime została zaktualizowana do wersji 2.10.0. Ta wersja jest wymagana do uruchamiania kontroli linta w pakiecie środowiska wykonawczego cyklu życia z AGP w wersji 9.5.0-alpha04 lub nowszej. (I99bfd, b/556807521)
  • Obsługa uzyskiwania CameraSelector na kamerach fizycznych z CameraInfo.getPhysicalCameraInfos() i powiązania UseCases z kamerami fizycznymi. Zapytanie o CameraInfo z fizycznym CameraSelector zwraca teraz fizyczny CameraInfo zamiast logicznego CameraInfo. (Ibe7f2)
  • Wyjaśniliśmy w Javadoc OutputOptions.Builder.setLocation, że w metadanych filmu są przechowywane tylko szerokość i długość geograficzna. (I77d3b, b/551348846)
  • Naprawiliśmy błąd w ImageAnalysis, który powodował, że dynamiczna zmiana obrotu danych wyjściowych lub odłączenie przypadku użycia mogły powodować wyciek zasobów Surface/ImageReader. (I25cef)
  • Funkcja CameraInfo.getIntrinsicZoomRatio() zaokrągla teraz zwracany współczynnik do 2 miejsc po przecinku. (Ibe9a8)
  • Złagodzono sprawdzanie HardwareBuffer.isSupported pod kątem formatu PRIVATE w ImageAnalysis, aby zapobiec fałszywie negatywnym wynikom na niektórych urządzeniach. (I347a4, b/545866947)
  • Naprawiliśmy błąd kompilacji w nowszych wersjach JDK podczas rozwiązywania przejściowo importowanych adnotacji typu JSpecify w polach wewnętrznych CameraX. (I00bb4, b/543937345)

Wersja 1.7.0-alpha03

12 sierpnia 2026 r.

Publikacja androidx.camera:camera-*:1.7.0-alpha03 Wersja 1.7.0-alpha03 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Wycofano starsze interfejsy API Camera2Interop (Camera2Interop.Extender, Camera2CameraControl, Camera2CameraInfo i CaptureRequestOptions) na rzecz metod fabrycznych konfiguratora Camera2Interop i funkcji rozszerzenia Kotlin. (Ib0845, b/529609261)
  • Dodano bloki rozszerzeń Kotlin DSL camera2Interop dla preview, imageAnalysis, videoCapture, imageCapture i SessionConfig.Builder, a także funkcję rozszerzenia CameraControl.applyCamera2InteropAsync. (I51af9, b/529609261)
  • Dodano nowe metody fabryczne konfiguratora Camera2Interop (forUseCase, forImageCapture, forSessionConfig, forCameraControl) i odpowiadające im metody setInterop / applyInteropAsync w Preview.Builder, ImageCapture.Builder, ImageAnalysis.Builder, VideoCapture.Builder, SessionConfig.Builder i CameraControl. (I0007b, b/529609261)
  • Dodano metody pomocnicze do Camera2Interop i odpowiednie właściwości rozszerzenia Kotlin (CameraInfo.cameraId, CameraInfo.cameraCharacteristics i String.toCameraSelector()), aby pobierać identyfikator i charakterystykę aparatu Camera2 z CameraInfo. (I11803, b/529609261)
  • Dodano interfejsy API Preview.setMirrorMode, Preview.getMirrorMode i VideoCapture.setMirrorMode do publicznych interfejsów API i usunięto adnotację ExperimentalMirrorMode. (I4ed60, b/519794349, b/470629643)
  • Dodano kreatory Kotlin DSL preview { ... }, imageCapture { ... }, imageAnalysis { ... } i videoCapture { ... } do tworzenia UseCases. (I91df9, b/530013719)
  • Zmieniono ImagePlane.buffer na ByteBuffer, który nie może mieć wartości null. (I98593)
  • Wycofano metody pobierające właściwości w SessionConfig.Builder, HighSpeedVideoSessionConfig.Builder i ExtensionSessionConfig.Builder w Kotlin DSL, aby wymusić właściwości tylko do zapisu. (I2875b, b/534570559)

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że powiązanie wielu przypadków użycia Preview z OverlayEffect powodowało błąd dostarczania jednego strumienia podglądu. (I7a383, b/532577546, b/532924417)
  • Rozwiązaliśmy problem, który powodował, że urządzenia Recording.pause() i Recording.resume() ulegały awarii podczas przełączania aparatów w trakcie ciągłego nagrywania filmu. (I71004, b/532327691, b/367121726)
  • Naprawiliśmy błędy HAL występujące podczas korzystania z funkcji Zero-Shutter Lag (ZSL) przy powiększaniu obrazu poza fizyczne granice aparatu na urządzeniach z wieloma aparatami. (I1c374, b/527782712, b/514757157)
  • Rozwiązaliśmy problem, który mógł powodować błąd podczas nagrywania filmów HDR na urządzeniach Samsung Galaxy S25, S26 i Fold 7. (Ic0827, b/529618629)

Wersja 1.7.0-alpha02

1 lipca 2026 r.

Publikacja androidx.camera:camera-*:1.7.0-alpha02 Wersja 1.7.0-alpha02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • CameraXViewfinder obsługuje teraz wbudowane gesty rozsuwania i ściągania palców w celu powiększenia oraz dotknięcia w celu ustawienia ostrości, a także dodaje obsługę błysku na ekranie i stanu strumienia. Metoda FocusState jest teraz publiczna w viewfinder-core, aby umożliwić monitorowanie wyników ustawiania ostrości po dotknięciu. (I66a17, b/522549890)
  • Dodano isAutoRotationEnabled do SessionConfig.Builder , HighSpeedVideoSessionConfig.Builder, ExtensionSessionConfig.Builder i wprowadzono dla nich funkcje fabryczne Kotlin DSL. Umożliwia to automatyczne ustawianie odpowiedniego obrotu na podstawie czujników urządzenia. (I5b4a3, b/510752515)
  • Dodano właściwość TransformationMode do TransformationInfo, aby umożliwić aplikacjom korzystanie z potoku OpenGL w trybie EMBEDDED. (Id1de1, b/487826941)
  • Dodano isNightModeIndicatorSupported() i getNightModeIndicator() do CameraInfo, aby określić, kiedy warunki otoczenia spełniają kryteria trybu nocnego. (Iae47b, b/499389465)
  • Udostępniono ImageAnalysis.OUTPUT_IMAGE_FORMAT_PRIVATE i ImageProxy.getHardwareBuffer() jako publiczny interfejs API do obsługi ImageAnalysis opartego na GPU. (I41cb3, b/496022391, b/492934501)
  • Metoda ExtensionsManager#getExtensionEnabledCameraSelector została wycofana. Aby włączyć tryby rozszerzeń, użyj nowego interfejsu ExtensionSessionConfig API. (I2b336, b/473715607)
  • Dodaliśmy obsługę stylów wizualnych klatek z kamery podczas jednoczesnej kompozycji obrazu z kamery. Możesz teraz dostosować:
  • Zaokrąglone rogi: użyj metody setRoundedCornerRatio(float), aby zastosować znormalizowane zaokrąglenie (od 0,0 do 1,0) do krawędzi ramki.
  • Obramowania: użyj metod setBorderWidthRatio(float) i setBorderColor(int), aby dodać ozdobną ramkę o stałej grubości (I18a07, b/366349205).
  • Zaktualizowano CompositionSettings, aby wymusić nieujemną kolejność osi Z, i dodano walidację do ConcurrentCamera.setCompositionSettings, aby zapewnić wywoływanie z prawidłową liczbą ustawień w prawidłowym trybie kompozycji. (If660d, b/496951658)
  • Dodano metody getNightModeIndicator() i isNightModeIndicatorAvailable() do CameraExtensionsInfo, aby umożliwić aplikacjom sprawdzanie, czy bieżące środowisko jest w trybie nocnym podczas korzystania z rozszerzeń aparatu. (I62bb4, b/499389465)
  • Dodaliśmy obsługę jakości filmu QHD w VideoCapture. (I0ac20, b/501305592)
  • Dodano Recorder.Builder.setTargetAudioChannelCount(int) i Recorder.getTargetAudioChannelCount(), aby umożliwić deweloperom ustawienie konkretnej liczby kanałów audio. (I6bee0, b/441895100)
  • Dodano Recorder.Builder.setTargetAudioEncodingBitRate(int), aby umożliwić ustawienie docelowej szybkości transmisji bitów kodowania dźwięku. (I29062, b/241151504)
  • Dodano interfejs API ConcurrentCamera.setCompositionSettings, aby umożliwić aplikacjom dynamiczne aktualizowanie kompozycji bieżącej kamery po powiązaniu cyklu życia. Dodatkowo nowy interfejs API setZOrder w CompositionSettings.Builder umożliwia precyzyjne kontrolowanie kolejności renderowania nakładających się strumieni z kamery. (I90528, b/473702287)
  • Wprowadziliśmy interfejsy API umożliwiające szczegółową kontrolę nad formatami kodowania. Deweloperzy mogą teraz wykrywać formaty obsługiwane przez urządzenie za pomocą funkcji Recorder.getSupportedVideoMimeTypes() i getSupportedAudioMimeTypes(), które są obecnie w fazie eksperymentalnej. Preferowane formaty można skonfigurować za pomocą Recorder.Builder.setVideoMimeType() i setAudioMimeType(). Dodatkowo Recorder.getVideoCapabilities(CameraInfo, String) umożliwia wysyłanie zapytań o funkcje aparatu, takie jak obsługiwane jakości i zakresy dynamiczne, w przypadku wybranego kodeka (I4620e, b/491319384).
  • Dodaliśmy metodę CameraController.setAutoRotationEnabled(boolean), aby umożliwić wyłączenie detektora automatycznego obracania urządzenia. (Ia0c03, b/449573627)
  • Dodano obsługę blokowania AE/AWB w FocusMeteringAction za pomocą nowego interfejsu API setLockingMode. Umożliwia to również aktualizowanie regionów 3A bez blokowania ostrości, dzięki czemu aparat może pozostać w trybie ciągłego autofokusa podczas aktualizowania obszaru ostrości. (I6416f, b/481624745)

Poprawki błędów

  • Usuń wymaganie dotyczące compileSdk 37 (If78b4)
  • Naprawiliśmy CameraXViewfinder problemów z przekształcaniem w trybie EMBEDDED, gdy potok OpenGL jest włączony przez CameraX w celu powiązania większej liczby UseCases lub przetwarzania powierzchni. (I3e637, b/487826941)
  • Zaktualizowano testy i aktywności, aby używały ExtensionSessionConfig zamiast wycofanego interfejsu API getExtensionEnabledCameraSelector. (I765d8, b/473715607)
  • Naprawiliśmy błąd kompilacji „Nie można uzyskać dostępu do klasy «ListenableFuture»”. (Ic8cba, b/497571473)
  • Zaktualizowano compileSdk w Compose do interfejsu API 37. Oznacza to, że w przypadku korzystania z Compose wymagana jest wersja AGP 9.2.0 lub nowsza. (Id45cd, b/413674743)

Wersja 1.7.0-alpha01

11 marca 2026 r.

Publikacja androidx.camera:camera-*:1.7.0-alpha01 Wersja 1.7.0-alpha01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Udostępniono interfejs API CameraController.setSessionConfig(). Dzięki temu można podać niestandardowy SessionConfig dla zaawansowanych konfiguracji UseCase, które nie są bezpośrednio udostępniane przez CameraController. Gdy SessionConfig jest aktywny, inne metody konfiguracji w CameraController są wyłączone.(I35cf1, b/448525636)

Poprawki błędów

  • Przenosi biblioteki, aby używać środowiska Java 11. Oznacza to, że wygenerowany kod bajtowy będzie zgodny z Java 11 (plik klasy w wersji 55) i może wymagać odlukrzania, aby można było używać biblioteki (If4c2a, b/457821470).
  • Naprawiliśmy błąd w ImageAnalysis, który powodował, że obrazy nie były prawidłowo obracane, gdy włączone było obracanie obrazu wyjściowego, a początkowy obrót względny wynosił 0 stopni. (Id46c2, b/487160584)

Wersja aparatu: 1.6

Wersja 1.6.2

26 sierpnia 2026 r.

Publikacja androidx.camera:camera-*:1.6.2 Wersja 1.6.2 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiliśmy błąd kompilacji w nowszych wersjach JDK podczas rozwiązywania przejściowo importowanych adnotacji typu JSpecify w polach wewnętrznych CameraX. (I00bb4, b/543937345)

Wersja 1.6.1

6 maja 2026 r.

Publikacja androidx.camera:camera-*:1.6.1 Wersja 1.6.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiliśmy błąd kompilacji „Nie można uzyskać dostępu do klasy ListenableFuture” podczas korzystania z CameraX 1.6.0. (Ic8cba, b/497571473)

Wersja 1.6.0

25 marca 2026 r.

Publikacja androidx.camera:camera-*:1.6.0 Wersja 1.6.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.5.0:

1. Migracja na ujednolicony, wysokowydajny stos aparatu

  • CameraX używa teraz CameraPipe – tego samego nowoczesnego, wydajnego stosu, który obsługuje aparat Pixela. Ta zmiana zwiększa wydajność architektury i zapewnia skalowalną podstawę do wprowadzania zaawansowanych funkcji fotografii cyfrowej w ekosystemie deweloperów.

2. Integracja Media3 Muxer

  • CameraX domyślnie integruje teraz Media3 Muxer w interfejsie API VideoCapture. Migracja zapewnia kilka korzyści:
    • Zwiększona wydajność: wydajniejsze przetwarzanie i multipleksowanie filmów.
    • Odporność na awarie: ulepszona ochrona przed uszkodzeniem plików wideo, która zapewnia zachowanie danych nawet w przypadku awarii aplikacji podczas nagrywania.

3. Ulepszenie grupy cech

4. Ustabilizowany interfejs SessionConfig API

  • SessionConfig nie jest już eksperymentalnym, ale w pełni stabilnym publicznym interfejsem API, który obejmuje SessionConfig i HighSpeedVideoSessionConfig. Rozszerzenia CameraX można teraz implementować za pomocą nowego interfejsu API ExtensionSessionConfig. Wprowadziliśmy nowy interfejs API isSessionConfigSupported, który umożliwia deweloperom sprawdzenie, czy określona kombinacja przypadków użycia i funkcji (takich jak HDR, stabilizacja, określone rozdzielczości, rozszerzenia CameraX czy zwolnione tempo) jest obsługiwana przez urządzenie, zanim zostanie powiązana z cyklem życia.

Poprawki błędów

  • Naprawiliśmy błąd powodujący awarię na niektórych urządzeniach z Androidem 17 (API 37) lub nowszym. Gdy te urządzenia udostępniają nowe profile zakresu dynamicznego (np. STANDARD_SMPTE_2094_50(ID 8192)), które były nieznane w CameraX w wersji 1.5.1 i starszych, biblioteka nie obsługiwała wcześniej tych identyfikatorów prawidłowo, co powodowało błąd NullPointerException lub IllegalArgumentException podczas ProcessCameraProvider.bindToLifecycle(). Ta poprawka umożliwia CameraX ignorowanie nierozpoznanych profili zakresu dynamicznego, co zapobiega awariom i zapewnia zgodność z przyszłymi wersjami. Aby uniknąć tego problemu na urządzeniach, które udostępniają te nowe profile, zaktualizuj zależność CameraX do wersji 1.5.2 lub 1.6.0 (lub nowszej). Więcej informacji znajdziesz w opisie problemu 519796838. (Ibd7b5)
  • Interfejs API grupy cech zapewnia teraz spójne wyniki, gdy PREVIEW_STABILIZATION jest używany z VideoCapture. Naprawiliśmy błąd, który powodował niespójne wyniki, gdy przypadek użycia podglądu nie był aktywny. (Ifed82, b/449913903)
  • Rozwiązaliśmy problem, który powodował, że nieobsługiwane preferowane funkcje były nieprawidłowo udostępniane. Funkcje są teraz prawidłowo filtrowane, gdy nie są spełnione wymagane przypadki użycia. (I38db8, b/449532342)
  • Naprawiliśmy błąd powodujący nieprawidłowe wyświetlanie wyników wyszukiwania filmów na telefonie Samsung Galaxy S6. (I612d9, b/235127608)
  • Rozwiązaliśmy problem, który powodował, że funkcja CameraInfo#isFeatureGroupSupported mogła nieprawidłowo zwracać wartość „true” dla PREVIEW_STABILIZATION, jeśli SessionConfig w zapytaniu był już skonfigurowany z innymi funkcjami. (I2c355c, b/437816469)
  • Wykluczono problematyczne rozmiary wyjściowe formatu YUV z urządzenia Samsung Z Fold 4. Otrzymane obrazy są zniekształcone, gdy używane są te rozmiary wyjściowe. (I776bf, b/460322307)
  • Rozwiązaliśmy problem występujący na urządzeniach Samsung A53, który powodował, że robienie zdjęć z włączoną latarką czasami się nie udawało, jeśli był powiązany przypadek użycia VideoCapture. (I0f183, b/458197367)
  • Rozwiązaliśmy problem występujący na niektórych urządzeniach, który powodował, że użycie lampy błyskowej z aparatem ultraszerokokątnym mogło skutkować niedoświetlonymi zdjęciami. (Ib7530, b/444590340)
  • Zaktualizowano zależność ExifInterface, aby uwzględnić poprawkę dotyczącą analizowania plików JPEG z dopełnieniem 0xFF. Rozwiązuje to problemy z robieniem zdjęć na urządzeniach, na których koder JPEG dodaje bajty wypełnienia przed znacznikami. (I0eb49)

Wersja 1.6.0-rc01

25 lutego 2026 r.

Publikacja androidx.camera:camera-*:1.6.0-rc01 Wersja 1.6.0-rc01 zawiera te zatwierdzenia.

Wersja 1.6.0-beta02

11 lutego 2026 r.

Publikacja androidx.camera:camera-*:1.6.0-beta02 Wersja 1.6.0-beta02 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiliśmy problem z przechwytywaniem w pamięci ImageCapture OUTPUT_FORMAT_RAW_JPEG IllegalArgumentException. (Id4eec, b/479990902)
  • Przeniesiono do multipleksera AndroidX Media3. Rozwiązaliśmy problem z uszkodzeniem filmu podczas nieoczekiwanych przerw lub zamknięcia aplikacji oraz problem z awariami podczas zapisywania filmów w deskryptorach plików proxy. (I23b63, b/433649708, b/264812009, b/475750115)

Wersja 1.6.0-beta01

28 stycznia 2026 r.

Publikacja androidx.camera:camera-*:1.6.0-beta01 Wersja 1.6.0-beta01 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem z typem CameraExtensionsInfo w CameraX 1.6.0-alpha, który powodował, że obiekt LiveData nie mógł odbierać zaktualizowanych danych typu. (I2c7a5)
  • Zaktualizowano zależność ExifInterface, aby uwzględnić poprawkę dotyczącą analizowania plików JPEG z wypełnieniem 0xFF. Rozwiązuje to problemy z robieniem zdjęć na urządzeniach, na których koder JPEG dodaje bajty wypełnienia przed znacznikami. (I0eb49)

Wersja 1.6.0-alpha02

17 grudnia 2025 r.

Publikacja androidx.camera:camera-*:1.6.0-alpha02 Wersja 1.6.0-alpha02 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodano funkcję grupowania, która umożliwia oznaczenie funkcji stabilizacji filmu w konfiguracji sesji. Deweloperzy mogą teraz prosić o stabilizację obrazu jako wymaganą lub preferowaną funkcję, dopasowując ją do innych funkcji, które można grupować, takich jak UHD_RECORDING czy PREVIEW_STABILIZATION. (Ic6757, b/419766630)
  • Dodano funkcje, które można grupować, aby określić jakość nagrywania wideo w konfiguracji sesji. Deweloperzy mogą teraz poprosić o określoną jakość (np. UHD, FHD) jako wymaganą lub preferowaną funkcję, dopasowując ją do innych funkcji, które można grupować, takich jak HDR i 60 klatek na sekundę. (Ib5cd3, b/437820285)
  • Dodaliśmy obsługę korzystania zarówno z CameraEffect, jak i interfejsu API grup cech w SessionConfig. (I17f18, b/406370934)
  • Dodaliśmy obsługę interfejsu ImageAnalysis i interfejsu API grup cech w SessionConfig. (I87833, b/406371720)

Zmiany w interfejsie API

  • Dodano funkcję ustawiającą addUseCase dla ExtensionSessionConfig.Builder i brakujące funkcje pobierające dla ExtensionSessionConfig. (I71e07, b/453988621)
  • Dodano interfejs API ExtensionsManager.getInstance, który jest zawieszoną wersją ExtensionsManager.getInstanceAsync (I3a0a9, b/452208792).
  • Zmieniliśmy nazwę interfejsu isFeatureGroupSupported na isSessionConfigSupported i dodaliśmy obsługę wszystkich typów SessionConfig. (I21616, b/448781299)
  • Przekonwertowano ExtensionsManager na implementację w języku Kotlin. (I73091, b/452208792)
  • Dodano CameraProvider#getCameraInfo(CameraSelector, SessionConfig), aby pobrać CameraInfo, gdy SessionConfig może mieć wpływ na wybór kamery. Na przykład podczas korzystania z ExtensionSessionConfig. (Ic548c, b/451891648)
  • Udostępniono interfejs API ExtensionSessionConfig. Aplikacje mogą teraz utworzyć obiekt ExtensionSessionConfig i użyć go do utworzenia sesji rozszerzeń. (I6354c, b/448524373)
  • Interfejs API androidx.camera.video.HighSpeedVideoSessionConfig nie jest już eksperymentalny i jest teraz w pełni stabilnym publicznym interfejsem API. (I492d4, b/447558239)
  • Interfejs API androidx.camera.core.SessionConfig nie jest już eksperymentalny i jest teraz w pełni stabilnym publicznym interfejsem API. (Idc87a, b/447558437)

Poprawki błędów

  • Naprawiliśmy błąd powodujący awarię z powodu IllegalArgumentException: Dynamic range profile cannot be converted to a DynamicRange object: na Androidzie 17 lub nowszym. (Ibd7b5, b/463465353)
  • Wykluczono problematyczne rozmiary wyjściowe formatu YUV z urządzenia Samsung Z Fold 4. Otrzymane obrazy są zniekształcone, gdy używane są te rozmiary wyjściowe. (I776bf, b/460322307)
  • Naprawiliśmy błąd, który powodował, że ustawienie CaptureRequest.FLASH_MODE nie było stosowane, gdy zostało skonfigurowane za pomocą interfejsu API Camera2Interop. (I0004c, b/459608684)
  • Rozwiązaliśmy problem występujący na urządzeniach Samsung A53, który powodował, że robienie zdjęć z włączoną latarką czasami się nie udawało, jeśli był powiązany przypadek użycia VideoCapture. (I0f183, b/458197367)
  • Rozwiązaliśmy problem występujący na niektórych urządzeniach, który powodował, że użycie lampy błyskowej z aparatem ultraszerokokątnym mogło skutkować niedoświetlonymi zdjęciami. (Ib7530, b/444590340)

Wersja 1.6.0-alpha01

22 października 2025 r.

Publikacja androidx.camera:camera-*:1.6.0-alpha01 Wersja 1.6.0-alpha01 zawiera te zatwierdzenia.

Nowe funkcje

  • CameraX został przeniesiony na ujednolicony, wydajny stos aparatu, który jest również używany przez aplikację aparatu Pixel. Ten nowy stos, znany jako CameraPipe, powstał w wyniku współpracy zespołów CameraX i aparatu Pixel. Dzięki temu wszystkie ulepszenia są udostępniane, co przynosi korzyści zarówno użytkownikom CameraX, jak i aplikacji Aparat Pixel.

Zmiany w interfejsie API

  • Dodaliśmy nowe interfejsy API do wykrywania dynamicznego dodawania i usuwania kamer. Więcej informacji znajdziesz w interfejsie API CameraPresenceListener. (I41ead, b/427182232, b/419441394)

Poprawki błędów

  • Interfejs API grupy cech zapewnia teraz spójne wyniki, gdy PREVIEW_STABILIZATION jest używany z VideoCapture. Naprawiliśmy błąd, który powodował niespójne wyniki, gdy przypadek użycia Preview nie był aktywny. (Ifed82, b/449913903)
  • Rozwiązaliśmy problem, który powodował, że nieobsługiwane preferowane funkcje były nieprawidłowo udostępniane. Funkcje są teraz prawidłowo filtrowane, gdy nie są spełnione wymagane przypadki użycia. (I38db8, b/449532342)
  • Naprawiliśmy błąd powodujący nieprawidłowe wyświetlanie wyników wyszukiwania filmów na telefonie Samsung Galaxy S6. (I612d9, b/235127608)
  • Rozwiązaliśmy problem, który powodował, że funkcja CameraInfo#isFeatureGroupSupported mogła nieprawidłowo zwracać wartość „true” dla PREVIEW_STABILIZATION, jeśli SessionConfig w zapytaniu był już skonfigurowany z innymi funkcjami. (I2c355c, b/437816469)

Aparat w wersji 1.5

Wersja 1.5.3

28 stycznia 2026 r.

Publikacja androidx.camera:camera-*:1.5.3 Wersja 1.5.3 zawiera te zatwierdzenia.

Poprawki błędów

  • Zaktualizowano zależność ExifInterface do wersji 1.4.2. Rozwiązuje to problem z robieniem zdjęć, który występuje na urządzeniach generujących pliki JPEG z dodatkowymi (i dozwolonymi) bajtami 0xFF przed znacznikiem. (I16df4)

Wersja 1.5.2

4 grudnia 2025 r.

Publikacja androidx.camera:camera-*:1.5.2 Wersja 1.5.2 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiliśmy błąd powodujący awarię z powodu IllegalArgumentException: Dynamic range profile cannot be converted to a DynamicRange object: na Androidzie 17 lub nowszym. (Ic9184)
  • Naprawiliśmy błąd, który powodował niespójne wyniki interfejsu API grupy funkcji, gdy funkcja PREVIEW_STABILIZATION została dodana w przypadku użycia VideoCapture, ale bez przypadku użycia Preview. (Ifed82)
  • Naprawiliśmy błąd, który powodował, że preferowane funkcje nie były odfiltrowywane, mimo że nie było wymaganych przypadków użycia, aby te funkcje były obsługiwane. (I38db8)

Wersja 1.5.1

8 października 2025 r.

Publikacja androidx.camera:camera-*:1.5.1 Wersja 1.5.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Obsługa CameraEffect w trybie równoczesnej kompozycji obrazu z kamery. Efekt zostanie zastosowany do danych wyjściowych kompozycji. Pamiętaj, że gdy efekt jest ustawiony w trybie jednoczesnej kompozycji kamery, mirrorMode w VideoCapture zostanie zignorowany. (If3d00, b/425565129)
  • Rozwiązaliśmy problem, który powodował, że funkcja mirrorMode nie była prawidłowo stosowana do kamery dodatkowej w trybie kompozycji równoczesnej. (I686cd, b/446430827)
  • Obsługa powiązania Preview, ImageCapture i VideoCapture w trybie bez kompozycji z jednoczesnym użyciem aparatów. (Ib410a, b/443009871)
  • Rozwiązaliśmy problem, który powodował, że przypadki użycia takie jak ImageCapture i VideoCapture traciły informacje o docelowym obrocie, jeśli zostały utworzone ponownie. Może to spowodować, że obrazy lub filmy będą miały nieprawidłową orientację, jeśli ustawienie takie jak imageCaptureMode zostało zmienione po obróceniu urządzenia. (I477c8, b/444734537)
  • Rozwiązaliśmy problem, który uniemożliwiał wybieranie rozdzielczości 16:9 w podglądzie i nagrywanie w jakości QUALITY_1080P w aplikacji VideoCapture. Ten problem występował podczas korzystania z domyślnej konfiguracji rozdzielczości podglądu, gdy aktywna była funkcja wewnętrzna StreamSharing (np. gdy jednocześnie powiązane były 4 przypadki użycia). (I493cb, b/440364875)
  • Naprawiliśmy błąd powodujący awarię, gdy efekt jest aktywowany po wyłączeniu SurfaceProcessor (I2c450, b/414150174).
  • Naprawiliśmy błąd w CameraController, który powodował wystąpienie błędu IllegalStateException, gdy początkowy UseCase wybierał maksymalną rozdzielczość, co uniemożliwiało powiązanie innych UseCase. (Ifb758, b/440374234)
  • Wyklucza problematyczne rozmiary wyjściowe YUV_420_888 w przypadku Nokii 7 Plus, które powodują błąd bez wyświetlania żadnych komunikatów. (I3af47, b/436524501)
  • Rozwiązaliśmy problem, który powodował, że funkcja CameraInfo#isFeatureGroupSupported mogła nieprawidłowo zwracać wartość „true” w przypadku funkcji PREVIEW_STABILIZATION. Może się tak zdarzyć, gdy zapytanie jest wysyłane z użyciem SessionConfig, który został już skonfigurowany z innymi funkcjami. (I2c355, b/437816469)
  • Poprawiliśmy stabilność CameraXViewfinder na starszych poziomach interfejsu API i urządzeniach z problemami z SurfaceView, domyślnie używając w takich przypadkach TextureView. Ten mechanizm zastępczy jest nowym ustawieniem domyślnym, ale można go zastąpić programowo. (Ieb476, b/437496463)
  • Naprawiliśmy wyciek pamięci w PreviewView, który mógł uniemożliwiać usuwanie nieużywanych obiektów z aktywności. Dzieje się tak, gdy nowy SurfaceRequest dotrze, zanim poprzedni zostanie obsłużony. (I4aa0b,b/443112512)
  • Rozwiązaliśmy problem, który powodował, że nagrywanie w trybie przyspieszonym lub zwolnionym nie działało na urządzeniach Huawei P smart, Infinix Hot 40i i Realme C53. (40a668e, b/442984200)

Wersja 1.5.0

10 września 2025 r.

Publikacja androidx.camera:camera-*:1.5.0 Wersja 1.5.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.4.0:

  • Nagrywanie z dużą szybkością i w zwolnionym tempie: łatwo integruj nagrywanie filmów z dużą szybkością (120/240 kl./s) i w zwolnionym tempie przy użyciu minimalnej ilości kodu. Szczegółowe informacje znajdziesz w Recorder#getHighSpeedVideoCapabilities(CameraInfo) i HighSpeedVideoSessionConfig.
  • Interfejsy API SessionConfig i FeatureGroup: nowy interfejs API SessionConfig umożliwia skonfigurowanie sesji aparatu i bezpieczne włączenie wielu funkcji jednocześnie, w tym HLG (HDR), UltraHDR, 60 kl./s i stabilizacji podglądu. Możesz też ustawić preferowaną grupę funkcji z priorytetem, aby CameraX określił optymalną obsługiwaną kombinację. Więcej informacji znajdziesz w tych artykułach: SessionConfig.Builder#setPreferredFeatureGroup, SessionConfig.Builder#setRequiredFeatureGroup i CameraInfo#isFeatureGroupSupported(SessionConfig).
  • Deterministyczny interfejs API liczby klatek: rozwiąż poprzednie ograniczenia związane z setTargetFrameRate, używając CameraInfo.getSupportedFrameRateRanges(sessionConfig) do wysyłania zapytań i SessionConfig.setExpectedFrameRateRange do ustawiania precyzyjnych i obsługiwanych liczb klatek.
  • Rozszerzenia aparatu: format UltraHDR jest teraz obsługiwany przez rozszerzenia. Sprawdź ImageCapture.getImageCaptureCapabilities(cameraInfo).getSupportedOutputFormats() i włącz tę opcję w ImageCapture.Builder.setOutputFormat. Współczynnik powiększenia i funkcje stabilizacji podglądu są teraz odzwierciedlane po włączeniu rozszerzeń.
  • Intensywność latarki: dostosuj intensywność latarki za pomocą ikony CameraControl.setTorchStrengthLevel.
  • Tryb doświetlania: możesz włączyć tryb doświetlania(CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY) za pomocą tych interfejsów API: CameraInfo#isLowLightBoostSupported, CameraInfo#getLowLightBoostState i CameraControl#enableLowLightBoostAsync.
  • Przechwytywanie wideo: VideoRecordEvent.Finalize.ERROR_INSUFFICIENT_STORAGE jest teraz uruchamiane, gdy podczas nagrywania brakuje miejsca na dane. PendingRecording.withAudioEnabled(boolean initialMuted) umożliwia kontrolowanie początkowego stanu wyciszenia nagrywania dźwięku.
  • Robienie zdjęć: obsługa formatów DNG (RAW) i JPEG + DNG (RAW) w aplikacji ImageCapture. Sprawdź, czy ImageCaptureCapabilities(CameraInfo).getSupportedOutputFormats() obsługuje format RAW. Używaj przeciążonych interfejsów API takePicture z wieloma OutputFileOptions do przechwytywania RAW+DNG.
  • Analiza obrazu: obsługa formatu NV21 w ImageAnalysis. Włącz ją za pomocą ImageAnalysis.Builder.setOutputImageFormat(OUTPUT_IMAGE_FORMAT_NV21).

Wersja 1.5.0-rc01

13 sierpnia 2025 r.

Publikacja androidx.camera:camera-*:1.5.0-rc01 Wersja 1.5.0-rc01 zawiera te zatwierdzenia.

Poprawki błędów

  • Przeniesienie domyślnego minSdk z interfejsu API 21 do interfejsu API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
  • Usunęliśmy ograniczenie 10-bitowego sygnału wyjściowego w trybie automatycznego ustawiania ekspozycji przy słabym oświetleniu. Aplikacje mogą teraz jednocześnie włączać obie funkcje na obsługiwanych urządzeniach. (I5a638)
  • Rozwiązaliśmy problem, który powodował zawieszanie się urządzeń z chipsetami UniSoc podczas robienia zdjęcia. Problem wystąpił, gdy jednocześnie używano VideoCapture, Preview i ImageCapture, a wszystkie strumienie były ustawione na rozdzielczość 1280 x 720. (Ia00c4, b/380802479)
  • Naprawiliśmy błąd powodujący wyświetlanie czarnego ekranu podglądu, gdy nie ustawiono dużej liczby klatek na sekundę w przypadku nagrywania z dużą szybkością lub w zwolnionym tempie. (cdf0ff2e9)
  • Ulepszenie obsługi błędów i logowania w getViewportAspectRatioInt (82fca18)

Wersja 1.5.0-beta02

16 lipca 2025 r.

Publikacja androidx.camera:camera-*:1.5.0-beta02 Wersja 1.5.0-beta02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodaliśmy nowe interfejsy API, które umożliwiają bardziej intuicyjne i dokładne ustawianie lub wysyłanie zapytań dotyczących grup funkcji wysokiej jakości, ponieważ te funkcje mogą nie być obsługiwane jako kombinacja na wszystkich urządzeniach. SessionConfig zawiera teraz nowe interfejsy API, które umożliwiają oznaczenie grupy funkcji jako wymaganych lub preferowanych. Interfejs API CameraInfo.isFeatureGroupSupported pozwala sprawdzić, czy grupa funkcji jest obsługiwana, zanim zostanie powiązana z SessionConfig. SessionConfig umożliwia też ustawienie detektora, który będzie informować o tym, które funkcje zostały ostatecznie wybrane po powiązaniu konfiguracji sesji. (Ie4d60)
  • Dodano nowe interfejsy API SessoinConfig.Builder.setFrameRateRange(Range<Integer>) i CameraInfo.getSupportedFrameRateRanges(SessionConfig), które umożliwiają deweloperom wysyłanie zapytań o gwarantowane obsługiwane liczby klatek ograniczone przez określony SessionConfig, a następnie stosowanie liczby klatek w SessionConfig. (Ieacf7)
  • Wprowadziliśmy nowy interfejs API SessionConfig, który zawiera lepszą abstrakcję do konfigurowania przypadków użycia, parametrów sesji, CameraEffect, ViewPort itp. Powiązanie SessionConfig z LifecycleOwner otwiera sesję kamery, konfiguruje ją za pomocą określonych przypadków użycia i parametrów sesji oraz stosuje wyznaczone CameraEffect i ViewPort. Podczas aktualizowania nowego elementu SessionConfig do tego samego elementu LifecycleOwner możesz po prostu powiązać nowy element Sessionconfig bez konieczności wywoływania metody unbind lub unbindAll. (Iedfc3)
  • Dodano nowe interfejsy API do nagrywania filmów w wysokiej szybkości i w zwolnionym tempie. Więcej informacji znajdziesz w interfejsie API HighSpeedVideoSessionConfig. (Ia16f3)

Poprawki błędów

  • Naprawiliśmy błąd interfejsu API ImageCaptureCapabilities#getSupportedOutputFormats(), który powodował, że formaty RAW były zgłaszane jako obsługiwane na niektórych urządzeniach, które w rzeczywistości nie obsługują formatu RAW. (Ibcadb)
  • Naprawiliśmy wyciek pamięci, który występuje, gdy używana jest metoda PreviewView, włączona jest metoda CameraEffect lub powiązane są 4 przypadki użycia(StreamSharing) (I87468).
  • Naprawiliśmy błąd powodujący awarię podczas nagrywania filmu: AssertionError: nieprawidłowy stan dźwięku wewnętrznego: BEZCZYNNOŚĆ. (I38d4b, b/414259796)
  • Rozwiązaliśmy problem, który powodował, że gdy aplikacja działała na wyświetlaczu zewnętrznym, a urządzenie było w orientacji poziomej, podgląd w PreviewView był rozciągnięty lub obrócony (Ia917a).
  • Rozwiązaliśmy problem polegający na tym, że ustawienia stabilizacji podglądu nie były prawidłowo stosowane, gdy strumień z kamery był udostępniany między podglądem a funkcją VideoCapture (I5430e).
  • CameraXViewfinder teraz prawidłowo obsługuje zastępowanie powierzchni w bazowym Viewfinder. Obejmuje to sytuacje, w których wizjer EXTERNAL na poziomie interfejsu API 28 lub niższym znika z ekranu lub gdy CameraXViewfinder (z dowolnym ImplementationMode) jest częścią moveableContentOf(). W przypadkach, gdy nie można utrzymać działania podstawowego elementu ViewfinderSurfaceSession, CameraXViewfinder unieważni bieżący element SurfaceRequest CameraX, co pozwoli CameraX na użycie nowego elementu Surface. (I79432)
  • Rozwiązuje problem na Androidzie 10/11, który powodował, że EXTERNAL CameraXViewfinder mógł wyglądać na rozciągnięty lub nieprawidłowy z powodu zbyt wczesnego zastosowania operacji przekształcania (takich jak skalowanie lub translacja). System czeka teraz na utworzenie powierzchni, zanim zastosuje te przekształcenia w fazie układu, co zapewnia prawidłowe wyniki. (Icc77c)
  • Funkcja kompozycyjna CameraXViewfinder działa teraz prawidłowo z Pager w Compose. Ta zmiana zapewnia, że element kompozycyjny można zresetować, implementując wywołanie zwrotne onReset interfejsu AndroidView, co obsługuje implementacje EMBEDDED i EXTERNAL. (I0d9be)
  • Naprawiliśmy wyciek właściciela cyklu życia, który występuje, gdy przypadki użycia są odłączane od właściciela cyklu życia bez wyłączania dostawcy aparatu.

Wersja 1.5.0-beta01

7 maja 2025 r.

Publikacja androidx.camera:camera-*:1.5.0-beta01 Wersja 1.5.0-beta01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Projekty opublikowane z Kotlinem 2.0 wymagają do użycia KGP 2.0.0 lub nowszej wersji (Idb6b5).
  • Właściwości ContentScale i Alignment można teraz używać w wizjerze do skalowania i umieszczania wyświetlanej powierzchni w jej kontenerze, podobnie jak w przypadku androidx.compose.foundation.Image. (Ibcea3)
  • TransformationInfo ma teraz wartości domyślne dla wszystkich argumentów. Umożliwi to tworzenie wizjerów bez żadnych TransformationInfo, co spowoduje domyślne ustawienie obrotu źródła na 0, brak odbicia lustrzanego źródła i brak prostokąta przycięcia. (I2b1b2)
  • Dodano LifecycleCameraProvider, czyli dostawcę kamery, którego można utworzyć z różnymi konfiguracjami funkcji, takimi jak dostęp do kamery urządzenia wirtualnego przez skonfigurowanie dostosowanego kontekstu. (Ia2992)

Poprawki błędów

  • Rozwiązaliśmy problem z zawieszaniem się podglądu podczas korzystania z ImageAnalysis z innym strumieniem, który używa TEMPLATE_RECORD na urządzeniu Samsung SM-E556B. (Ic0e62, b/409478042)
  • Rozwiązaliśmy problem z zawieszaniem się podglądu podczas korzystania z ImageAnalysis z innym strumieniem, który używa TEMPLATE_RECORD na urządzeniu Samsung SM-M556B. (Ic1a6a, b/395822788)
  • Naprawiliśmy problem z trybem nocnym AssertError w rozszerzeniach na urządzeniach Pixel z Androidem 15 podczas wykonywania operacji związanych z powiększaniem. (I27a5d, b/401460276)
  • Rozwiązaliśmy problem z nieprawidłowymi współrzędnymi ramki ograniczającej w analizatorze ML Kit podczas korzystania z CameraController. (Iae91b, b/409808510)

Wersja 1.5.0-alpha06

26 lutego 2025 r.

Publikacja androidx.camera:camera-*:1.5.0-alpha06 Wersja 1.5.0-alpha06 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodano CameraInfo.getTorchStrengthLevel, CameraInfo.getMaxTorchStrengthLevel i CameraControl.setTorchStrengthLevel, aby umożliwić dostosowywanie jasności latarki (I00878)
  • Dodano nowy interfejs API CameraController#setTapToFocusAutoCancelDuration, dzięki któremu użytkownicy mogą kontrolować zachowanie automatycznego anulowania w przypadku zdarzeń ustawiania ostrości przez dotknięcie PreviewView. Domyślnie CameraX anuluje zdarzenia ustawiania ostrości po 5 sekundach (czyli ostrość aparatu jest resetowana). Ten interfejs API umożliwia zmianę tego czasu lub całkowite wyłączenie automatycznego anulowania. (Icf59a)
  • Zmieniliśmy nazwę FLASH_STATE_READY na NOT_FIRED, a inne nazwy stałych FlashState zostały uproszczone, aby były bardziej czytelne. (I8771d)
  • Udostępniliśmy interfejs API doświetlania. Urządzenia z Androidem 15 lub nowszym mogą obsługiwać rozjaśnianie przy słabym oświetleniu. Ta funkcja może automatycznie dostosowywać jasność podglądu, filmu lub strumieni analizy obrazu w słabym oświetleniu. Aplikacje mogą używać nowego interfejsu API do: 1. Aby sprawdzić dostępność funkcji, użyj CameraInfo#isLowLightBoostSupported. 2. Użyj CameraControl#enableLowLightBoostAsync, aby włączyć tryb, gdy urządzenia go obsługują. 3. Użyj CameraInfo#getLowLightBoostState, aby monitorować stan ulepszenia przy słabym oświetleniu. (I937ed)
  • Dodano klasy zgodności, aby umożliwić szybsze wysyłanie zapytań innych niż camera2 w camera-feature-combination-query. (Ie97ee)
  • W przypadku zdarzeń ustawiania ostrości przez dotknięcie (CameraController) nowy interfejs API getTapToFocusInfoState() udostępnia teraz również odpowiednią pozycję dotknięcia, zwracając LiveData klasy TapToFocusInfo, podczas gdy poprzedni interfejs API LiveData<Integer> zwracający getTapToFocusState() został wycofany na rzecz nowego interfejsu API. (I238d2)

Poprawki błędów

  • Rozwiązaliśmy problem polegający na tym, że stabilizacja podglądu nie była stosowana, gdy była włączona za pomocą rozszerzeń. (I24ad7)
  • Naprawiliśmy błąd, który powodował, że zdarzenie stanu ostrości CameraController nie było resetowane do TAP_TO_FOCUS_NOT_STARTED, gdy CameraX automatycznie anulował zdarzenie ostrości, co domyślnie działo się po 5 sekundach. (I31954)
  • Rozwiązaliśmy problem z zawieszaniem się podglądu podczas korzystania z funkcji Zero Shutter Lag (ZSL) po wykonaniu kilku zdjęć z powodu niezwolnionych zasobów obrazu. (Ic3c2a)
  • Naprawiliśmy błędy, które powodowały, że na niektórych urządzeniach filmy UHD miały czerwony odcień, gdy potok obejmował OpenGL. (Idcedc)

Wersja 1.5.0-alpha05

15 stycznia 2025 r.

Publikacja androidx.camera:camera-*:1.5.0-alpha05 Wersja 1.5.0-alpha05 zawiera te commity.

Zmiany w interfejsie API

  • Dodaj VideoCapture.getSelectedQuality(), aby poznać wybraną jakość na podstawie QualitySelector. (I70508, b/204288986)
  • Gdy robienie zdjęcia jest wywoływane za pomocą interfejsu API ImageCapture.OnImageCapturedCallback, można teraz użyć interfejsu ImageInfo w zwróconym interfejsie ImageProxy, aby dowiedzieć się, czy lampa błyskowa została uruchomiona za pomocą nowego interfejsu API ImageInfo.getFlashState(). (Id2c61, b/380527406)
  • Dodaliśmy obsługę formatu wyjściowego OUTPUT_IMAGE_FORMAT_NV21 w przypadku ImageAnalysis. (I484ab)
  • Usunięcie eksperymentalnej adnotacji artefaktu featurecombinationquery (I4427f)
  • Dostosuj zakres współczynnika powiększenia dozwolony dla CameraControl według cech rozszerzeń, gdy włączony jest tryb rozszerzeń. (I85af1)

Poprawki błędów

  • Zaktualizowano compileSdk do wersji 35, aby umożliwić korzystanie z interfejsu API związanego z Androidem 15. Aplikacje korzystające z bibliotek CameraX będą też musiały zaktualizować ustawienie konfiguracji compileSdk. (Ic80cd)
  • Ta biblioteka używa teraz adnotacji JSpecify nullness, które są adnotacjami typu type-use. Deweloperzy Kotlin powinni używać tego argumentu kompilatora, aby wymusić prawidłowe użycie: -Xjspecify-annotations=strict (jest to ustawienie domyślne od wersji 2.1.0 kompilatora Kotlin). (Idc6c6, b/326456246)

Wersja 1.5.0-alpha04

11 grudnia 2024 r.

Publikacja androidx.camera:camera-*:1.5.0-alpha04 Wersja 1.5.0-alpha04 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Udostępniono ImageCapture.Builder#setOutputFormat i ImageCaptureCapabilities#getSupportedOutputFormats jako stabilne interfejsy API (Ieb04a).
  • Dodaj VideoCapture.getResolutionInfo(), aby uzyskać informacje o rozdzielczości, gdy VideoCapture jest powiązany z cyklem życia. (Icb478)
  • Metody PreviewView.getScreenFlash i PreviewView.setScreenFlashOverlayColor są teraz dostępne jako stabilne interfejsy API. (I74fee)

Poprawki błędów

  • Rozwiązaliśmy problem z nieudanym robieniem zdjęć z lampą błyskową w ciemności na urządzeniu Vivo 1610. (I366f4)
  • Naprawiliśmy błąd, który powodował nieoczekiwane wyłączanie się latarki po zrobieniu zdjęcia na urządzeniu Redmi Note 6 Pro. (I2e0e8, b/377144569)
  • Rozwiązaliśmy problem występujący na urządzeniach Pixel z Androidem 15, który powodował, że tryb NOCNY w rozszerzeniach nie robił zdjęć, dopóki aparat nie ustawił ostrości na obiekcie w pobliżu. (I228d4)
  • Rozwiązaliśmy problem z nieprawidłowym działaniem funkcji robienia zdjęć, gdy rozszerzenia są włączone, a VideoCapture jest powiązany. (I5c745)
  • Włączono obsługę UltraHDRrobienia zdjęć w rozszerzeniach, jeśli urządzenie to obsługuje. (I48300)
  • Rozwiązaliśmy problem z czasem błysku podczas robienia zdjęć z lampą błyskową za pomocą CameraEffect na urządzeniach TCL. (I7698c)

Wersja 1.5.0-alpha03

30 października 2024 r.

Publikacja androidx.camera:camera-*:1.5.0-alpha03 Wersja 1.5.0-alpha03 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodaj interfejsy API formatu wyjściowego dla plików RAW i RAW + JPEG ImageCapture. Sprawdzanie możliwości urządzenia jest dostępne w ImageCaptureCapabilities#getSupportedOutputFormats. OUTPUT_FORMAT_RAW służy do robienia zdjęć w formacie RAW (Adobe DNG), a OUTPUT_FORMAT_RAW_JPEG – do jednoczesnego robienia zdjęć w formatach RAW i JPEG. Nowy interfejs API ImageCapture#takePicture służy do jednoczesnego robienia zdjęć. Musi on udostępniać 2 OutputFileOptions – pierwszy dla obrazu RAW, a drugi dla obrazu JPEG. (Ib0f3d)

Poprawki błędów

  • Rozwiązaliśmy problem z niedoświetleniem podglądu i filmu na urządzeniach TCL, gdy włączona jest funkcja VideoCapture. (Id7a64)
  • Rozwiązaliśmy problem, który powodował, że wywołanie startFocusMetering z PreviewView.getMeteringPointFactory nie powodowało uzyskania prawidłowych współrzędnych czujnika, gdy efekt był włączony lub gdy były powiązane 4 przypadki użycia (udostępnianie strumienia). (I916c5, b/345993685)
  • Naprawiliśmy błąd polegający na tym, że zdarzenie VideoRecordEvent.Finalize.ERROR_INSUFFICIENT_STORAGE nie było wywoływane, gdy podczas nagrywania filmu brakowało miejsca na dane. (I35779, b/356399842)

Wersja 1.5.0-alpha02

2 października 2024 r.

Publikacja androidx.camera:camera-*:1.5.0-alpha02 Wersja 1.5.0-alpha02 zawiera te zatwierdzenia.

Nowe funkcje

  • Nowe interfejsy API do wysyłania zapytań o funkcje aparatu obsługiwane przez urządzenie. Na przykład sprawdzanie, czy można jednocześnie włączyć HDR i 60 kl./s. Zawiera 2 artefakty: camera-feature-combination-query i camera-feature-combination-query-play-services. Jest to zgodna wersja interfejsu API CameraManager#getCameraDeviceSetup#isSessionConfigurationSupported camera2 z dodatkowymi danymi dostarczanymi przez Usługi Google Play.

Poprawki błędów

  • Rozwiązaliśmy problem z docelową liczbą klatek na sekundę (Preview/VideoCapture) na urządzeniach starszego typu. Docelowa liczba klatek ustawiona za pomocą interfejsu API setTargetFrameRate lub Camera2Interop była zawsze zastępowana wartością podaną przez AeFpsRangeLegacyQuirk. Dzięki tej poprawce biblioteka CameraX będzie uwzględniać wartość ustawioną za pomocą interfejsu API setTargetFrameRate lub Camera2Interop. (Ie2d32)
  • Dodano funkcje lampy błyskowej, latarki i 3A do robienia zdjęć za pomocą aplikacji CameraEffect. Zrobienie zdjęcia z CameraEffect powinno teraz obejmować te same procesy przed i po zrobieniu zdjęcia (np. wyzwolenie lampy błyskowej, konwergencja 3A itp., jeśli dotyczy) co zrobienie zdjęcia bez CameraEffect. (I5ff30)
  • Wykluczono problematyczne rozmiary wyjściowe dla ImageAnalysis na urządzeniu Samsung SM-A057G. Gdy ImageAnalysis używa rozdzielczości co najmniej 1920 x 1440, powoduje to problem z czarnym podglądem. Aby uniknąć tego problemu, na urządzeniu SM-A057G zastosowano ExcludedSupportedSizesQuirk. (I63dfe, b/365877975)
  • Naprawiliśmy problem z docelową liczbą klatek na sekundę (Preview/VideoCapture), gdy mechanizm udostępniania strumienia jest włączony wewnętrznie w celu udostępniania strumienia w Preview i VideoCapture. (I4fdac)
  • Włączono obejście problemu z nieprawidłowymi metadanymi obrazów JPEG na urządzeniach Samsung S10e i S10+. Dzięki tej poprawce CameraX może zapisać obraz JPEG lub zwrócić prawidłowe obiekty Bitmap, gdy na tych urządzeniach zostanie wywołana funkcja ImageProxy.toBitmap(), jeśli wystąpi problem z nieprawidłowymi metadanymi obrazu JPEG. (Iae493, b/356428987)
  • Wyłączono rozszerzenia tylnego aparatu Samsunga A52s o identyfikatorze 0, ponieważ podczas robienia zdjęć HDR mogą wystąpić awarie systemowe, a konfigurowanie sesji przechwytywania może się nie powieść w trybach BOKEH lub FACE_RETOUCH. (I03ec9, b/364152642)
  • Naprawiliśmy błąd polegający na tym, że zdarzenie VideoRecordEvent.Finalize.ERROR_INSUFFICIENT_STORAGE nie było wywoływane, gdy podczas nagrywania filmu brakowało miejsca na dane. (Ia5b4f, b/356399842)
  • Rozwiązaliśmy problem polegający na tym, że druga próba nagrania filmu na urządzeniu Oppo A5 (CPH1931) kończyła się niepowodzeniem. (I181d6)

Wersja 1.5.0-alpha01

4 września 2024 r.

Publikacja androidx.camera:camera-*:1.5.0-alpha01 Wersja 1.5.0-alpha01 zawiera te zatwierdzenia.

Nowe funkcje

  • Wydaliśmy nowy artefakt camera-compose dla adaptera CameraX Viewfinder Compose, który wyświetla strumień podglądu z CameraX SurfaceRequest z camera-core. (I8666e)
  • Dodano nowy element kompozycyjny CameraXViewfinder, który działa jako idiomatyczny element kompozycyjny dostosowujący SurfaceRequest CameraX do elementu kompozycyjnego Viewfinder. (I4770f)

Zmiany w interfejsie API

  • Udostępnij interfejs API do konfigurowania ustawień kompozycji na potrzeby jednoczesnego nagrywania filmów z 2 aparatów. Ustawienia obejmują wartość alfa do mieszania, przesunięcie we współrzędnych x, y oraz skalę szerokości i wysokości okna wyświetlania klatki kamery. Przesunięcie, szerokość i wysokość są określane w znormalizowanych współrzędnych urządzenia. (Ia2b8a)
  • Udostępniliśmy CameraProvider.getCameraInfo jako formalny interfejs API. (I901cd)
  • Dodano interfejs API PendingRecording.withAudioEnabled(boolean initialMuted) do kontrolowania początkowego stanu wyciszenia. (I635c3, b/354829267)

Poprawki błędów

  • Naprawiliśmy błąd powodujący awarię, gdy metoda bindToLifecycle jest wywoływana z uszkodzonym obiektem LifecycleOwner. (I6e6d8)
  • Rozwiązaliśmy problem, który powodował, że podczas wiązania z VideoCapture na urządzeniu Motorola Edge 20 Fusion podgląd z przedniego aparatu był czarnym ekranem. (I1fe88)
  • Zoptymalizowaliśmy konfigurację wykrywania gestów powiększania w aplikacji PreviewView, aby poprawić płynność. (I04ffc)

Wersja aparatu 1.4

Wersja 1.4.2

26 marca 2025 r.

Publikacja androidx.camera:camera-*:1.4.2 Wersja 1.4.2 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem z zawieszaniem się podglądu podczas korzystania z ImageAnalysis z innym strumieniem, który używa TEMPLATE_RECORD na telefonie Samsung Galaxy M55. (Ic1a6a, b/395822788)

Wersja 1.4.1

11 grudnia 2024 r.

Publikacja androidx.camera:camera-*:1.4.1 Wersja 1.4.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem występujący na urządzeniach Pixel z Androidem 15, który powodował, że tryb NOCNY w rozszerzeniach nie robił zdjęć, dopóki aparat nie ustawił ostrości na obiekcie w pobliżu. (I228d4)
  • Rozwiązaliśmy problem z nieprawidłowym działaniem ImageCapture#takePicture, gdy rozszerzenia są włączone, a VideoCapture jest powiązany. (I5c745)

Wersja 1.4.0

30 października 2024 r.

Publikacja androidx.camera:camera-*:1.4.0 Wersja 1.4.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.3.0

CameraX 1.4.0 zawiera wiele ciekawych aktualizacji. Podsumowanie:

Główna funkcja: 10-bitowy HDR:

  • Z łatwością rób oszałamiające zdjęcia i filmy HDR.
  • Obsługuje kodowanie HLG i 10-bitowe HEVC.
  • Korzystaj z podglądu 10-bitowego trybu HDR i sprawdzaj możliwości urządzenia.
  • Działa z obrazami UltraHDR i filmami HDR na coraz większej liczbie urządzeń.

Inne przydatne funkcje:

  • Rozszerzenia Kotlina: dodano funkcje zawieszenia takePicture i awaitInstance.
  • Efekty w czasie rzeczywistym: stosuj efekty takie jak znaki wodne i wyróżnianie obiektów.
  • Interfejs API CameraController: nowe elementy sterujące do konfigurowania nagrywania filmów.
  • Stabilizacja podglądu: sprawdź możliwości urządzenia i włącz stabilizację.
  • Ulepszenia VideoCapture: większa kontrola nad jakością i dostęp do wyższych rozdzielczości.
  • Integracja rozszerzeń CameraX: płynna integracja z VideoCapture i nowymi funkcjami ImageCapture.
  • Shutter Sound API: łatwe sprawdzanie regionalnych wymagań dotyczących dźwięku migawki.
  • Błysk na ekranie: lepsze zdjęcia w słabym oświetleniu robione przednim aparatem.
  • Interfejsy API metadanych rozszerzeń aparatu: interfejsy API obsługujące dostosowywanie intensywności rozszerzeń i otrzymywanie powiadomień o bieżącym trybie rozszerzeń w ExtensionMode#AUTO. Więcej informacji o poprawkach błędów znajdziesz w ogłoszeniach dotyczących wersji beta i RC.

Wersja 1.4.0-rc04

16 października 2024 r.

Publikacja androidx.camera:camera-*:1.4.0-rc04 Wersja 1.4.0-rc04 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że wywołanie startFocusMetering z PreviewView.getMeteringPointFactory nie powodowało uzyskania prawidłowych współrzędnych czujnika, gdy efekt był włączony lub gdy były powiązane 4 przypadki użycia (udostępnianie strumienia). (I916c5, b/345993685)

Wersja 1.4.0-rc03

2 października 2024 r.

Publikacja androidx.camera:camera-*:1.4.0-rc03 Wersja 1.4.0-rc03 zawiera te zatwierdzenia.

Poprawki błędów

  • Dodano funkcje lampy błyskowej, latarki i 3A do robienia zdjęć za pomocą aplikacji CameraEffect. Zrobienie zdjęcia z CameraEffect powinno teraz obejmować te same procesy przed i po zrobieniu zdjęcia (np. wyzwolenie lampy błyskowej, konwergencja 3A itp., jeśli dotyczy) co zrobienie zdjęcia bez CameraEffect. (I5ff30)
  • Zoptymalizowano płynność powiększania przez rozciąganie w aplikacji PreviewView (I04ffc)
  • Odłączono Ultra HDR od możliwości wyjścia 10-bitowego, ponieważ obsługa Ultra HDR nie wymaga już, aby urządzenia miały możliwość wyjścia 10-bitowego. (I96ff2, I0c3b3)

Wersja 1.4.0-rc02

18 września 2024 r.

Publikacja androidx.camera:camera-*:1.4.0-rc02 Wersja 1.4.0-rc02 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiliśmy błąd powodujący awarię, gdy metoda bindToLifecycle jest wywoływana z uszkodzonym obiektem LifecycleOwner. (I6e6d8)
  • Dodano animację widoczności w ScreenFlashView dla ScreenFlash#apply, co rozwiązuje też problemy związane z asynchroniczną zmianą jasności po pewnym czasie. (I37cdb)
  • Poprawiliśmy płynność powiększania przez zastąpienie ustawień powiększenia w platformie na obsługiwanych urządzeniach.

Wersja 1.4.0-rc01

7 sierpnia 2024 r.

Publikacja androidx.camera:camera-*:1.4.0-rc01 Wersja 1.4.0-rc01 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodano eksperymentalną funkcję CameraInfo.getCameraInfo, która dostarcza konkretne informacje o aparacie bez konieczności wiązania przypadków użycia z aparatem. (I550d1)

Zmiany w interfejsie API

  • Dodano interfejsy API PreviewView.getScreenFlash i PreviewView.setScreenFlashOverlayColor w przypadkach, gdy interfejs ScreenFlashView nie został wyraźnie dodany. (I43945)

Poprawki błędów

  • Rozwiązaliśmy problemy z ekspozycją i odcieniem kolorów, które występowały, gdy robienie zdjęć było robione z lampą błyskową przy słabym oświetleniu i z powiązanym przypadkiem użycia VideoCapture. (Ic9814)
  • Rozwiązaliśmy problem, który powodował, że przerwanie żądania takePicture z włączonymi rozszerzeniami mogło skutkować brakiem wyniku, a następne żądanie takePicture mogło już nie działać. (Iae78f)
  • Rozwiązaliśmy problem z wyciekiem pamięci, który występował, gdy rozszerzenia były włączone. (Iab276)
  • Rozwiązaliśmy problem z nieprawidłowym działaniem rozszerzeń CameraX na urządzeniach takich jak Pixel 7/8 i Samsung Galaxy S24. Problem wynikający z błędu konwersji Camera2OutputConfigImpl w trybie wersji pojawił się po uaktualnieniu AGP do wersji 8.5.1 i włączeniu minifikacji. (I99598, b/354824993)

Wersja 1.4.0-beta02

12 czerwca 2024 r.

Publikacja androidx.camera:camera-*:1.4.0-beta02 Wersja 1.4.0-beta02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Podobnie jak w przypadku VideoCapture, dodaj setMirrorMode do przypadku użycia podglądu. Będzie obsługiwać włączanie i wyłączanie trybu odbicia lustrzanego w przypadku strumienia podglądu za pomocą OutputConfiguration.setMirrorMode z interfejsu API 33 i nowszych. W przypadku starszych interfejsów API nie będzie działać. (I821f4)

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że aplikacje nie mogły robić zdjęć na urządzeniu Samsung Tab A8, gdy ImageCapture wybierał rozdzielczość 1920 x 1080 w kombinacji Preview + VideoCapture + ImageCapture UseCase. (I5a463, b/336925549)
  • Rozwiązaliśmy problem, który powodował, że nagrywanie ciągłe mogło nie być kontynuowane po przełączeniu aparatu. (Icb0a1)

Wersja 1.4.0-beta01

14 maja 2024 r.

Publikacja androidx.camera:camera-*:1.4.0-beta01 Wersja 1.4.0-beta01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano ZoomGestureDetector.ZoomEvent, aby uwzględnić stany gestu powiększenia. (I84cdf)

Poprawki błędów

  • Naprawiliśmy błąd, który powodował, że podczas robienia zdjęcia i korzystania z funkcji ustawiania ostrości przez dotknięcie nie były używane wartości trybu stabilizacji i klatek na sekundę powtarzającego się żądania. Mogło to powodować ponowne tworzenie sesji robienia zdjęcia i problemy z opóźnieniem lub zawieszanie się podglądu na niektórych urządzeniach. (I7dc0b)
  • Naprawiliśmy błąd, który uniemożliwiał wybranie wysokiej rozdzielczości, gdy na niektórych urządzeniach włączona była funkcja CameraEffect. (np. 4000 x 3000 na Samsungu A32 5G). (Ie3ed3, b/337336152)
  • Naprawiliśmy błąd powodujący awarię podczas robienia zdjęcia z podglądem, gdy ImageCapture i VideoCapture(UHD) są powiązane na urządzeniu Pixel 4XL z interfejsem API 29. (I5b288)
  • Obsługa urządzeń wirtualnych: kontekst przekazywany do ProcessCameraProvider zachowa identyfikator urządzenia, aby zapewnić funkcjonalność w środowisku urządzenia wirtualnego. (I5ba48)

Wersja 1.4.0-alpha05

17 kwietnia 2024 r.

Publikacja androidx.camera:camera-*:1.4.0-alpha05 Wersja 1.4.0-alpha05 zawiera te zmiany.

Nowe funkcje

  • Przekonwertowano ProcessCameraProvider na implementację w języku Kotlin. (I46d4f)
  • Dodano funkcje zawieszenia ImageCapture.takePicture, aby umożliwić ich wywoływanie w sposób idiomatyczny dla języka Kotlin. (I920be)

Zmiany w interfejsie API

  • Dodaj interfejsy API formatu wyjściowego do ImageCapture i metodę getSupportedOutputFormats do ImageCaptureCapabilities, aby umożliwić wysyłanie zapytań o możliwości urządzenia. Domyślna wartość formatu wyjściowego to OUTPUT_FORMAT_JPEG, co oznacza, że obrazy SDR są zapisywane w formacie JPEG. Jeśli urządzenie obsługuje ultra HDR, a format wyjściowy jest ustawiony na OUTPUT_FORMAT_JPEG_ULTRA_HDR, CameraX będzie robić zdjęcia skompresowane w ultra HDR w formacie pliku graficznego JPEG/R. Format jest zgodny wstecznie z formatem SDR JPEG i obsługuje renderowanie treści HDR. Oznacza to, że w starszych aplikacjach lub na starszych urządzeniach obrazy są wyświetlane jako zwykłe pliki JPEG, a w aplikacjach i na urządzeniach, które zostały zaktualizowane, aby w pełni obsługiwać ten format, obrazy są wyświetlane w trybie HDR. (I5de50)
  • Dodanie metody PhysicalCameraInfo w CameraInfo do wysyłania zapytań o informacje o aparacie fizycznym oraz dodanie metody ustawiającej/pobierającej identyfikator aparatu fizycznego w CameraSelector (Ic5b90)
  • Zastąp CameraController#COORDINATE_SYSTEM_VIEW_REFERENCED tekstem ImageAnalysis#COORDINATE_SYSTEM_VIEW_REFERENCED. Wartość stałej pozostaje bez zmian. Służy do konsolidacji wszystkich stałych w jednym miejscu. (I890bb)
  • Nowy interfejs API RetryPolicy umożliwia deweloperom dostosowywanie zachowania ponownych prób inicjowania CameraX. (I36dd2)
  • Włącz tworzenie obiektu ImageCaptureLatencyEstimate, aby ułatwić testowanie (Iaba99)
  • Dodaj: ImageAnalysis#COORDINATE_SYSTEM_SENSOR. Gdy ta opcja jest używana, MlKitAnalyzer zwraca współrzędne w układzie współrzędnych czujnika aparatu. (I3ec61)
  • Udostępniony interfejs API metadanych rozszerzeń. Nowe interfejsy CameraExtensionsInfo i CameraExtensionsControl umożliwiają aplikacjom monitorowanie i dostosowywanie ustawień siły rozszerzenia. Aplikacje mogą uzyskać instancję CameraExtensionsInfo lub CameraExtensionsControl za pomocą nowo dodanych metod ExtensionsManager#getCameraExtensionsInfo() lub ExtensionsManager#getCameraExtensionsControl(). (I28e1a)
  • Dodano ProcessCameraProvider.awaitInstance, czyli wersję ProcessCameraProvider.getInstance, która zawiesza działanie (Ib22b9)
  • Dodaj interfejs API PreviewView#getSensorToViewTransform(). Macierz reprezentuje przekształcenie współrzędnych czujnika aparatu we współrzędne urządzenia PreviewView. Można go użyć do przekształcania współrzędnych z jednego UseCase na inny. Możesz na przykład przekształcić współrzędne wykrytych obiektów w ImageAnalysis na nakładkę PreviewView. (I947ab)
  • Uczyń interfejs API camera-viewfinder-core bardziej ogólnym, aby mogły go używać camera-viewfinder i camera-viewfinder-compose. (I1e295)
  • Dodaj funkcję getSurface do ViewfinderSurfaceRequest. (I781a0)
  • Używaj camera-viewfinder-core w camera-viewfinder i wycofaj ViewfinderSurfaceRequest oraz CameraViewfinder. (I6198c)
  • Dodano ZoomGestureDetector, który interpretuje gesty skalowania skonfigurowane specjalnie pod kątem aktywności związanej ze szczypaniem w celu powiększenia. (Ifafbf)

Poprawki błędów

  • Rozwiązaliśmy problem z wyborem rozdzielczości ImageAnalysis związany z ustawieniem domyślnej rozdzielczości docelowej analizatora: rozdzielczość docelowa była nieprawidłowo utrzymywana na poziomie 640 x 480, nawet jeśli aplikacje miały ustawioną inną domyślną rozdzielczość analizatora. Jeśli w aplikacjach występuje ten problem (1.3.0–1.3.2) i nie można ich uaktualnić do nowszych wersji, które zawierają rozwiązanie, można go obejść, bezpośrednio ustawiając ResolutionSelector z preferowaną rozdzielczością i odpowiadającym jej AspectRatioStrategy na ImageAnalysis UseCase. (I81f72, b/330091012)
  • Rozwiązaliśmy problem, który powodował, że żądanie takePicture w kolejce mogło nie zostać wykonane, jeśli bieżące żądanie nie powiodło się. (Ie0801)
  • Zastosuj sprawdzanie nieprawidłowych danych JPEG na urządzeniach Vivo X60 i X60 Pro. Może to rozwiązać problem z nieprawidłowo dużym obrazem na tych urządzeniach. (I82247, b/288828159)
  • Rozwiązaliśmy problem z nieprawidłowymi metadanymi obrazów JPEG na urządzeniach Samsung A24. Dzięki tej poprawce CameraX może zapisać obraz JPEG, a podczas wywoływania funkcji ImageProxy.toBitmap() na urządzeniach Samsung A24 mogą być zwracane prawidłowe obiekty Bitmap. (I8d6eb, b/309005680)
  • Zastosuj sprawdzanie nieprawidłowych danych JPEG na wszystkich urządzeniach Samsung, jeśli zrobione zdjęcie jest większe niż 10 MB. Może to rozwiązać problem z nieprawidłowo dużym obrazem na urządzeniach Samsung. (Ic2a65, b/288828159)
  • Usunęliśmy obsługę ImageAnalysis w rozszerzeniach CameraX, ponieważ wiele implementacji rozszerzeń OEM nie działa dobrze z ImageAnalysis i może powodować problemy z niespójnością. (I2d926)

Wersja 1.4.0-alpha04

24 stycznia 2024 r.

Publikacja androidx.camera:camera-*:1.4.0-alpha04 Wersja 1.4.0-alpha04 zawiera te zatwierdzenia.

Nowe funkcje

  • Nowy artefakt: camera-effects: biblioteka do stosowania efektów w czasie rzeczywistym do danych wyjściowych CameraX, w tym Preview, VideoCapture lub ImageCapture. Ten artefakt zawiera implementacje OpenGL interfejsu API CameraEffect, który skutecznie manipuluje danymi wyjściowymi z kamery.
  • OverlayEffect: do rysowania nakładek za pomocą interfejsu Canvas API na Androidzie. Dzięki temu aplikacja może dodawać znak wodny lub wyróżniać wykryte obiekty na obrazie z kamery.
  • Interfejsy API DynamicRange do podglądu: zakres dynamiki można teraz ustawić w przypadku podglądu, niezależnie od przypadku użycia wideo. Umożliwia to korzystanie z zakresów dynamicznych HDR, takich jak HLG10, tylko w przypadku podglądu. W CameraInfo są też dostępne nowe interfejsy API, które umożliwiają sprawdzanie, jakie zakresy dynamiczne obsługuje dany aparat.

Zmiany w interfejsie API

  • Zmieniono nazwę ScreenFlashUiCompleter na ScreenFlashListener i przeniesiono ScreenFlashUiCompleter#getExpirationTimeMillis do parametru expirationTimeMillis w ScreenFlash#apply. (I13944)
  • Dodano nowe interfejsy API, które umożliwiają ustawianie zakresu dynamicznego w przypadku podglądu i wykonywanie zapytań o zakresy dynamiczne obsługiwane przez poszczególne aparaty. Dzięki temu zakresy dynamiczne HDR, takie jak HLG10, mogą być używane tylko w przypadku podglądu, bez konieczności jednoczesnego powiązania z VideoCapture. (If25e3)
  • Zmieniono nazwę getMirroring() na isMirroring() (I47063)
  • Dodaliśmy w CameraX obsługę szacowania opóźnienia przechwytywania zdjęć w czasie rzeczywistym. Rozszerzenia aparatu umożliwiają aplikacjom korzystanie z interfejsu API, który podaje szacowany czas robienia zdjęcia. Szacunki uwzględniają bieżące warunki otoczenia, stan aparatu i czas przetwarzania żądań przechwytywania wielu klatek, a także dodatkowy czas na kodowanie przetworzonych buforów, jeśli jest to konieczne. (I05c3a)
  • Zmieniono nazwę ScreenFlashUiControl na ScreenFlash, ScreenFlashUiControl#applyScreenFlashUi na ScreenFlash#apply, ScreenFlashUiControl#clearScreenFlashUi na ScreenFlash#clear i dodano metodę getScreenFlashUiApplyTimeoutSeconds zamiast bezpośredniego udostępniania SCREEN_FLASH_UI_APPLY_TIMEOUT_SECONDS. (Iccdd0)

Poprawki błędów

  • Naprawiliśmy wyciek pamięci, który powodował, że aktywności lub fragmenty nie były zwalniane, gdy rozszerzenia były włączone (I14215).
  • Rozwiązaliśmy problem, który powodował, że funkcja getZoomRatio nieprawidłowo zwracała mniejszą wartość podczas stosowania rosnącego współczynnika powiększenia. (I4aa0d, b/317543616)
  • Zdarzenie ImageCapture#ScreenFlash#clear jest wywoływane natychmiast po odłączeniu ImageCapture lub zamknięciu kamery. Rozwiązuje to też niektóre błędy, w przypadku których zdarzenie nie jest wywoływane, ponieważ przechwytywanie w tych scenariuszach nie zostało prawidłowo zakończone. (If99f9)
  • Naprawiliśmy błąd powodujący awarię, gdy cykl życia został zatrzymany przed zakończeniem żądania takePicture (Idf017, b/306202751).
  • Rozwiązaliśmy problem, który powodował, że podgląd z aparatu stawał się czarny, gdy na niektórych urządzeniach były włączone rozszerzenia (I1ffd0).
  • Naprawiliśmy błąd, który powodował nieprawidłowy czas trwania nagrania wideo na urządzeniach z układem Snapdragon 778G SoC. (If6aa7, b/316057919)

Wersja 1.4.0-alpha03

13 grudnia 2023 r.

Publikacja androidx.camera:camera-*:1.4.0-alpha03 Wersja 1.4.0-alpha03 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodano CameraInfo.mustPlayShutterSound, aby podać informacje o tym, czy dźwięk migawki musi być odtwarzany zgodnie z ograniczeniami regionalnymi. (Ifda84)
  • Dodano OnImageCapturedCallback.onCaptureStarted i OnImageSavedCallback.onCaptureStarted, aby powiadamiać o rozpoczęciu naświetlania klatki przez aparat. W tym momencie zalecamy odtworzenie dźwięku migawki lub animacji migawki. (Ic49b3)
  • Dodaliśmy obsługę funkcji błysku na ekranie w CameraX podczas robienia zdjęć przednim aparatem. CameraX zajmie się obsługą interfejsu API po stronie platformy i w razie potrzeby zsynchronizuje czas ze zmianami w interfejsie aplikacji (np. aktywowanie wstępnego przechwytywania AE po zmianie koloru lub jasności ekranu aplikacji). Aplikacje będą musiały tylko dodać implementacje po stronie interfejsu w interfejsie ScreenFlashUiControl udostępnianym CameraX. (I8ae84)
  • Dodano obsługę implementacji interfejsu funkcji błysku na ekranie w CameraX. Aplikacje będą mogły korzystać z podstawowej implementacji ImageCapture.ScreenFlashUiControl z PreviewView lub nowo dodanej ScreenFlashView, która doda jednokolorową nakładkę i zmaksymalizuje jasność ekranu podczas robienia zdjęcia z błyskiem na ekranie. (I1810e)

Zmiany w interfejsie API

  • Obsługa nowych funkcji rozszerzeń(podgląd po zrobieniu zdjęcia i postęp procesu przechwytywania): dodano interfejsy API ImageCapture#getImageCaptureCapabilities(), aby aplikacje mogły wysyłać zapytania o możliwości wywołania zwrotnego podglądu po zrobieniu zdjęcia i postępu procesu przechwytywania. Aplikacje mogą włączyć widok po wyświetleniu za pomocą ImageCapture.Builder#setPostviewEnabled(). Rozmiar po wyświetleniu można wybrać za pomocą ImageCapture.Builder#setPostviewResolutionSelector(). Podczas wywoływania takePicture(), onPostviewBitmapAvailable i onCaptureProcessProgressed można zaimplementować w OnImageSavedCallback lub OnImageCapturedCallback, aby otrzymywać powiadomienia o postępach w przetwarzaniu i podglądzie, jeśli są obsługiwane. (I5cd88)
  • Interfejsy API do obliczania przekształcenia współrzędnych z czujnika do bieżącego bufora z flagą wskazującą, czy powierzchnia zawiera informacje o orientacji aparatu (I59096).
  • Udostępnij interfejs API, aby wysyłać zapytania do PreviewCapabitlity w wersji testowej UseCase. (Ie5b6c)
  • Dodano interfejsy API obsługujące więcej jakości w przypadku VideoCapture. Recorder.Builder#setVideoCapabilitiesSource(int) można używać z VIDEO_CAPABILITIES_SOURCE_CODEC_CAPABILITIES, aby utworzyć instancję Recorder, która obsługuje więcej jakości niż VIDEO_CAPABILITIES_SOURCE_CAMCORDER_PROFILE. Typowym przypadkiem użycia jest sytuacja, gdy aplikacja stara się nagrywać filmy w UHD, gdy tylko jest to możliwe, ale CamcorderProfile urządzenia nie zawiera ustawień UHD, mimo że kodek może nagrywać filmy w UHD. (Iedbe2, b/263961771)
  • Dodaj metodę pobierającą/ustawiającą format wyjściowy ImageAnalysis do CameraController. (I9a96c, b/308240643)

Poprawki błędów

  • Aparat 1.3.1: ulepszyliśmy działanie ProcessCameraProvider#bindToLifecycle(). Główna zmiana polega na optymalizacji procesu identyfikowania najbardziej odpowiednich kombinacji rozmiarów dla: UseCases. Optymalne wyniki różnią się w zależności od konkretnych kombinacji UseCase i liczby obsługiwanych rozmiarów wyjściowych na urządzeniach docelowych. (I454f2)
  • Zezwalaj na korzystanie z VideoCapture, gdy rozszerzenia są włączone. (I91f32)
  • Rozwiązaliśmy problem z dużymi zdjęciami JPEG na urządzeniach Samsung z serii A71 i M51. Zrobione zdjęcia JPEG zawierają zbędne dane dopełniające 0 w segmencie danych skompresowanych JFIF. Powoduje to, że przechwycone obrazy mają bardzo duży rozmiar pliku. Te zbędne dane dopełniające 0 zostaną usunięte, aby przechwycone obrazy miały normalne rozmiary plików graficznych. (I01afc, b/288828159)
  • Wyłącz obsługę ImageAnalysis na Pixelach, aby uniknąć błędu na Pixelu, który przypadkowo zwraca niepuste obsługiwane rozmiary ImageAnalysis. (I7ec31)
  • Rozwiązaliśmy problem z wydajnością, który powodował wzrost obciążenia procesora i zużycia energii po włączeniu rozszerzeń. (Ibdccb)
  • Dodano procesor Snapdragon 480 do CameraUseInconsistentTimebaseQuirk. Rozwiązuje to problem na urządzeniach z Androidem 12, które używają tego chipsetu, polegający na tym, że dźwięk w nagraniach jest przesunięty o czas, przez który urządzenie było w stanie zawieszenia. (I58010)

Wersja 1.4.0-alpha02

18 października 2023 r.

Publikacja androidx.camera:camera-*:1.4.0-alpha02 Wersja 1.4.0-alpha02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Zmień nazwę interfejsu API na setCameraOpenRetryMaxTimeoutInMillisWhileResuming i zmień nazwę argumentu. (I72370)
  • Dodanie interfejsów API do wysyłania zapytań o możliwości urządzenia i włączania stabilizacji wideo/podglądu. (I87544)
  • Udostępnij interfejs API, aby dostosować maksymalny czas oczekiwania na ponowną próbę otwarcia aparatu. (I0c642)
  • Udostępniliśmy interfejs ProcessCameraProvider.shutdownAsync jako publiczny interfejs API do testowania, aby umożliwić korzystanie z dostawcy aparatu procesowego w pakietach testów, które mogą wymagać inicjowania CameraX na różne sposoby między testami. (I9eca7)
  • Dodano interfejsy API do konfigurowania zakresu dynamicznego, liczby klatek i trybu odbicia lustrzanego podczas nagrywania filmów. (Ifb8f7)
  • Wycofaj OutputSize i zastąp go ResolutionSelector. ResolutionSelector to bardziej kompleksowy sposób wybierania rozdzielczości, który jest zgodny z interfejsem API camera-core. (I93abd, b/286801438)

Poprawki błędów

  • Rozwiązaliśmy problem z czarnym podglądem na telefonie Samsung Galaxy S23 Ultra 5G, gdy włączone są rozszerzenia Bokeh lub Retusz twarzy z ImageAnalysis na tylnym aparacie. (I2e8b1)
  • Rozwiązaliśmy problemy z podglądem i rozciągniętym obrazem VideoCapture na urządzeniu Moto E5 Play. (73dce2)

Wersja 1.4.0-alpha01

20 września 2023 r.

Publikacja androidx.camera:camera-*:1.4.0-alpha01 Wersja 1.4.0-alpha01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodaj nowy interfejs API, aby uzyskać dostęp do informacji o amplitudzie dźwięku podczas nagrywania. (Id4925)

Poprawki błędów

  • Poprawiliśmy stabilność rozszerzeń, zapewniając, że zdarzenia inicjowania i deinicjowania są wywoływane we właściwej kolejności. (Ib3b8e)
  • Naprawiliśmy błąd konfiguracji sesji przechwytywania, który występował, gdy przekroczono obsługiwaną kombinację powierzchni z powodu wewnętrznego dodania dodatkowej powtarzającej się powierzchni. (Id718c)
  • Rozwiązaliśmy problem z dużymi zdjęciami JPEG na urządzeniu Vivo S16. Zrobione zdjęcia JPEG zawierają zbędne dane dopełniające 0 w segmencie danych skompresowanych JFIF. Powoduje to, że zrobione zdjęcia mają duży rozmiar pliku. Te zbędne dane dopełniające 0 zostaną usunięte, aby przechwycone obrazy miały normalne rozmiary plików graficznych. (I79505, b/299069235)
  • Rozwiązaliśmy problem, który powodował, że nie można było powiązać ImageAnalysis z ImageCapture i podglądem, gdy na niektórych urządzeniach były włączone niektóre tryby rozszerzenia. Poprawka będzie zwracać prawidłową wartość, gdy aplikacje będą wysyłać zapytania o dostępność ImageAnalysis przez ExtensionsManager#isImageAnalysisSupported(). (I7d538)
  • Zaktualizuj JavaDoc, aby pasował do zachowania. Zamiast natychmiastowego zakończenia działania funkcje #setZoomRatio, #setLinearZoom i #enableTorch czekają, aż aparat będzie gotowy. Dodaliśmy też informacje o tym, jak uzyskać maksymalne pole widzenia za pomocą interfejsu API #takePicture. (I23588)

Wersja 1.3

Wersja 1.3.4

12 czerwca 2024 r.

Publikacja androidx.camera:camera-*:1.3.4 Wersja 1.3.4 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że funkcja getZoomRatio nieprawidłowo zwracała mniejszą wartość po zastosowaniu większego współczynnika powiększenia. (I4aa0d, b/317543616)
  • Naprawiliśmy błąd, który powodował, że podczas robienia zdjęcia lub ustawiania ostrości przez dotknięcie nie były używane wartości trybu stabilizacji i FPS powtarzającego się żądania. Mogło to powodować ponowne utworzenie sesji przechwytywania i problemy z opóźnieniem lub zawieszanie się podglądu na niektórych urządzeniach. (I7dc0b)
  • Rozwiązaliśmy problem, który powodował, że liczba klatek była ustawiana na niższą wartość podczas wywoływania setTargetFrameRate za pomocą FRAME_RATE_RANGE_UNSPECIFIED. (I78c61)

Wersja 1.3.3

17 kwietnia 2024 r.

Publikacja androidx.camera:camera-*:1.3.3 Wersja 1.3.3 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem z wyborem rozdzielczości ImageAnalysis związany z ustawieniem domyślnej rozdzielczości docelowej analizatora: rozdzielczość docelowa była nieprawidłowo utrzymywana na poziomie 640 x 480, nawet jeśli aplikacje miały ustawioną inną domyślną rozdzielczość analizatora. Jeśli aplikacje napotkają ten problem (1.3.0 ~ 1.3.2) i nie można ich uaktualnić do nowszych wersji zawierających rozwiązanie, można go obejść, bezpośrednio ustawiając ResolutionSelector z preferowaną rozdzielczością i odpowiadającym jej AspectRatioStrategy na ImageAnalysis UseCase. (I81f72, b/330091012)

Wersja 1.3.2

6 marca 2024 roku

Publikacja androidx.camera:camera-*:1.3.2 Wersja 1.3.2 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem z metadanymi JPEG na urządzeniach Samsung A24. CameraX zapisuje teraz obrazy prawidłowo, a funkcja ImageProxy.toBitmap() zwraca poprawne obiekty Bitmap. (I8d6eb, b/309005680)
  • Usunęliśmy opcję rozdzielczości 9280 x 6944 na urządzeniach Redmi Note 9 Pro z powodu problemów. (Ia23da)

Wersja 1.3.1

13 grudnia 2023 r.

Publikacja androidx.camera:camera-*:1.3.1 Wersja 1.3.1 zawiera te zatwierdzenia.

Poprawki błędów

Poprawiliśmy wydajność ProcessCameraProvider#bindToLifecycle(). Główna zmiana polega na optymalizacji procesu identyfikowania najbardziej odpowiednich kombinacji rozmiarów dla: UseCases. Optymalne wyniki różnią się w zależności od konkretnych kombinacji UseCase i liczby obsługiwanych rozmiarów wyjściowych na urządzeniach docelowych. (I454f2)

Oto kilka przykładowych wyników dla różnych scenariuszy:

  • 4 pokoje: UseCases: Preview + ImageCapture + ImageAnalysis + VideoCapture

    • Google Pixel 7: od około 430 ms do 60 ms
    • Samsung Galaxy S23 Ultra: od około 540 ms do 45 ms
    • Samsung A53 5G: około 115–70 ms,
  • Trzy UseCases: Preview + ImageCapture + ImageAnalysis

    • Google Pixel 7: około 9–7 ms
    • Samsung Galaxy S23 Ultra: około 6–5 ms
    • Samsung A53 5G: od około 32 ms do 12 ms
  • Dodano procesor Snapdragon 480 do CameraUseInconsistentTimebaseQuirk. Rozwiązuje to problem na urządzeniach z Androidem 12, które używają tego chipsetu, polegający na tym, że dźwięk w nagraniach jest przesunięty o czas, przez który urządzenie było w stanie zawieszenia. (I58010)

Wersja 1.3.0

18 października 2023 r.

Publikacja androidx.camera:camera-*:1.3.0 Wersja 1.3.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.2.0

Wersja 1.3.0-rc02

20 września 2023 r.

Publikacja androidx.camera:camera-*:1.3.0-rc02 Wersja 1.3.0-rc02 zawiera te zatwierdzenia.

Poprawki błędów

  • Poprawiliśmy stabilność rozszerzeń, zapewniając, że zdarzenia inicjowania i deinicjowania są wywoływane we właściwej kolejności. Rozwiązaliśmy niektóre problemy z czarnym podglądem podczas przełączania trybów rozszerzeń lub aparatów. (Iddaac)
  • Rozwiązaliśmy problem, który powodował, że nie można było powiązać ImageAnalysis z ImageCapture i podglądem, gdy na niektórych urządzeniach były włączone niektóre tryby rozszerzenia. Dzięki tej poprawce aplikacje będą otrzymywać prawidłową wartość, gdy będą sprawdzać dostępność ImageAnalysis za pomocą ExtensionsManager#isImageAnalysisSupported(). (I7d538)
  • Rozwiązaliśmy problem, który powodował, że dźwięk i obraz nagranego filmu nie były zsynchronizowane, gdy na urządzeniu Xiaomi Poco X3 NFC był włączony tryb odbicia lustrzanego. (I20b4c)

Wersja 1.3.0-rc01

23 sierpnia 2023 r.

Publikacja androidx.camera:camera-*:1.3.0-rc01 Wersja 1.3.0-rc01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano PendingRecording.asPersistentRecording, aby umożliwić ciągłe nagrywanie, gdy VideoCapture, do którego jest podłączony rejestrator, jest ponownie powiązany. (I517c6)

Poprawki błędów

  • Naprawiliśmy błąd powodujący awarię, gdy strumień jest udostępniany zarówno w VideoCapture, jak i w trybie podglądu. Naprawiliśmy też problem z czarnym ekranem na urządzeniach LEGACY, gdy włączone jest udostępnianie strumienia.
  • Rozwiązaliśmy problem z dużymi zdjęciami JPEG na urządzeniach z serii Samsung S7 (SM-G930T, SM-G930V). Zrobione zdjęcia JPEG zawierają zbędne dane dopełniające z zerami w segmencie danych skompresowanych JFIF. Powoduje to, że zrobione zdjęcia mają duży rozmiar pliku. Te zbędne dane dopełniające 0 zostaną usunięte, aby przechwycone obrazy miały normalne rozmiary plików graficznych. (I407b0, b/288828159)
  • Rozwiązaliśmy problem z dużymi zdjęciami JPEG na urządzeniach z serii Samsung S22 (SM-S901B, SM-S901B/DS) i S22+ (SM-S906B). Zrobione zdjęcia JPEG zawierają zbędne dane dopełniające 0 w segmencie danych skompresowanych JFIF. Powoduje to, że zrobione zdjęcia mają duży rozmiar pliku (około 13 MB) na urządzeniu S22 SM-S901B/DS. Te zbędne dane dopełniające 0 zostaną usunięte, aby przechwycone obrazy miały normalne rozmiary plików graficznych. (I73be9, b/288828159)
  • Rozwiązaliśmy problem z dużymi zdjęciami JPEG na urządzeniach Samsung z serii A5, A52, A70 i A72. Zrobione zdjęcia JPEG zawierają zbędne dane dopełniające 0 w segmencie danych skompresowanych JFIF. Powoduje to, że zrobione zdjęcia mają bardzo duży rozmiar (np. około 32 MB lub nawet 96 MB). Te zbędne zera zostaną usunięte, aby rozmiary plików obrazów były normalne. (I97c4d, b/288828159)
  • Naprawiliśmy błąd powodujący awarię systemową podczas robienia zdjęć z włączonymi rozszerzeniami (I698f5).

Wersja 1.3.0-beta02

26 lipca 2023 r.

Publikacja androidx.camera:camera-*:1.3.0-beta02 Wersja 1.3.0-beta02 zawiera te zatwierdzenia.

Poprawki błędów

  • Używanie latarki jako lampy błyskowej w Pixelu 4 i 5 w celu poprawy jakości zdjęć przy słabym oświetleniu (I56ff5, b/280221967)
  • Rozwiązaliśmy problem z dużymi zdjęciami JPEG na urządzeniach z serii Samsung A5 (2017). Zrobione zdjęcia JPEG zawierają zbędne dane dopełniające 0 w segmencie danych skompresowanych JFIF. Powoduje to, że rozmiar pliku z obrazem wynosi około 32 MB. Te zbędne zera zostaną usunięte, aby rozmiary plików obrazów były normalne. (I29837, b/288828159)
  • Rozwiązaliśmy problem z nieprawidłowym uruchamianiem ponownej próby w przypadku niepowodzenia przechwytywania na problematycznych urządzeniach wymienionych w CaptureFailedRetryQuirk. (I7b589)

Wersja 1.3.0-beta01

21 czerwca 2023 r.

Publikacja androidx.camera:camera-*:1.3.0-beta01 Wersja 1.3.0-beta01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Zmieniono nazwę funkcji ResolutionSelector.Builder#setHighResolutionEnabledFlag(int) na setAllowedResolutionMode oraz nazwy stałych ResolutionSelector#HIGH_RESOLUTION_FLAG_OFF/ON na PREFER_CAPTURE_RATE_OVER_HIGHER_RESOLUTION/PREFER_HIGHER_RESOLUTION_OVER_CAPTURE_RATE (If84e8).
  • Usunięto wycofane interfejsy API ImageAnalysis.setTargetRotationDegrees(int), ImageCapture.setTargetRotationDegrees(int) i VideoCapture.setTargetRotationDegrees(int). (Id8e77)
  • Klasa DynamicRange reprezentuje zakres dynamiczny obrazów. Można go użyć do wybrania formatów High Dynamic Range jako danych wyjściowych VideoCapture do VideoCapture.Builder#setDynamicRange(). (Ib0377)
  • Dodano interfejs API isImageAnalysisSupported do ExtensionsManager, dzięki któremu aplikacje mogą określić, czy przypadek użycia ImageAnalysis można powiązać z podglądem i ImageCapture, gdy rozszerzenia są włączone. (I1bc63)
  • Nowej klasy VideoCapabilities uzyskanej z Recorder można używać do wysyłania zapytań o obsługiwane zakresy dynamiczne i jakości nagrywania filmów na urządzeniu. Metody getSupportedQualities() i isQualitySupported() interfejsu QualitySelector są wycofywane. Zamiast tego użyj metod getSupportedQualities() i isQualitySupported() interfejsu VideoCapabilities. (I04014)
  • Nazwa CameraController#setVideoCaptureTargetQuality() została zmieniona na setVideoCaptureQualitySelector i przyjmuje argument QualitySelector, co zapewnia większą elastyczność podczas konfigurowania jakości filmu. Wartość CameraController#getVideoCaptureTargetQuality() zostanie odpowiednio zmieniona na getVideoCaptureQualitySelector. (I520ed)
  • Usunięto adnotację eksperymentalną dotyczącą funkcji wideo. Funkcje wideo są teraz stabilne. (I1a113)

Poprawki błędów

  • Używaj latarki jako lampy błyskowej w modelach Samsung SM-A320, aby zwiększyć szybkość i poprawić jakość zdjęć robionych przy słabym oświetleniu. (I6a022, b/286190938)
  • Dodaj obsługę formatu ImageFormat.JPEG dla ImageProxy.toBitmap(). Jeśli nie uda się zdekodować tablicy bajtów JPEG, zostanie wygenerowany błąd UnsupportedOperationException. (I81958, b/282057603)

Wersja 1.3.0-alpha07

24 maja 2023 r.

Publikacja androidx.camera:camera-*:1.3.0-alpha07 Wersja 1.3.0-alpha07 zawiera te zatwierdzenia.

Nowe funkcje

  • Nowy interfejs API VideoCapture.Builder# setTargetFrameRate(Range) umożliwia nagrywanie filmów z inną liczbą klatek niż domyślna na urządzeniu. Dostępne liczby klatek na sekundę w nagraniach można sprawdzić za pomocą nowego interfejsu API CameraInfo#getSupportedFrameRates().

Zmiany w interfejsie API

  • Zmieniono nazwy stałych ResolutionSelector#HIGH_RESOLUTION_FLAG_OFF/ON na ALLOWED_RESOLUTIONS_NORMAL/SLOW oraz nazwę funkcji kreatora setHighResolutionEnabledFlag na setAllowedResolutionMode. (Iae817)
  • CameraInfo#getSupportedFrameRateRanges() zwraca teraz Set zamiast List, aby lepiej odzwierciedlić, że zakresy nie są uporządkowane. (I02f43)
  • Dodaj detektor błędów do CameraEffect, aby obsługiwać nieodwracalne błędy (Ice471)
  • Dodanie konstruktora publicznego w ResolutionInfo w celu ułatwienia testowania (If6d1c)
  • Udostępniliśmy interfejs API UseCase.snapToSurfaceRotation(int), który zastępuje setTargetRotationDegrees, i wycofaliśmy interfejsy API ImageAnalysis.setTargetRotationDegrees(int), ImageCapture.setTargetRotationDegrees(int) i VideoCapture.setTargetRotationDegrees(int). (Ia9010)
  • Dodano nowe interfejsy API Preview#getTargetFrameRate i Preview.Builder#setTargetFrameRate, aby umożliwić ustawianie i pobieranie docelowej liczby klatek w przypadku podglądu (If4f22).
  • VideoRecordEvent.Finalize będzie teraz kończyć działanie z kodem błędu ERROR_RECORDING_GARBAGE_COLLECTED, gdy obiekt Recording zostanie zatrzymany z powodu czyszczenia pamięci. (Iba974)

Poprawki błędów

  • Naprawiono błąd NullPointerException, gdy rozmiary danych wyjściowych w pamięci podręcznej w StreamConfigurationMapCompat mają wartość null. (Idf124, b/282025204)
  • Rozwiązaliśmy problem polegający na tym, że Preview.setSurfaceProvider(null) nie wstrzymuje podglądu w rozszerzeniach (Ia903e).
  • Rozwiązaliśmy problem, który powodował, że podczas otwierania aparatu, gdy VideoCapture jest powiązany, pojawiał się błąd ConcurrentModificationException. (Ic8ac4)

Wersja 1.3.0-alpha06

19 kwietnia 2023 r.

Publikacja androidx.camera:camera-*:1.3.0-alpha06 Wersja 1.3.0-alpha06 zawiera te zatwierdzenia.

Nowe funkcje

  • Jednoczesne korzystanie z aparatów to nowa funkcja wprowadzona w Androidzie 11, która umożliwia jednoczesne przesyłanie strumieniowe z aparatów, np. pozwala na jednoczesne działanie przedniego i tylnego aparatu urządzenia. CameraX obsługuje obecnie tylko 2 aparaty jednocześnie, co umożliwia działanie 2 aparatów w tym samym czasie, przy czym każdy z nich może mieć maksymalnie 2 powiązane przypadki użycia ({@link UseCase}). Maksymalna rozdzielczość to 720p lub 1440p. Więcej informacji znajdziesz pod tym linkiem: CameraManager#getConcurrentCameraIds().
  • Przedstawiamy nowy interfejs API ResolutionSelector, który obejmuje te funkcje:
    • Aplikacje mogą określać strategie dotyczące formatu obrazu i rozdzielczości, aby wybrać najlepszą rozdzielczość dla swoich potrzeb.
    • Wszystkie parametry rozmiaru i formatu obrazu są wyrażone we współrzędnych czujnika aparatu.
    • Aplikacje mogą implementować niestandardowy filtr rozdzielczości, aby uporządkować obsługiwane rozmiary w żądanej kolejności.
    • Aplikacje mogą też włączyć przechwytywanie w wysokiej rozdzielczości, aby uzyskiwać obrazy o wyższej rozdzielczości. Pamiętaj jednak, że użycie wysokiej rozdzielczości może wydłużyć czas przechwytywania.
    • Dodano VideoCapture interfejsy API powielania. Filmy nagrane przez VideoCapture nie są domyślnie odwracane. Domyślnie podgląd z aparatu jest jednak odwrócony w przypadku przedniego aparatu. Interfejsy API do odbicia lustrzanego VideoCapture umożliwiają dopasowanie do podglądu z aparatu podczas korzystania z przedniego aparatu. Są 3 MirrorMode, OFF, ON i ON_FRONT_ONLY. Aby dopasować obraz do podglądu z aparatu, zalecamy użycie ON_FRONT_ONLY, co oznacza, że odbicie lustrzane nie jest włączone w przypadku tylnego aparatu, ale jest włączone w przypadku przedniego aparatu.

Zmiany w interfejsie API

  • Udostępniono nowy interfejs API ResolutionSelector. Aplikacje mogą określać strategie dotyczące formatu obrazu i rozdzielczości za pomocą reguł zastępczych lub niestandardowego filtra rozdzielczości, aby uzyskać pożądane wyniki. Aplikacje mogą określić flagę, aby włączyć przechwytywanie w wysokiej rozdzielczości. Dzięki temu CameraX będzie mógł wybierać wyższe rozdzielczości podczas robienia zdjęć i nagrywania filmów. Pamiętaj jednak, że użycie wysokiej rozdzielczości może wydłużyć czas przechwytywania. (Ibed95)
  • Zakresy liczby klatek na sekundę obsługiwane przez algorytm AE można teraz sprawdzać za pomocą CameraInfo#getSupportedFrameRateRanges(). (Iaa67f)
  • Ujednolicenie nazw wszystkich metod związanych z liczbą klatek na sekundę, aby używały nazwy „FrameRate”. Popraw błąd w javadoc w VideoCapture#getTargetFrameRate() (I83304)
  • Wycofano starsze interfejsy API setTargetAspectRatio i setTargetResolution. Zamiast tego użyj nowego interfejsu API ResolutionSelector. (I542c3)
  • Dodaliśmy publiczne interfejsy API do jednoczesnego korzystania z obrazu z obu aparatów, w tym:
    1. List<List<CameraInfo>> getAvailableConcurrentCameraInfos()
    2. ConcurrentCamera bindToLifecycle(@NonNull ConcurrentCameraConfig concurrentCameraConfig)
    3. boolean isConcurrentCameraModeOn() oraz ConcurrentCameraConfig, SingleCameraConfig i ConcurrentCamera (Iab1c1)
  • Ustawienie ImageProcessor.Response#getOutputImage jako NonNull (Ib9c60)
  • Dodano interfejsy API powielania (VideoCapture), w tym VideoCapture.Builder.setMirrorMode(int) i VideoCapture.getMirrorMode(). Interfejsy API są przydatne w przypadku aplikacji, które wymagają, aby nagrywanie wideo było zgodne z typowym zachowaniem podglądu z aparatu, tzn. podgląd z tylnego aparatu nie jest odbiciem lustrzanym, ale podgląd z przedniego aparatu jest odbiciem lustrzanym. (I713b6, b/194634656)
  • Dodaj interfejs API setTargetFrameRate() w VideoCapture.Builder i interfejs API getTargetFramerate() w VideoCapture (I109d4)
  • Ustaw SurfaceOutput jako rozszerzenie Closable i ukryj publiczny konstruktor SurfaceOutput.Event. (I60ea8)
  • Dodano Recording.mute, aby dynamicznie wyciszać lub wyłączać wyciszenie nagrania w trakcie przetwarzania. Gdy nagranie w trakcie przetwarzania zostanie wyciszone, RecordingStats będzie zawierać AudioStats.AUDIO_STATE_MUTED. (Ie17fc)
  • Parametr #setEffects() nie może mieć wartości null. Dodaj interfejs API #clearEffects() do usuwania efektów. Aby usunąć efekty, aplikacja powinna wywołać funkcję #clearEffects(). (I4b4d9)
  • Dodanie drugiego konstruktora dla ViewfinderSurfaceRequest.Builder, aby użyć kreatora dla konstruktora kopiującego (I621a7)

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że aplikacje wywołujące interfejs Extensions API mogły ulegać awarii podczas zamykania aparatu (Ib27e5).
  • Rozwiązaliśmy problem, który powodował, że na niektórych urządzeniach funkcja VideoCapture nie działała z przednim aparatem. Na przykład na telefonach Samsung Galaxy S23 i Xiaomi 2107113SG. (Ibec7e, b/270656244)
  • Rozwiązaliśmy problem, który powodował, że robienie zdjęć za pomocą aplikacji Pliki w folderze publicznym w pamięci zewnętrznej zawsze kończyło się niepowodzeniem na urządzeniach z Androidem 10 lub nowszym. Pamiętaj, że w Androidzie 10 robienie zdjęć za pomocą pliku w folderze publicznym pamięci zewnętrznej wymaga też ustawienia wartości requestLegacyExternalStorage na „true” w tagu aplikacji. (I11b2c)
  • Naprawiono awarię RejectedExecutionException w DefaultSurfaceProcessor. Awaria może wystąpić, gdy usługa VideoCapture jest powiązana, a aktywność jest wstrzymana. (Idb46a, b/273713906)

Wersja 1.3.0-alpha05

22 marca 2023 r.

Publikacja androidx.camera:camera-*:1.3.0-alpha05 Wersja 1.3.0-alpha05 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano interfejsy API rotacji VideoCapture, w tym VideoCapture.Builder.setTargetRotation(int), VideoCapture.setTargetRotation(int), VideoCapture.setTargetRotationDegrees(int) i VideoCapture.getTargetRotation(). Interfejsy API są przydatne w przypadku aplikacji, które blokują orientację urządzenia. Dodano też ImageCapture.setTargetRotationDegrees(int) i ImageAnalysis.setTargetRotationDegrees(int). (Id3ffe, b/205242781)
  • Zezwalaj na VIDEO_CAPTURE i PREVIEW|VIDEO_CAPTURE jako cel efektów. Efekty kierowane na VIDEO_CAPTURE zostaną zastosowane do UseCase VideoCapture. Efekty kierowane na PREVIEW|VIDEO_CAPTURE zostaną zastosowane do udostępnionego strumienia przed skopiowaniem do podglądu i strumienia VideoCapture. (Iee6f3)

Poprawki błędów

  • Aparat 1.2.2: rozwiązaliśmy problem, który powodował, że rozszerzenia CameraX nie działały prawidłowo, gdy na niektórych urządzeniach, takich jak Pixel, włączony był ProGuard (I90aa2).
  • Naprawiliśmy błąd w PreviewView, który powodował, że jeśli aplikacja sama obsługiwała orientację ekranu, podgląd mógł ulec zniekształceniu po obróceniu. Dzieje się tak tylko na niektórych urządzeniach. Problem można odtworzyć na Pixelu 4a, Pixelu 5 i Pixelu 6a. (I14340, b/223488673)

Wersja 1.3.0-alpha04

22 lutego 2023 roku

Publikacja androidx.camera:camera-*:1.3.0-alpha04 Wersja 1.3.0-alpha04 zawiera te zatwierdzenia.

Nowe funkcje

Nowa funkcja obsługująca wcześniej nieobsługiwane kombinacje Surface przez udostępnianie jednego strumienia wielu UseCase.

  • Wcześniej, gdy powiązano „Preview, VideoCapture, ImageAnalysis” na poziomie sprzętowym aparatu FULL i niższym lub „Preview, VideoCapture, ImageCapture” na poziomie sprzętowym LEGACY, CameraX zgłaszał błąd IllegalArgumentException.
  • Nowe działanie polega na tym, że powiązania będą działać bez zgłaszania wyjątków. Zamiast tego CameraX używa OpenGL do kopiowania udostępnionego strumienia zarówno do podglądu, jak i do VideoCapture.
  • W rezultacie aplikacja może odnotować wzrost opóźnienia i zużycia energii.

Zmiany w interfejsie API

  • Dodaj interfejs API, aby przekonwertować ImageProxy na Bitmap. Obsługiwane formaty ImageProxy to ImageFormat.YUV_420_888 i PixelFormat.RGBA_8888. Jeśli format jest nieprawidłowy, zostanie wygenerowany błąd IllegalArgumentException. (Ic7110)
  • Dodaj CoroutineCameraViewfinder, aby umożliwić konfigurowanie wizjera za pomocą funkcji zawieszania w Kotlinie. (I657bc)
  • Dodaj nowy konstruktor publiczny dla ViewfinderSurfaceRequest. Zapewnia elastyczność, gdy użytkownik nie może podać CameraCharacteristics. (Ie6549)

Poprawki błędów

  • Naprawiliśmy błąd powodujący awarię rozszerzeń na niektórych urządzeniach Samsung, gdy aplikacja jest zbyt szybko wstrzymywana i wznawiana (Iaca26).

Wersja 1.3.0-alpha03

25 stycznia 2023 r.

Publikacja androidx.camera:camera-*:1.3.0-alpha03 Wersja 1.3.0-alpha03 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano parametr CameraInfo.getIntrinsicZoomRatio, aby podać informacje o kącie widzenia w odniesieniu do kamery domyślnej. (Ib300c)
  • Dodano CameraInfo.getLensFacing, aby podać informacje o kierunku obiektywu. Dodano CameraSelector#LENS_FACING_EXTERNAL jako funkcję eksperymentalną do wybierania kamer zewnętrznych. (Icaf3e)
  • Dodaj do CameraController element #setEffect(), który umożliwia dodawanie efektów do obrazu z kamery. (I1d21f)
  • Dodaj metodę invalidate() do SurfaceRequest. Dostawca platformy może powiadomić, że wcześniej podana platforma nie jest już prawidłowa. (Idc649)
  • Dodaj interfejs API ImageProcessor. Ten interfejs służy do wstrzykiwania efektów przetwarzania końcowego do potoku ImageCapture. (I575c6)
  • Dodaliśmy interfejs API Recorder.Builder.setAspectRatio(), który można połączyć z QualitySelector, aby obsługiwać więcej rozdzielczości wideo. (I8a082)
  • Dodano Recorder.Builder#setTargetVideoEncodingBitRate, aby ustawić docelowe kodowanie wideo BitRate, i Recorder#getTargetVideoEncodingBitRate, aby uzyskać docelową szybkość transmisji bitów kodowania wideo. (I5984d)

Poprawki błędów

  • Naprawiono błąd, który powodował, że funkcja ImageCapture nie działała, gdy nie było lampy błyskowej, a tryb lampy błyskowej był włączony. (I9e8b4, b/263391112)
  • Rozwiązaliśmy problem z uszkodzeniem obrazu JPEG podczas zapisywania danych o lokalizacji Exif na niektórych urządzeniach Samsung z Androidem 12. (Ib7086, b/263747161, b/263289024)
  • gdy ustawiasz priorytet latarki/powiększenia przed zakończeniem inicjowania aparatu, np. wywołując CameraController#enableTorch, oczekujące działanie jest zapisywane w pamięci podręcznej i przesyłane po zakończeniu inicjowania. (I11e92, b/264157663)

Wersja 1.3.0-alpha02

7 grudnia 2022 r.

Publikacja androidx.camera:camera-*:1.3.0-alpha02 Wersja 1.3.0-alpha02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • dodaj nowy interfejs API do stosowania efektu przetwarzania końcowego do danych wyjściowych podglądu. (Ic17d5)
  • Zmieniono nazwę OutputOptions.getDurationLimit na OutputOptions.getDurationLimitMillis i OutputOptions.setDurationLimit na OutputOptions.setDurationLimitMillis. (I91f0c)
  • Dodano klasę AudioConfig do obsługi ustawień związanych z dźwiękiem podczas nagrywania filmu. Adnotacja @RequiresPermission została przeniesiona z funkcji startRecording do AudioConfig, aby uniknąć niepotrzebnych próśb o uprawnienia w przypadkach, gdy dźwięk nie jest potrzebny. (I28755)
  • Usuń klasy Metadata, OnVideoSavedCallback, OutputFileOptions i OutputFileResults, które nie są już używane po zastosowaniu nowego interfejsu API do przechwytywania wideo. (I38cd8)
  • Zastosuj nowy interfejs API do przechwytywania wideo. Metody getVideoCaptureTargetSize i setVideoCaptureTargetSize zostały zastąpione odpowiednio metodami getVideoCaptureTargetQuality i setVideoCaptureTargetQuality, ponieważ metoda setTargetResolution nie jest już obsługiwana. (I2a1d5)

Poprawki błędów

  • Usuń wycofany interfejs API core.VideoCapture. (I531e0)
  • Rozwiązaliśmy problem polegający na tym, że wywołanie zwrotne onError nie jest wywoływane podczas robienia zdjęć bez uprawnień do pamięci (I936db, b/244807669).
  • Popraw jakość i niezawodność rozszerzeń aparatu. Rozszerzenia aparatu są wyłączone na urządzeniach Motorola z rozszerzeniami aparatu w wersji 1.1.0 lub starszej z powodu problemów z obsługą efektu bokeh, robieniem zdjęć i niewznawianiem podglądu. (Id3ce3)
  • Naprawiliśmy błąd powodujący awarię systemową, gdy na starszych urządzeniach włączone było przycinanie filmu za pomocą ViewPort. (I16b8a, b/251357665)

Wersja 1.3.0-alpha01

9 listopada 2022 r.

Publikacja androidx.camera:camera-*:1.3.0-alpha01 Wersja 1.3.0-alpha01 zawiera te zatwierdzenia.

Nowe funkcje

  • Wskaźnik Camera-viewfinder został oficjalnie opublikowany. Camera-viewfinder udostępnia podstawowy widżet wizjera, który może wyświetlać przekaz z kamery w przypadku Camera2. Przykład znajdziesz w przykładowym kodzie.

Zmiany w interfejsie API

  • Dodano OutputOptions.setDurationLimit, aby umożliwić ustawienie limitu czasu trwania filmu. Nagrywanie zostanie automatycznie zakończone po przekroczeniu określonego limitu czasu. (I902a0)
  • Dodaj stan błędu dźwięku nagrania wideo AudioStats.AUDIO_STATE_SOURCE_ERROR. Wysyłane, gdy konfiguracja źródła dźwięku się nie powiedzie lub wystąpi błąd. (I37410)

Poprawki błędów

  • Dodano obejście, które umożliwia niektórym problematycznym urządzeniom ponowne rozpoczęcie rejestrowania, gdy wystąpią błędy. (Id4795)
  • Napraw problem z czarnym ekranem w implementacji PreviewView SurfaceView na urządzeniu ViewPager2. W ramach rozwiązania problemu PreviewView będzie ponownie używać SurfaceView, jeśli żądana rozdzielczość nie zostanie zmieniona. (Ib3f27)
  • Obsługa przycinania filmów (funkcja WYSIWYG) w przypadku korzystania z interfejsu API ViewPort lub CameraController. (Ifbba8, b/201085351)
  • Rozwiązaliśmy problem, który powodował, że nie można było nagrywać filmów przednim aparatem na urządzeniu Huawei P40 lite. (I87c57, b/250807400)

Wersja 1.2

Wersja 1.2.3

24 maja 2023 r.

Publikacja androidx.camera:camera-*:1.2.3 Wersja 1.2.3 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że na niektórych urządzeniach funkcja VideoCapture nie działała z przednim aparatem. Na przykład na telefonach Samsung Galaxy S23 i Xiaomi 2107113SG. (Ibec7e, b/270656244)

Wersja 1.2.2

22 marca 2023 r.

Publikacja androidx.camera:camera-*:1.2.2 Wersja 1.2.2 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że rozszerzenia CameraX nie działały prawidłowo, gdy na niektórych urządzeniach, takich jak Pixel, włączony był ProGuard (I90aa2).

Wersja 1.2.1

25 stycznia 2023 r.

Publikacja androidx.camera:camera-*:1.2.1 Wersja 1.2.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem z uszkodzeniem obrazu JPEG podczas zapisywania danych o lokalizacji Exif na niektórych urządzeniach Samsung z Androidem 12. (b/263289024)

Wersja 1.2.0

7 grudnia 2022 r.

Publikacja androidx.camera:camera-*:1.2.0 Wersja 1.2.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.1.0

  • Nowa biblioteka camera-mlkit-vision. Łatwa integracja CameraX z wieloma funkcjami MLKit, takimi jak skanowanie kodów kreskowych, wykrywanie twarzy, wykrywanie tekstu itp. Dodano MLKitAnalyzer jako nowe interfejsy API.
  • Nowy eksperymentalny interfejs API Zero-Shutter Lag. Optymalizuje potok przechwytywania, aby zmniejszyć opóźnienie przy zachowaniu dobrej jakości obrazu. Gdy tryb przechwytywania jest ustawiony na CAPTURE_MODE_ZERO_SHUTTER_LAG, opóźnienie między kliknięciem przycisku migawki a zrobieniem zdjęcia powinno być mniejsze niż w przypadku innych trybów przechwytywania. Na urządzeniach, które nie obsługują ZERO_SHUTTER_LAG, zostanie użyty CAPTURE_MODE_MINIMIZE_LATENCY.
  • Wycofaj: android.camera.core.VideoCapture.
  • Dodaliśmy setStreamUseCase() jako publiczny interfejs API Camera2Interop.
  • Dodano wymaganie dotyczące poziomu interfejsu API dla: setOutputImageRotationEnabled.
  • Zmieniono nazwę ImageAnalysis.Analyzer#getTargetResolutionOverride() na ImageAnalysis.Analyzer#getDefaultTargetResolution().
  • Dodano interfejs API do ustawiania metadanych lokalizacji w zapisanym filmie.
  • Naprawiliśmy problem z niską liczbą klatek na sekundę podczas korzystania z VideoCapture i przypadków użycia podglądu w formacie obrazu 16:9.
  • Rozwiązaliśmy problem z czarnym podglądem, który występował, gdy na niektórych urządzeniach Samsung było włączone rozszerzenie BOKEH, a użytkownik przełączał aparaty.
  • Rozwiązaliśmy problem z rozciągniętym obrazem Preview/VideoCapture na urządzeniach Samsung J7 Prime (SM-G610M) i J7 (SM-J710MN) z interfejsem API na poziomie 27.
  • Wyłączono obejście problemu polegające na odwracaniu obszaru AF w poziomie w przypadku przednich aparatów na urządzeniach Samsung z Androidem T, ponieważ problem został rozwiązany.

Wersja 1.2.0-rc01

24 października 2022 r.

Publikacja androidx.camera:camera-*:1.2.0-rc01 Wersja 1.2.0-rc01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodaj interfejs API setStreamUseCase dla: OutputConfiguration. Użytkownik może określić przypadek użycia strumienia na potrzeby sesji strumieniowej, zastępując wewnętrzną logikę CameraX, aby wybrać przypadek użycia strumienia i zoptymalizować go zgodnie ze swoimi potrzebami. (Ib1a95)

Poprawki błędów

  • Rozwiązaliśmy problem z rozciągniętym obrazem Preview/VideoCapture na urządzeniach Samsung J7 Prime (SM-G610M) i J7 (SM-J710MN) z interfejsem API na poziomie 27. Rozdzielczość 1920 x 1080 powoduje rozciągnięcie obrazów Preview/VideoCapture. Dodano obejście, aby nie wybierać rozdzielczości 1920 x 1080 w przypadku podglądu lub VideoCapture, aby uniknąć problemu z rozciągniętym obrazem. (I0e04e)
  • Naprawiono błąd powodujący niską liczbę klatek na sekundę podczas korzystania z przypadków użycia VideoCapture i podglądu w formacie obrazu 16:9 na niektórych urządzeniach Huawei. (If8c88, b/223643510)
  • Rozwiązaliśmy problem z otwieraniem kamery, gdy nie ustawiono SurfaceProvider podglądu. W ramach rozwiązania problemu podgląd bez ustawionego parametru SurfaceProvider nie będzie teraz konfigurowany w sesji przechwytywania obrazu z kamery. (I99681)

Wersja 1.2.0-beta02

21 września 2022 r.

Publikacja androidx.camera:camera-*:1.2.0-beta02 Wersja 1.2.0-beta02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano wymaganie dotyczące poziomu interfejsu API dla setOutputImageRotationEnabled (I26e3e, b/240993561)

Poprawki błędów

  • Wyłączono obejście problemu polegające na odwracaniu poziomo regionu AF przednich aparatów na urządzeniach Samsung z Androidem T, ponieważ problem został rozwiązany. (I05f69)
  • Rozwiązaliśmy problem z czarnym podglądem, który występował, gdy na niektórych urządzeniach Samsung było włączone rozszerzenie BOKEH, a użytkownik przełączał aparaty. (If6168)

Wersja 1.2.0-beta01

24 sierpnia 2022 r.

Publikacja androidx.camera:camera-*:1.2.0-beta01 Wersja 1.2.0-beta01 zawiera te zatwierdzenia.

Nowe funkcje

  • Nowa biblioteka camera-mlkit-vision. Łatwo integruj CameraX z wieloma funkcjami MLKit, takimi jak skanowanie kodów kreskowych, wykrywanie twarzy, wykrywanie tekstu itp. Przykładowy kod znajdziesz tutaj.
  • Nowy eksperymentalny interfejs API Zero-Shutter Lag. Optymalizuje potok przechwytywania, aby uzyskać mniejsze opóźnienie przy zachowaniu dobrej jakości obrazu. Gdy tryb przechwytywania jest ustawiony na CAPTURE_MODE_ZERO_SHUTTER_LAG, opóźnienie między kliknięciem przycisku migawki a zrobieniem zdjęcia powinno być mniejsze niż w przypadku innych trybów przechwytywania. Na urządzeniach, które nie obsługują trybu ZERO_SHUTTER_LAG, zostanie przywrócony tryb CAPTURE_MODE_MINIMIZE_LATENCY.
  • Interfejsy ImageAnalysis.Analyzer i MLKitAnalyzer stały się oficjalnymi interfejsami API.
  • Udostępniono interfejs API do ustawiania metadanych lokalizacji w zapisanych filmach.
  • Zmień nazwę ImageAnalysis.Analyzer#getTargetResolutionOverride() na ImageAnalysis.Analyzer#getDefaultTargetResolution().

Poprawki błędów

  • Rozwiązaliśmy problem z robieniem zdjęć na urządzeniu Alps k61v1_basic_ref. Obrazy JPEG przechwycone z warstwy HAL mają nieprawidłowe metadane Exif. Metadane Exif nie zawierają tagu 0xffd9 ani 0xffda, który umożliwia usłudze ExifInterface prawidłowe analizowanie atrybutów. Aby obejść ten problem, przechwyć obrazy w formacie YUV, a następnie skompresuj je do formatu JPEG. (I45abb)

Wersja 1.2.0-alpha04

27 lipca 2022 roku

Publikacja androidx.camera:camera-*:1.2.0-alpha04 Wersja 1.2.0-alpha04 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Zmień nazwę ImageAnalysis.Analyzer#getTargetResolutionOverride() na ImageAnalysis.Analyzer#getDefaultTargetResolution(). Zmieniliśmy też działanie, dzięki czemu wartość zwracaną przez tę metodę można zastąpić wartością ImageAnalysis#setTargetResolution(). (If1d36)
  • Udostępniliśmy interfejs API do ustawiania metadanych lokalizacji w zapisanym filmie. Obiekt android.location.Location można ustawić za pomocą nowego interfejsu API androidx.camera.video.OutputOptions.Builder.setLocation(Location). (I313a0, b/204197544)

Poprawki błędów

  • Rozwiązaliśmy problem z robieniem zdjęć z odłączonym podglądem (Ie70b6, b/235119898).
  • Naprawiliśmy błąd powodujący awarię aplikacji Recorder podczas próby nagrywania, gdy źródło dźwięku jest niedostępne. (I9f652)

Wersja 1.2.0-alpha03

29 czerwca 2022 r.

Publikacja androidx.camera:camera-*:1.2.0-alpha03 Wersja 1.2.0-alpha03 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Usunięto adnotację eksperymentalną dla: ImageAnalysis.Analyzer i MLKitAnalyzer. (I0ff22)

Poprawki błędów

  • Dodano domyślny limit czasu automatycznego ustawiania ostrości wynoszący 5000 ms, który zakończy część AF z wartością isFocusSuccessful false, jeśli FocusMeteringAction nie zostanie anulowane, a część AF nie zostanie zbieżna w tym czasie. (Ibc2e3)
  • Rozwiązano problem z robieniem zdjęć z podglądem bez powiązania (I1d3a2, b/235119898).
  • Włączono zaawansowaną implementację rozszerzenia i zaktualizowano wersję interfejsu rozszerzeń obsługi CameraX do 1.2 (I92256).

Wersja 1.2.0-alpha02

1 czerwca 2022 r.

Publikacja androidx.camera:camera-*:1.2.0-alpha02 Wersja 1.2.0-alpha02 zawiera te zatwierdzenia.

Nowe funkcje

  • Udostępnienie interfejsu CameraX Zero-Shutter Lag API jako eksperymentalnego.

Zmiany w interfejsie API

  • Dodaj nowy tryb przechwytywania CAPTURE_MODE_ZERO_SHUTTER_LAG w ImageCapture i dodaj isZslSupported w CameraInfo, aby wysłać zapytanie o możliwości urządzenia. Tryb CAPTURE_MODE_ZERO_SHUTTER_LAG ma na celu zapewnienie minimalnego opóźnienia podczas natychmiastowego robienia zdjęć. Jest on implementowany na podstawie bufora pierścieniowego, który zapisuje w pamięci podręcznej pośrednie wyniki przechwytywania, aby później je przetworzyć, gdy użytkownik naciśnie przyciski, aby zrobić zdjęcia. Jeśli {@link VideoCapture} jest powiązany, tryb lampy błyskowej nie jest wyłączony lub rozszerzenie OEM jest włączone, ten tryb zostanie automatycznie wyłączony. (I9ae74)
  • Metoda Add ImageAnalysis.getBackgroundExecutor() (Icc945)

Poprawki błędów

  • Naprawiliśmy błąd, który powodował, że metoda ImageCapture takePicture wyłączała latarkę na zgłoszonych urządzeniach. (Ib5eb5, b/228272227)
  • Naprawiono błąd, który powodował, że AssertionError nie był obsługiwany podczas pobierania charakterystyki CONTROL_ZOOM_RATIO_RANGE (/Ia248a, b/231701345).

Wersja 1.2.0-alpha01

18 maja 2022 r.

Publikacja androidx.camera:camera-*:1.2.0-alpha01 Wersja 1.2.0-alpha01 zawiera te zatwierdzenia.

Nowe funkcje

  • Uruchomiono nową bibliotekę camera-mlkit-vision

Poprawki błędów

  • Naprawiliśmy błąd QualitySelector, który powodował, że nie można było nagrać filmu w UHD, gdy włączona była strategia zastępcza. Problem występuje, gdy VideoCapture jest powiązany z ImageCapture i podglądem na urządzeniu z aparatem o poziomie sprzętowym FULL lub wyższym. Strategia zastępcza QualitySelector powoduje, że VideoCapture nieprawidłowo uzyskuje rozdzielczość FHD. Rozdzielczość UHD jest obsługiwana w tym przypadku użycia i powinna zostać zastosowana. (I0e788, b/230651237)
  • Naprawiono NullPointerException w: ImageCapture.takePicture(). (I92366, b/230454568, b/229766155)
  • Poprawka dotycząca zachowania asynchronicznego wstrzymania w androidx.camera.video.Recorder (Ia8ce8)

Camera-Camera2, Camera-Core, Camera-Lifecycle i Camera-Video w wersji 1.1.0

Wersja 1.1.0

29 czerwca 2022 r.

Publikacja androidx.camera:camera-*:1.1.0 Wersja 1.1.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.0.0

  • Udostępniliśmy biblioteki Landed View, Extension i Video Capture w pierwszej wersji RC. Od wersji 1.1.0-beta01 wszystkie biblioteki CameraX będą miały ten sam numer wersji. Ułatwi to deweloperom śledzenie wersji i zmniejszy złożoność dużych macierzy zgodności wersji.
  • Wprowadziliśmy nowe publiczne interfejsy API i funkcje, w tym:
  • Dodaj oficjalną bibliotekę camera-video, aby obsługiwać przypadki użycia związane z nagrywaniem filmów.
  • Możliwość konwersji YUV na RGB i obracania (ImageAnalysis.Builder.setOutputImageRotationEnabled i setOutputImageFormat)
  • Obsługa trybu wielu okien przez umożliwienie aplikacjom CameraX wznowienia działania aparatu, gdy zostanie on przerwany przez inną aplikację i ponownie ustawiona zostanie ostrość.
  • Zapewnia prawidłowe działanie CameraX na urządzeniach składanych dzięki rozwiązaniu niektórych problemów z podglądem.
  • Dodaliśmy interfejs API CameraState, który będzie udostępniany przez CameraInfo.
  • Dodano interfejs API ProcessCameraProvider.getAvailableCameraInfos(), który umożliwia bezpośrednie pobieranie informacji o dostępnych kamerach.
  • Format wyjściowy JPEG dla ImageCapture#OnImageCapturedCallback, gdy rozszerzenia są włączone.
  • Dodano interfejs API isFocusMeteringSupported w CameraInfo, który umożliwia aplikacjom sprawdzanie, czy dany FocusMeteringAction jest obsługiwany przez bieżący aparat.
  • Udostępniono interfejs API getResolutionInfo, aby dostarczać informacje o rozdzielczości dla podglądu, ImageCapture i ImageAnalysis.
  • Dodano nowy interfejs API ImageCapture.Builder#setJpegQuality, który umożliwia zmianę jakości kompresji obrazu JPEG podczas robienia zdjęć.
  • Dodaliśmy CameraSelector#filter do publicznego interfejsu API, aby filtrować listę CameraInfos na podstawie CameraSelector.
  • Dodaliśmy metodę Camera2CameraControl.clearCaptureRequestOptions do czyszczenia istniejących opcji żądania przechwytywania.
  • Dodaliśmy eksperymentalny interfejs API do używania CameraController z zewnętrznymi bibliotekami do przetwarzania obrazów, np. MLKit.
  • Dodano eksperymentalny interfejs API CameraInfo#getCameraSelector(), który zwraca CameraSelector unikalny dla kamery
  • Przekształcono kilka eksperymentalnych interfejsów API w oficjalne publiczne interfejsy API.
  • Zastąpiono adnotację @Experimental adnotacją @RequiresOptIn w eksperymentalnych interfejsach API. Do wywoływania eksperymentalnych interfejsów API używaj androidx.annotation.OptIn zamiast wycofanego androidx.annotation.experimental.UseExperimental.
  • Następujące eksperymentalne interfejsy API zostały przekształcone w oficjalne interfejsy API: CameraXConfig.Builder#setAvailableCamerasLimiter(), CameraXConfig.Builder#setMinimumLoggingLevel(), CameraXconfig.Builder#setSchedulerHandler(), CameraXConfig#getAvailableCamerasLimiter(), CameraXConfig#getMinimumLoggingLevel(), CameraXConfig#getCameraExecutor(), CameraXConfig#getSchedulerHandler(),
  • Interfejsy API @ExperimentalCameraFilter
  • eksperymentalne interfejsy API kompensacji ekspozycji.
  • Przeniesiono eksperymentalny interfejs API UseCaseGroup dla camera-core, camera-lifecycle i camera-video. Dodano ViewPort#getLayoutDirection, ViewPort.Builder#setLayoutDirection i ViewPort.Builder#setScaleType, aby umożliwić dostosowywanie widocznego obszaru.
  • Przekształciliśmy ExperimentalUseCaseGroupLifecycle w oficjalne publiczne interfejsy API.
  • Zmiany w dotychczasowych interfejsach API
  • Renamed MediaStoreOutputOptions.getCollection użytkownikowi MediaStoreOutputOptions.getCollectionUri.
  • Nazwa ActiveRecording została zmieniona na „Nagrywanie”, aby była krótsza.
  • Zmieniono interfejs API do tworzenia QualitySelector na interfejs API oparty na listach

Poprawki błędów

  • Rozwiązaliśmy problem z YuvToJpegProcessor EOFException, gdy włączony jest tryb rozszerzenia i ustawiony jest tryb ImageCapture#CAPTURE_MODE_MAX_QUALITY.
  • Nie udało się naprawić konfiguracji kodeka, ponieważ nagrywanie filmu jest zamykane
  • Naprawiliśmy problem z rozciągniętym podglądem i formatem obrazu podczas nagrywania w FHD.
  • Rozwiązaliśmy problem z brakiem synchronizacji dźwięku i obrazu po wstrzymaniu i wznowieniu odtwarzania na niektórych urządzeniach.
  • Rozwiązaliśmy problem polegający na tym, że lampa błyskowa była uruchamiana podczas ustawiania ostrości przez dotknięcie (startFocusAndMetering), gdy tryb lampy błyskowej był ustawiony na automatyczny lub zawsze włączony w słabym oświetleniu.

Wersja 1.1.0-rc02

1 czerwca 2022 r.

Publikacja androidx.camera:camera-*:1.1.0-rc02 Wersja 1.1.0-rc02 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono NullPointerException w: ImageCapture.takePicture(). (I92366, b/230454568, b/229766155)
  • Naprawiliśmy błąd polegający na tym, że AssertionError nie był obsługiwany podczas pobierania charakterystyki CONTROL_ZOOM_RATIO_RANGE. (Ia248a, b/231701345)

Wersja 1.1.0-rc01

11 maja 2022 roku

Publikacja androidx.camera:camera-*:1.1.0-rc01 Wersja 1.1.0-rc01 zawiera te zatwierdzenia.

Nowe funkcje

  • Wydanie pierwszej wersji RC dla camera-video, camera-view i camera-extension

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że kodek wideo nie był zwalniany, gdy VideoCapture<Recorder> nie był powiązany, co powodowało, że kolejne użycia VideoCapture<Recorder> nie działały podczas nagrywania z MediaCodec.CodecException, zwłaszcza na urządzeniach z interfejsem API 21–22. (Ie7f68)
  • Naprawiono błąd, który powodował, że zdjęcia zrobione w aplikacji CameraExtensionsActivity nie były usuwane w aplikacji ImageCaptureTest

Wersja 1.1.0-beta03

6 kwietnia 2022 roku

Publikacja androidx.camera:camera-*:1.1.0-beta03 Wersja 1.1.0-beta03 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Konstruktor CaptureRequestOptions jest teraz ograniczony. (I261b6)
  • Dodaliśmy eksperymentalny interfejs API do używania CameraController z zewnętrznymi bibliotekami do przetwarzania obrazów, np. MLKit (I4ea71).

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że podgląd w aplikacji PreviewView był wyświetlany bokiem, gdy aktywność nie została ponownie uruchomiona po obróceniu urządzenia w trybie wielu okien. (I1ea36, b/223488673)
  • Rozwiązaliśmy problem z wieloma oknami, który powodował, że po powrocie do aplikacji nie udawało się wznowić działania aparatu, gdy (1) inna aplikacja o wysokim priorytecie otwierała inny aparat, (2) urządzenie było urządzeniem Samsung z Androidem 12. (I7e9f2)
  • Dodano obejście problemu z urządzeniami, które ulegają awarii podczas sprawdzania dostępności lampy błyskowej. Na tych urządzeniach latarka nie będzie dostępna. (If26a3, b/216667482)
  • Rozwiązaliśmy problem z AbstractMethodError, który występował, gdy aplikacje używały rozszerzeń i włączały ProGuard. (I7cbaf, b/222726805)
  • Wymuś wyłączenie trybu rozszerzenia bokeh na urządzeniu Motorola razr 5G, co spowoduje problem z czarnym ekranem podglądu. (I35d49)
  • Rozwiązaliśmy problem z brakiem synchronizacji dźwięku i obrazu po wstrzymaniu i wznowieniu na niektórych urządzeniach Samsung z interfejsem API w wersji starszej niż 29. (I64622, b/202798609, b/202798572)
  • Rozwiązaliśmy problem z brakiem synchronizacji dźwięku i obrazu po wstrzymaniu i wznowieniu odtwarzania na urządzeniu Sony G3125. (I2a1a5, b/202799148)
  • Naprawiliśmy błąd, który powodował awarię, gdy Dyktafon napotkał InvalidConfigException. To rozwiązanie zapobiega jednak tylko awariom aplikacji, ale nie eliminuje przyczyny błędu InvalidConfigException. Jeśli nadal nie można skonfigurować Recorder, aplikacje otrzymają wywołanie zwrotne błędu, gdy rozpocznie się nagrywanie. (I89c29, b/213617227)

Zewnętrzny wkład

  • Zaktualizowano interfejs API :compose:ui:ui-test (updateApi) ze względu na migrację test-coroutines-lib (I3366d)

Wersja 1.1.0-beta02

23 lutego 2022 r.

Publikacja androidx.camera:camera-*:1.1.0-beta02 Wersja 1.1.0-beta02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodanie możliwości określenia identyfikatora kamery fizycznej za pomocą Camera2Interop. (I5aed8)

Poprawki błędów

  • Rozwiązaliśmy problem z rozciągniętym podglądem na urządzeniu Oppo Find N (I7d004).
  • Rozwiązaliśmy problem z Galaxy J7 Prime, który powodował zniekształcenie podglądu. (I4c500)
  • Użyj zgodnej szybkości transmisji bitów, aby znaleźć koder wideo. (d969052)

Wersja 1.1.0-beta01

26 stycznia 2022 r.

Publikacja androidx.camera:camera-*:1.1.0-beta01 Wersja 1.1.0-beta01 zawiera te zatwierdzenia.

Nowe funkcje

  • Od wersji 1.1.0-beta01 wszystkie biblioteki CameraX będą miały ten sam numer wersji. Ułatwi to deweloperom śledzenie wersji i zmniejszy złożoność dużej macierzy zgodności wersji.

Zmiany w interfejsie API

  • Dodano Camera2CameraControl.clearCaptureRequestOptions, aby umożliwić czyszczenie istniejących opcji żądania przechwytywania. (Ifa07d)

Poprawki błędów

  • Rozwiązaliśmy problem z awarią podczas nagrywania filmu na niektórych urządzeniach z Androidem w wersji starszej niż O(API 26). (I88fdf, b/212328261)
  • Naprawiliśmy problem z nieprawidłowym regionem autofokusa podczas korzystania z cameraControl#startFocusAndMetering() w aparacie przednim na urządzeniach Samsung (Ifbf59, b/210548792).
  • Używanie latarki jako lampy błyskowej na Pixelu 3a i Pixelu 3a XL w celu zwiększenia szybkości i poprawy jakości zdjęć robionych w ciemności (Ib12b6, b/211474332)
  • Umożliwia aplikacjom wznowienie działania aparatu, gdy zostanie on przerwany przez inną aplikację o wyższym priorytecie w trybie wielu okien, a fokus zostanie ponownie przeniesiony na aplikację. Pamiętaj, że z powodu problemu z platformą może wystąpić pewne opóźnienie(od 1 sekundy do 10 sekund lub więcej) między zmianą ostrości a ponownym otwarciem aparatu. (I4d092)

Wersja 1.1.0-alpha12

15 grudnia 2021 roku

Publikacja androidx.camera:camera-*:1.1.0-alpha12 Wersja 1.1.0-alpha12 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Usunięto niepotrzebne adnotacje @RequiresApi(21) z klas/interfejsów wewnętrznych. (I8e286, b/204917951)
  • Stałe jakości i stałe strategii zastępczej QualitySelector zostały zmienione, aby były reprezentowane przez obiekty klasy. Na przykład QualitySelector.QUALITY_HD zmienia się na Quality.HD, a QualitySelector.FALLBACK_STRATEGY_LOWER zmienia się na instancję zwracaną przez FallbackStrategy.lowerQualityOrHigherThan(Quality). Interfejs API używany do tworzenia QualitySelector został zmieniony na interfejs API oparty na listach. Nowy interfejs API QualitySelector.fromOrderedList(List<Quality>) będzie odwoływać się do kolejności na liście jakości danych wejściowych, a nie do kolejności utworzonej przez QualitySelector.Procedure. Zajęcia QualitySelector.Procedure zostały usunięte. (I43343)
  • Metoda PendingRecording.withEventListener() została usunięta, a detektor zdarzeń musi być teraz przekazywany do metody PendingRecording.start(). Wymaganie dotyczące detektora zdarzeń ma na celu zachęcenie do obsługi błędów asynchronicznych, które są zgłaszane w zdarzeniu VideoRecordEvent.Finalize. (I1e71d)
  • Nazwa ActiveRecording została zmieniona na Recording, aby była bardziej zwięzła. (I77ceb)

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że zdjęcia zrobione w trybie FLASH_AUTO w ciemnym otoczeniu na Pixelu 3a i Pixelu 3a XL były niedoświetlone (I13f19, b/205373142).
  • Zawsze używaj najnowszego rozmiaru wyświetlania, aby określić podgląd Resolution. (I4a694)
  • Odfiltrowano kamery, które nie mają funkcji REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE. Kamery z REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE mają minimalny zestaw funkcji obsługiwanych przez każde urządzenie z kamerą. Aparat bez REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE może być aparatem obsługującym funkcje specjalne i nie obsługuje standardowego wyjścia kolorów. CameraX nie obsługuje przypadków użycia Preview, ImageCapture, ImageAnalysis ani VideoCapture w przypadku tych kamer. Dlatego należy odfiltrować te kamery, aby zapobiec nieprawidłowemu użyciu. (Ib8cda)
  • CameraSelector#filter nie zgłasza już błędu IllegalArgumentException, gdy zbiór wyników jest pusty. (I27804)
  • Do wybierania ustawień kodera na podstawie profili określonych przez OEM używane są teraz inteligentniejsze metody heurystyczne. (Iaeef0)
  • Naprawiono błąd, który powodował, że po rozpoczęciu nagrywania filmu UHD na Pixelu 1 na podglądzie pojawiały się przeplatane kolorowe linie. (I833c6, b/205340278)

Wersja 1.1.0-alpha11

17 listopada 2021 r.

Publikacja androidx.camera:camera-*:1.1.0-alpha11 Wersja 1.1.0-alpha11 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano CameraSelector#filter do publicznego interfejsu API, aby filtrować listę CameraInfos na podstawie CameraSelector. (I105d0)
  • Dodano interfejs API setOutputImageRotationEnabled do konfiguracji ImageAnalysis. Użytkownik może włączyć obracanie bufora obrazu YUV/RGB. Stopień obrotu to względny obrót obliczany na podstawie obrotu czujnika i obrotu docelowego, który pozwala utrzymać obraz z przodu.

  • Dodano interfejs API setOutputImageRotationEnabled do konfiguracji ImageAnalysis. Użytkownik może włączyć obracanie bufora obrazu YUV/RGB. Kąt obrotu to względny obrót obliczany na podstawie obrotu czujnika i obrotu docelowego, który pozwala utrzymać obraz z przodu.

    Dodaj interfejs API getSensorToBufferTransformMatrix w ImageInfo. Zwrócona macierz to mapowanie współrzędnych czujnika na współrzędne bufora, czyli od wartości CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE do (0, 0, image.getWidth, image.getHeight). Macierz może służyć do mapowania współrzędnych z jednego {UseCase} na inny. Na przykład mapowanie współrzędnych twarzy wykrytych za pomocą ImageAnalysis na podgląd. (I9ff1e)

  • Dodano nowy interfejs API ImageCapture.Builder#setJpegQuality, który umożliwia zmianę jakości kompresji wyjściowego obrazu JPEG podczas robienia zdjęcia. (I8dcf4)

  • Zmieniono nazwę metody MediaStoreOutputOptions.getCollection na MediaStoreOutputOptions.getCollectionUri. (I16639)

Poprawki błędów

  • Rozwiązaliśmy problem polegający na tym, że lampa błyskowa była uruchamiana podczas ustawiania ostrości przez dotknięcie (startFocusAndMetering), gdy tryb lampy błyskowej był ustawiony na automatyczny lub zawsze włączony w warunkach słabego oświetlenia. (Id4c11)
  • Wyłączono HDR+ na Pixelu 2 XL / Pixelu 3 XL w trybie MINIMIZE_LATENCY, aby zmniejszyć opóźnienie. (Ib6270, b/203505523)

Zewnętrzny wkład

Wersja 1.1.0-alpha10

13 października 2021 r.

Publikacja androidx.camera:camera-*:1.1.0-alpha10 Wersja 1.1.0-alpha10 zawiera te zatwierdzenia.

Nowe funkcje

  • Oficjalnie opublikowano wersję androidx.camera:camera-video:1.1.0-alpha10 jako pierwszą wersję alfa Video. Istnieje kilka znanych problemów, które zostaną rozwiązane w późniejszych wersjach.

Zmiany w interfejsie API

  • Dodano adnotację @RequiresApi(21) do wszystkich klas CameraX i usunięto minSdkVersion z pliku AndroidManifest.xml. Umożliwi to łatwą integrację biblioteki camera-core z aplikacjami, które mają minSdkVersion poniżej 21, ale chcą warunkowo używać ścieżek kodu opartych na interfejsie API 21 lub nowszym. W przypadku aplikacji z minSdkVersion 21 lub nowszą ta zmiana nie wymaga żadnych działań. (Ie7f2e, b/200599470)

Poprawki błędów

  • Zgłoś błąd InitializationException, aby aplikacja mogła prawidłowo obsłużyć błąd AssertionError, który wystąpił podczas tworzenia CameraCharacteristics. (Ibec79)

Wersja 1.1.0-alpha09

29 września 2021 r.

Wersje androidx.camera:camera-camera2:1.1.0-alpha09, androidx.camera:camera-core:1.1.0-alpha09 i androidx.camera:camera-lifecycle:1.1.0-alpha09 zostały opublikowane. Wersja 1.1.0-alpha09 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Adnotacja ExperimentalUseCaseGroup została usunięta, ponieważ interfejsy API nie są już eksperymentalne. (I01ef5)

Poprawki błędów

  • Rozwiązanie problemu z rozmazanymi zdjęciami w trybie MAXIMIZE_QUALITY. (I173a9, b/193823892)
  • Rozwiązaliśmy problem z Samsungiem Galaxy J5, który powodował, że aparat zacinał się po zrobieniu zdjęcia z lampą błyskową włączoną lub ustawioną na tryb automatyczny w ciemnym otoczeniu (I3aab9).
  • Gdy w przypadku ImageCapture konieczne jest przycięcie, skompresuj przycięty obraz wyjściowy z określonym poziomem jakości JPEG zgodnie z ustawionym trybem przechwytywania. Jeśli tryb przechwytywania to CAPTURE_MODE_MINIMIZE_LATENCY, jakość kompresji JPEG będzie wynosić 95. Jeśli tryb przechwytywania to CAPTURE_MODE_MAXIMIZE_QUALITY, jakość kompresji JPEG będzie wynosić 100. (Ieb37c, b/142856426)

Wersja 1.1.0-alpha08

18 sierpnia 2021 r.

Wersje androidx.camera:camera-camera2:1.1.0-alpha08, androidx.camera:camera-core:1.1.0-alpha08 i androidx.camera:camera-lifecycle:1.1.0-alpha08 zostały opublikowane. Wersja 1.1.0-alpha08 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodano interfejs API setOutputImageFormat do konfiguracji analizy obrazu. Użytkownik może wybrać ImageAnalysis.OUTPUT_IMAGE_FORMAT_YUV_420_888 lub ImageAnalysis.OUTPUT_IMAGE_FORMAT_RGBA_8888. Domyślnie wybrany będzie ImageAnalysis.OUTPUT_IMAGE_FORMAT_YUV_420_888. (I7902d)

Zmiany w interfejsie API

  • Adnotacja ExperimentalUseCaseGroupLifecycle została usunięta, ponieważ interfejsy API nie są już eksperymentalne. (I17b85)

Poprawki błędów

  • Naprawiliśmy błąd, który powodował, że ekran podglądu na telefonie Huawei P20 Lite był zbyt jasny. Ten problem występuje tylko wtedy, gdy używane są określone specjalne rozdzielczości podglądu wraz z dużą wartością powiększenia. (Idefce, b/192129158)
  • Rozwiązaliśmy problem polegający na tym, że lampa błyskowa nie działała na niektórych urządzeniach, gdy tryb lampy błyskowej był ustawiony na FLASH_MODE_ON, a następnie robiono zdjęcia. (Ieb49b)
  • Rozwiązaliśmy problem polegający na tym, że podgląd zatrzymywał się na chwilę podczas robienia zdjęć, gdy funkcje VideoCapture, ImageCapture i Preview były powiązane. (I56197, b/193864120)
  • Zezwala ImageAnalysis na wybór rozdzielczości większej niż 1080p. Urządzenie o poziomie LIMITED może obsługiwać rozdzielczość RECORD dla ImageAnalysis, gdy jest ono powiązane z Preview i ImageCapture. W takim przypadku rozdzielczość wybrana dla ImageCapture również musi być rozdzielczością rozmiaru RECORD. Aby wybrać rozdzielczość rozmiaru RECORD dla ImageAnalysis, należy ustawić docelową rozdzielczość rozmiaru RECORD zarówno w ImageCapture, jak i ImageAnalysis. Oznacza to, że aplikacja wyraźnie rozumie kompromis i preferuje, aby ImageAnalysis miało większą rozdzielczość, a nie ImageCapture miało MAKSYMALNĄ rozdzielczość. Definicje rozmiarów RECORD i MAXIMUM oraz więcej informacji znajdziesz na stronie https://developer.android.com/reference/android/hardware/camera2/CameraDevice#regular-capture. Rozmiar RECORD odnosi się do maksymalnej obsługiwanej rozdzielczości nagrywania aparatu, określonej przez CamcorderProfile. Rozmiar MAKSYMALNY odnosi się do maksymalnej rozdzielczości wyjściowej aparatu dla danego formatu lub celu z funkcji StreamConfigurationMap.getOutputSizes(int). (I1ee97, b/192911449)
  • Dodaj informacje EXIF do zrobionego zdjęcia. (I01ff0, b/193342619)
  • W ImageCapture zwróć identyfikator URI zapisanego obrazu, jeśli lokalizacja zapisu to Plik. (Ib5b49, b/149241379)
  • Rozwiązaliśmy problem, który powodował, że zdjęcia zrobione z lampą błyskową były ciemne na wielu urządzeniach. (I4e510)

Wersja 1.1.0-alpha07

21 lipca 2021 r.

Wersje androidx.camera:camera-camera2:1.1.0-alpha07, androidx.camera:camera-core:1.1.0-alpha07 i androidx.camera:camera-lifecycle:1.1.0-alpha07 zostały opublikowane. Wersja 1.1.0-alpha07 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiliśmy problem z Samsungiem Galaxy Note 5, który powodował, że aparat zawieszał się po zrobieniu zdjęcia z lampą błyskową włączoną lub ustawioną na tryb automatyczny w ciemnym otoczeniu (If6871).
  • Naprawiliśmy błąd YuvToJpegProcessor EOFException, który występował, gdy włączony był tryb rozszerzenia i ustawiony był tryb ImageCapture#CAPTURE_MODE_MAX_QUALITY. (I538bd, b/192017012)

Wersja 1.1.0-alpha06

30 czerwca 2021 r.

Wersje androidx.camera:camera-camera2:1.1.0-alpha06, androidx.camera:camera-core:1.1.0-alpha06 i androidx.camera:camera-lifecycle:1.1.0-alpha06 zostały opublikowane. Wersja 1.1.0-alpha06 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Promowanie eksperymentalnych interfejsów API kompensacji ekspozycji dla camera-core (I08ee8)
  • Dodaliśmy interfejs API isFocusMeteringSupported w CameraInfo, który umożliwia aplikacjom sprawdzanie, czy dane działanie FocusMeteringAction jest obsługiwane przez bieżący aparat. (Ib45ae, b/188606490)
  • Udostępniliśmy interfejs API getResolutionInfo, który dostarcza informacje o rozdzielczości na potrzeby funkcji Preview, ImageCapture i ImageAnalysis. (I2b613, b/188600718)
  • Przekształcono te eksperymentalne interfejsy API w oficjalne interfejsy API: CameraXConfig.Builder#setAvailableCamerasLimiter(), CameraXConfig.Builder#setMinimumLoggingLevel(), CameraXconfig.Builder#setSchedulerHandler(), CameraXConfig#getAvailableCamerasLimiter(), CameraXConfig#getMinimumLoggingLevel(), CameraXConfig#getCameraExecutor(), CameraXConfig#getSchedulerHandler(). (I2ade2)
  • Udostępniono interfejs CameraProvider, aby zapewnić dostęp do zestawu aparatów. (I1a7b1)
  • Promowanie eksperymentalnego interfejsu UseCaseGroup API dla camera-core, camera-lifecycle i camera-video. Dodano ViewPort#getLayoutDirection, ViewPort.Builder#setLayoutDirection i ViewPort.Builder#setScaleType, aby umożliwić dostosowywanie widocznego obszaru. (I7cee8)

Wersja 1.1.0-alpha05

2 czerwca 2021 r.

Wersje androidx.camera:camera-camera2:1.1.0-alpha05, androidx.camera:camera-core:1.1.0-alpha05 i androidx.camera:camera-lifecycle:1.1.0-alpha05 zostały opublikowane. Wersja 1.1.0-alpha05 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Usunięto klasę Camera2CameraFilter. Sugerujemy wybór aparatu za pomocą CameraFilter i pobranie CameraCharacteristics lub innych informacji związanych z Camera2 za pomocą Camera2CameraInfo, jeśli jest to konieczne. (Ib887c)
  • Interfejsy API ExperimentalCameraFilter nie są już na etapie eksperymentalnym i stały się oficjalnymi interfejsami API. Można ich używać bez adnotacji OptIn. (I4bc94)
  • Dodaliśmy interfejs API stanu kamery, który jest dostępny przez CameraInfo#getCameraState(). (Ia86b4)
  • Dodano eksperymentalny interfejs API CameraInfo#getCameraSelector(), który zwraca selektor CameraSelector unikalny dla aparatu (I77f9f).

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że ListenableFuture zwracane w setZoomRatio i setLinearZoom nie mogło zostać ukończone na niektórych urządzeniach z Androidem 11 (I716d7).
  • Przyspieszenie przełączania aparatu i zmniejszenie częstotliwości występowania błędów aparatu (I34c99)
  • Zastąpiono ExperimentalUseCaseGroupLifecycle elementem ExperimentalUseCaseGroup. (I3b2ef, b/159033688)

Wersja 1.1.0-alpha04

21 kwietnia 2021 r.

Wersje androidx.camera:camera-camera2:1.1.0-alpha04, androidx.camera:camera-core:1.1.0-alpha04 i androidx.camera:camera-lifecycle:1.1.0-alpha04 zostały opublikowane. Wersja 1.1.0-alpha04 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiliśmy wyciek pamięci spowodowany przez wiele wątków uzyskujących dostęp do tej samej kolekcji w tym samym czasie. Wyciek pamięci może spowodować, że aktywność lub fragment zostaną zachowane przez instancję podglądu. (I7b4b8)
  • Zastąpiono adnotację @Experimental adnotacją @RequiresOptIn w eksperymentalnych interfejsach API. Do wywoływania eksperymentalnych interfejsów API używaj androidx.annotation.OptIn zamiast wycofanego androidx.annotation.experimental.UseExperimental. (Iff226)
  • Rozwiązaliśmy problem, który powodował, że funkcja ImageCapture z lampą błyskową ustawioną na „Włączona” lub „Automatyczna” robiła wyblakłe zdjęcia na telefonie Samsung Galaxy S7. (I30001)
  • Dodano interfejs CameraState API, który będzie udostępniany przez CameraInfo. (I75392)

Wersja 1.1.0-alpha03

24 marca 2021 r.

Wersje androidx.camera:camera-camera2:1.1.0-alpha03, androidx.camera:camera-core:1.1.0-alpha03 i androidx.camera:camera-lifecycle:1.1.0-alpha03 zostały opublikowane. Wersja 1.1.0-alpha03 zawiera te zatwierdzenia.

Poprawki błędów

  • Format wyjściowy JPEG dla ImageCapture#OnImageCapturedCallback, gdy włączony jest tryb rozszerzeń. (I0d7b1)
  • Naprawiono błąd inicjowania na urządzeniach UMIDIGI BISON (I57d9e, b/180818665).
  • Naprawiliśmy problem z rozciągniętym podglądem w PreviewView na urządzeniach Samsung A3. (Iacb30, b/180121821)

Wersja 1.1.0-alpha02

24 lutego 2021 r.

Wersje androidx.camera:camera-camera2:1.1.0-alpha02, androidx.camera:camera-core:1.1.0-alpha02 i androidx.camera:camera-lifecycle:1.1.0-alpha02 zostały opublikowane. Wersja 1.1.0-alpha02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodaliśmy interfejs API ProcessCameraProvider.getAvailableCameraInfos(), który umożliwia bezpośrednie pobieranie informacji o dostępnych aparatach. Mogą to być wszystkie aparaty na urządzeniu lub te wybrane przez CameraSelector podany w CameraXConfig.Builder.setAvailableCamerasLimiter(CameraSelector). (Ieac08)

Poprawki błędów

  • CameraX próbuje teraz wymusić otwarcie aparatu przy pierwszej próbie. Może to spowodować, że CameraX przejmie aparat od innych klientów, gdy aplikacja ma wyższy priorytet. (Iab069, b/175820568)
  • Naprawiliśmy błąd testu Robolectric, który występował, gdy w CameraXConfig użyto setAvailableCamerasLimiter. (Ice307)
  • Ta zmiana powoduje przechwycenie wyjątku, gdy kolejka obrazów w ImageAnalysis jest zapełniona. Zamiast awarii możesz zauważyć, że inne przypadki użycia są zawieszone lub działają wolno, np. zawieszony lub wolno działający podgląd. (Ic12da, b/175851631)
  • Naprawiliśmy błąd ExtensionsErrorListener, aby zgłaszał błędy, gdy powiązany jest tylko podgląd lub ImageCapture. (I5ae39)
  • Naprawiono regresję wydajności ImageCapture przez usunięcie weryfikacji lokalizacji zapisu obrazu przed zrobieniem zdjęcia. Jeśli po wprowadzeniu tej zmiany miejsce zapisu będzie nieprawidłowe, uzyskanie odpowiedzi o błędzie zajmie więcej czasu, ponieważ po zrobieniu zdjęcia nastąpi próba jego zapisania. (I1fd4e, b/177061560)
  • Naprawiliśmy błąd powodujący spadek wydajności ImageCapture w przypadku opcji OutputFileOptions typu „File”. (I5164a, b/177061560)
  • Zaktualizowano dokumentację, aby odradzać używanie ProcessCameraProvider.configureInstance(...) z kodu biblioteki. (Ib8a9f)

Wersja 1.1.0-alpha01

27 stycznia 2021 r.

Wersje androidx.camera:camera-camera2:1.1.0-alpha01, androidx.camera:camera-core:1.1.0-alpha01 i androidx.camera:camera-lifecycle:1.1.0-alpha01 zostały opublikowane. Wersja 1.1.0-alpha01 zawiera te zatwierdzenia.

Poprawki błędów

  • Dodano obejście problemu z okresowo uszkodzonymi danymi obrazu w plikach JPEG z tylnego aparatu SM-G930T. (I52001, b/159831206)
  • Rozwiązaliśmy problem z IllegalArgumentException, który występował, gdy wszystkie obsługiwane rozmiary podglądu były mniejsze niż 640 × 480, a rozmiar wyświetlania był większy niż 640 × 480. (I2a63c, b/150506192)
  • Zasoby w bibliotekach bez wyraźnie zadeklarowanych zasobów publicznych (np. za pomocą pliku public.xml) są teraz domyślnie prywatne. (Ia1dcc, b/170882230)

Camera-Camera2, Camera-Core i Camera-Lifecycle w wersji 1.0.2

Wersja 1.0.2

29 września 2021 r.

Wersje androidx.camera:camera-camera2:1.0.2, androidx.camera:camera-core:1.0.2 i androidx.camera:camera-lifecycle:1.0.2 zostały opublikowane. Wersja 1.0.2 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązanie problemu z rozmazanymi zdjęciami w trybie MAXIMIZE_QUALITY. (I173a9, b/193823892)
  • Rozwiązaliśmy problem, który powodował, że na wielu urządzeniach zdjęcie zrobione z lampą błyskową było ciemne. (I4e510)

Camera-Camera2, Camera-Core i Camera-Lifecycle w wersji 1.0.1

Wersja 1.0.1

21 lipca 2021 r.

Wersje androidx.camera:camera-camera2:1.0.1, androidx.camera:camera-core:1.0.1 i androidx.camera:camera-lifecycle:1.0.1 zostały opublikowane. Wersja 1.0.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem polegający na tym, że ListenableFuture zwracany w setZoomRatio i setLinearZoom nie może zostać ukończony na niektórych urządzeniach z Androidem 11 (I716d7).

  • Rozwiązaliśmy problem, który powodował, że na niektórych urządzeniach aparat zacinał się w stanie zamykania, co powodowało czarny podgląd. (I34c99)

Camera-Camera2, Camera-Core i Camera-Lifecycle w wersji 1.0.0

Wersja 1.0.0

5 maja 2021 roku

Wersje androidx.camera:camera-camera2:1.0.0, androidx.camera:camera-core:1.0.0 i androidx.camera:camera-lifecycle:1.0.0 zostały opublikowane. Wersja 1.0.0 zawiera te zatwierdzenia.

Główne funkcje wersji 1.0.0

  • CameraX obsługuje podgląd, robienie zdjęć i analizę.
  • CameraX zarządza cyklem życia aparatu za pomocą łatwego w użyciu interfejsu API.
  • CameraX ma na celu zapewnienie warstwy zgodności, która rozwiązuje wiele problemów w ekosystemie aparatu na Androidzie.

Znane problemy

Wersja 1.0.0-rc05

21 kwietnia 2021 r.

Wersje androidx.camera:camera-camera2:1.0.0-rc05, androidx.camera:camera-core:1.0.0-rc05 i androidx.camera:camera-lifecycle:1.0.0-rc05 zostały opublikowane. Wersja 1.0.0-rc05 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że funkcja ImageCapture z lampą błyskową ustawioną na „Włączona” lub „Automatyczna” robiła wyblakłe zdjęcia na telefonie Samsung Galaxy S7. (I30001)

Wersja 1.0.0-rc04

24 marca 2021 r.

Wersje androidx.camera:camera-camera2:1.0.0-rc04, androidx.camera:camera-core:1.0.0-rc04 i androidx.camera:camera-lifecycle:1.0.0-rc04 zostały opublikowane. Wersja 1.0.0-rc04 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono błąd inicjowania na urządzeniach UMIDIGI BISON (I57d9e, b/180818665).

Wersja 1.0.0-rc03

24 lutego 2021 r.

Wersje androidx.camera:camera-camera2:1.0.0-rc03, androidx.camera:camera-core:1.0.0-rc03 i androidx.camera:camera-lifecycle:1.0.0-rc03 zostały opublikowane. Wersja 1.0.0-rc03 zawiera te zatwierdzenia.

Poprawki błędów

  • Napraw błąd formatu w dokumencie: ProcessCameraProvider#getInstance
  • Rozwiązaliśmy problem z niepowodzeniem testu Robolectric, gdy w CameraXConfig użyto setAvailableCamerasLimiter.
  • Naprawiono regresję wydajności ImageCapture przez usunięcie weryfikacji lokalizacji zapisu obrazu przed zrobieniem zdjęcia. Jeśli po wprowadzeniu tej zmiany miejsce zapisu będzie nieprawidłowe, uzyskanie odpowiedzi o błędzie potrwa dłużej, ponieważ system spróbuje zapisać obraz po zrobieniu zdjęcia.
  • Ta zmiana przechwytuje wyjątek, gdy kolejka obrazów jest maksymalnie zapełniona w ImageAnalysis. Zamiast awarii możesz zauważyć, że inne przypadki użycia są zawieszone lub działają wolno, np. zawieszony lub wolno działający podgląd.
  • Dodano obejście problemu z okresowo uszkodzonymi danymi obrazu w plikach JPEG z tylnego aparatu SM-G930T. (I52001, b/159831206)
  • Ta zmiana przechwytuje wyjątek, gdy kolejka obrazów jest maksymalnie zapełniona w ImageAnalysis. Zamiast awarii możesz zauważyć, że inne przypadki użycia są zawieszone lub działają wolno, np. zawieszony lub wolno działający podgląd. (Ic12da, b/175851631)
  • Naprawiliśmy błąd testu Robolectric, który występował, gdy w CameraXConfig użyto setAvailableCamerasLimiter. (Ice307)
  • Naprawiono regresję wydajności ImageCapture przez usunięcie weryfikacji lokalizacji zapisu obrazu przed zrobieniem zdjęcia. Jeśli po wprowadzeniu tej zmiany miejsce zapisu będzie nieprawidłowe, uzyskanie odpowiedzi o błędzie zajmie więcej czasu, ponieważ po zrobieniu zdjęcia nastąpi próba jego zapisania. (I1fd4e, b/177061560)
  • Naprawiliśmy błąd powodujący spadek wydajności ImageCapture w przypadku opcji OutputFileOptions typu „File”. (I5164a, b/177061560)

Wersja 1.0.0-rc02

27 stycznia 2021 r.

Wersje androidx.camera:camera-camera2:1.0.0-rc02, androidx.camera:camera-core:1.0.0-rc02 i androidx.camera:camera-lifecycle:1.0.0-rc02 zostały opublikowane. Wersja 1.0.0-rc02 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem z IllegalArgumentException, który występował, gdy wszystkie obsługiwane rozmiary podglądu były mniejsze niż 640 x 480, a rozmiar wyświetlania był większy niż 640 x 480. (b/150506192)
  • Ogranicz liczbę prób ponownego otwarcia kamery. Podczas próby rozwiązania niektórych problemów z otwieraniem aparatu CameraX nie będzie już próbować otwierać go w nieskończoność, ale zatrzyma się po 10 sekundach.I435d2

  • Rozwiązaliśmy problem z IllegalArgumentException, który występował, gdy wszystkie obsługiwane rozmiary podglądu były mniejsze niż 640 × 480, a rozmiar wyświetlania był większy niż 640 × 480. (I2a63c, b/150506192)

Wersja 1.0.0-rc01

16 grudnia 2020 roku

Wersje androidx.camera:camera-camera2:1.0.0-rc01, androidx.camera:camera-core:1.0.0-rc01 i androidx.camera:camera-lifecycle:1.0.0-rc01 zostały opublikowane. Wersja 1.0.0-rc01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Zmieniono CameraFilter i Camera2Filter, aby uwzględniały CameraInfo. (I6883d)
  • Dodano eksperymentalną klasę Camera2CameraControl, która umożliwia dynamiczną współpracę z interfejsami API Camera2. (I45cf3)
  • Zmieniono nazwę Camera2CameraInfo#fromCameraInfo na #from. (Ia2bd6)
  • Dodaliśmy eksperymentalny interfejs API setAvailableCamerasLimiter do CameraXConfig, aby umożliwić aplikacjom optymalizację opóźnienia inicjowania przez unikanie inicjowania nieużywanych kamer. (I6cf88)
  • Dodano eksperymentalną metodę CameraXConfig.Builder#setMinimumLoggingLevel(), która umożliwia ustawienie minimalnego poziomu logowania w przypadku logów CameraX. Jeśli nie jest ustawiona, domyślnie przyjmuje wartość Log#DEBUG. (Ic3245)

Poprawki błędów

  • Dodano obejście problemu z okresowo uszkodzonymi danymi obrazu w plikach JPEG z tylnego aparatu SM-G930V. (I5aca5, b/159831206)
  • Rozwiązaliśmy problem polegający na tym, że robienie zdjęć nie przynosiło rezultatów, gdy lampa błyskowa była zawsze włączona, a otoczenie było ciemne, na urządzeniach Samsung SM-A716. (If98b2, b/172036589)
  • Rozwiązaliśmy problem polegający na tym, że nie można było zatrzymać podglądu przez wywołanie Preview.setSurfaceProvider(null). (I3ac18)
  • Rozwiązaliśmy problem z orientacją podczas robienia zdjęć w formacie 4:3 na niektórych urządzeniach. (I0e3fb, b/171492111)

Camera Camera2, Core i Lifecycle w wersji 1.0.0-beta12

11 listopada 2020 roku

Wersje androidx.camera:camera-camera2:1.0.0-beta12, androidx.camera:camera-core:1.0.0-beta12 i androidx.camera:camera-lifecycle:1.0.0-beta12 zostały opublikowane. Wersja 1.0.0-beta12 zawiera te zatwierdzenia.

Poprawki błędów

  • Wyłączono automatyczną lampę błyskową na urządzeniach Samsung A3, aby rozwiązać problem z awarią podczas robienia zdjęcia z automatyczną lampą błyskową w trybie AE na tych urządzeniach. (Ia5fe3, b/157535165)
  • Rozwiązaliśmy problem, który powodował, że podgląd był rozciągnięty na urządzeniach Nexus 4 z Androidem L (poziomy interfejsu API 21 i 22). (I4d407, b/158749159)
  • Implementacja klasy bazowej OnImageCapturedCallback#onCaptureSuccess nie zamyka już obrazu. Ma to na celu zapobieganie nieoczekiwanym zachowaniom u programistów. Deweloperzy nie powinni polegać na metodzie super.onCaptureSuccess do zamykania obrazu. (Ifbf9c)
  • Wariant androidx adnotacji Experimental został wycofany, aby zapewnić zgodność z Kotlinem. Została zastąpiona adnotacją RequiresOptIn, a linter dla Javy został zaktualizowany, aby obsługiwał zarówno nową adnotację Kotlin, jak i nowy wariant androidx. (I52495, b/151331381)

Camera-Camera2 w wersji 1.0.0-beta11

14 października 2020 r.

Publikacja androidx.camera:camera-camera2:1.0.0-beta11 Wersja 1.0.0-beta11 zawiera te zatwierdzenia.

Nowe funkcje

  • Obsługuje interfejs API Androida 11 CONTROL_ZOOM_RATIO do powiększania na urządzeniach z Androidem 11 lub nowszym, które zawierają prawidłowy CONTROL_ZOOM_RATIO_RANGE. (I62cc6)

Poprawki błędów

  • Rozwiązaliśmy problem z błędem NumberFormatException, który występował, gdy identyfikator kamery nie był liczbą całkowitą. (Ib2228)
  • Skróciliśmy czas oczekiwania na inicjalizację CameraX i bindToLifecycle (I61dc5).
  • Utworzenie UseCases nie wymaga inicjalizacji CameraX. Wszystkie konfiguracje specyficzne dla implementacji są ustawiane w UseCase po dołączeniu do instancji Camera, która w przypadku publicznego interfejsu API to ProcessCameraProvider.bindToLifecycle(). (Ia5411)
  • <UseCase>.getTargetRotation() zwróci Surface.ROTATION_0, jeśli zostanie wywołana przed dołączeniem do instancji aparatu, chyba że w Builder lub UseCase ustawiono targetRotation. (I80fcd)

Camera-Core w wersji 1.0.0-beta11

14 października 2020 r.

Publikacja androidx.camera:camera-core:1.0.0-beta11 Wersja 1.0.0-beta11 zawiera te zatwierdzenia.

Nowe funkcje – Obsługa interfejsu API Androida 11 CONTROL_ZOOM_RATIO na potrzeby powiększania na urządzeniach z Androidem 11 lub nowszym, które zawierają prawidłowy CONTROL_ZOOM_RATIO_RANGE. (I62cc6)

Poprawki błędów

  • Rozwiązaliśmy problem z błędem NumberFormatException, który występował, gdy identyfikator kamery nie był liczbą całkowitą. (Ib2228)
  • Tworzenie UseCases nie wymaga inicjowania CameraX. Wszystkie konfiguracje związane z implementacją są ustawiane w przypadku UseCase po dołączeniu do instancji Camera, która w przypadku publicznego interfejsu API to ProcessCameraProvider.bindToLifecycle(). (Ia5411)
  • <UseCase>.getTargetRotation() zwróci Surface.ROTATION_0, jeśli zostanie wywołana przed dołączeniem do instancji aparatu, chyba że w Builder lub UseCase ustawiono targetRotation. (I80fcd)

Camera-Core w wersji 1.0.0-beta10

23 września 2020 r.

Publikacja androidx.camera:camera-core:1.0.0-beta10 Wersja 1.0.0-beta10 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono błąd weryfikacji miejsca zapisu pliku w przypadku robienia zdjęć (I8c565, b/167697553).

Camera-Camera2 w wersji 1.0.0-beta10

23 września 2020 r.

Publikacja androidx.camera:camera-camera2:1.0.0-beta10 Wersja 1.0.0-beta10 zawiera te zatwierdzenia.

Poprawki błędów

Camera-Camera2 w wersji 1.0.0-beta09

16 września 2020 roku

Publikacja androidx.camera:camera-camera2:1.0.0-beta09 Wersja 1.0.0-beta09 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Zamiast udostępniać metody statyczne, Camera2CameraInfo pobiera instancję CameraInfo podczas tworzenia, aby pobrać informacje związane z Camera2. (I5b844)

Poprawki błędów

  • Rozwiązaliśmy problem z docelowym formatem obrazu na tabletach. Jeśli docelowy format obrazu jest ustawiony na AspectRatio.RATIO_16_9, należy wybrać rozmiar 16:9. (Ib7fcf, b/151969438)
  • Zgłoś błąd InitializationException, aby aplikacja mogła prawidłowo obsłużyć błąd AssertionError, który wystąpił podczas tworzenia CameraCharacteristics. (I89c8c, b/160524721)
  • Dodano eksperymentalne interfejsy dla ExposureCompensation (If96c7)

Camera-Core w wersji 1.0.0-beta09

16 września 2020 roku

Publikacja androidx.camera:camera-core:1.0.0-beta09 Wersja 1.0.0-beta09 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Naprawiliśmy błąd, który powodował, że widoczny obszar był oznaczany jako niepusty w UseCaseGroup. Deweloperzy powinni mieć możliwość utworzenia widocznego obszaru bez ustawiania go. (Ie3d2e)
  • Dodano eksperymentalne interfejsy dla ExposureCompensation (If96c7).
  • Zezwalaj na dowolny obrót celu w podglądzie. Informacje o przekształceniu są obliczane i zwracane użytkownikowi na bieżąco za pomocą nowego wywołania zwrotnego TranformationInfoListener. (I21470)

Poprawki błędów

  • Rozwiązaliśmy problem polegający na tym, że na niektórych urządzeniach nie można było wyłączyć lampy błyskowej. Działo się tak, gdy tryb lampy błyskowej był ustawiony na FLASH_MODE_ON, aby zrobić zdjęcie, i zmieniany na FLASH_MODE_OFF, gdy lampa błyskowa była uruchamiana. Objaw jest podobny do włączonego trybu latarki. (Ib4451, b/162568128)
  • Wymuszono używanie TextureView przez PreviewView, jeśli efekt rozszerzenia jest włączony, a implementacja biblioteki dostawcy wymaga wykonania specjalnego procesu na powierzchni wyjściowej. (I0c3cc)
  • Naprawiliśmy wyciek aktywności/fragmentu, gdy kontekst aktywności/fragmentu jest przekazywany do ProcessCameraProvider.getInstance(Context).

Znane problemy

  • Gdy ustawiony jest ViewPort, prostokąt przycięcia ImageCapture może być nieprawidłowy na urządzeniach, które obracają bufor obrazu w HAL. Naprawimy to w kolejnej wersji.

Camera-Camera2 w wersji 1.0.0-beta08

19 sierpnia 2020 r.

Publikacja androidx.camera:camera-camera2:1.0.0-beta08 Wersja 1.0.0-beta08 zawiera te zatwierdzenia.

Poprawki błędów

  • Zoptymalizowaliśmy metodę bindToLifecycle, aby działała szybko w głównym wątku. (I1d57e)
  • DisplayOrientedMeteringPointFactory przyjmuje instancję CameraInfo zamiast CameraSelector, dzięki czemu istnieje bezpośrednie mapowanie na kamerę, dla której fabryka będzie generować punkty. Wszystkie klasy, które używają DisplayOrientedMeteringPointFactory, również przyjmują instancję CameraInfo zamiast CameraSelector. (I400c1)
  • Rozwiązaliśmy problem z grupowaniem rozmiarów formatu obrazu automatycznej rozdzielczości, który powodował, że rozmiar 16:9 mod16 (864 x 480) był wybierany, gdy ustawienie rozdzielczości docelowej wynosiło 2016 x 1080, a obsługiwany był inny rozmiar 16:9 (1920 x 1080). (I53167, b/159363774)
  • Rozwiązaliśmy problem z CameraControl, który uniemożliwiał działanie z powodu sytuacji wyścigu (I2279f, b/152333890, b/160714166).

Camera-Core w wersji 1.0.0-beta08

19 sierpnia 2020 r.

Publikacja androidx.camera:camera-core:1.0.0-beta08 Wersja 1.0.0-beta08 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • DisplayOrientedMeteringPointFactory przyjmuje instancję CameraInfo zamiast CameraSelector, więc istnieje bezpośrednie mapowanie na kamerę, dla której fabryka będzie generować punkty. Wszystkie klasy, które używają DisplayOrientedMeteringPointFactory, przyjmują też instancję CameraInfo zamiast CameraSelector. (I400c1)

Poprawki błędów

  • W przypadku robienia zdjęć zastąp flagę odwrócenia w poziomie w metadanych na podstawie kierunku aparatu. (I28499)
  • Inicjowanie nie powinno już powodować awarii, gdy używany jest obiekt Context, który nie zwraca obiektu Application z Context.getApplicationContext(). (I3d3c9, b/160817073)

Camera-Camera2 w wersji 1.0.0-beta07

22 lipca 2020 r.

Publikacja androidx.camera:camera-camera2:1.0.0-beta07 Wersja 1.0.0-beta07 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem polegający na tym, że podgląd był rozciągnięty na starszych urządzeniach z Androidem 5.0. (I0c03a)
  • Wykluczono niektóre obsługiwane rozmiary JPEG, które powodują problemy z WYSIWYG na niektórych urządzeniach. (Ib5128)

Camera-Core w wersji 1.0.0-beta07

22 lipca 2020 r.

Publikacja androidx.camera:camera-core:1.0.0-beta07 Wersja 1.0.0-beta07 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Scal styl dopasowania FIT_CENTER, FIT_START i FIT_END z FIT. FIT oznacza, że zwrócony prostokąt przycięcia będzie maksymalnym możliwym prostokątem czujnika. (Ia73c3)
  • Prostokąt przycięcia podglądu jest konfigurowany przez widoczny obszar. Użytkownicy powinni widzieć tylko obszar objęty prostokątem przycięcia. (I142a4)

Poprawki błędów

  • Rozwiązaliśmy problem polegający na tym, że podgląd był rozciągnięty na starszym urządzeniu z Androidem 5.0. (I0c03a)
  • Rozwiązaliśmy problem z wyjątkiem ConcurrentModificationException podczas odłączania przypadków użycia. (I371c0)

Camera-Camera2 w wersji 1.0.0-beta06

24 czerwca 2020 r.

Publikacja androidx.camera:camera-camera2:1.0.0-beta06 Wersja 1.0.0-beta06 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano eksperymentalne interfejsy do filtrowania kamer według identyfikatora i CameraCharacteristics. (I28f61)

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że funkcja startFocusAndMetering nie ustawiała ostrości na urządzeniu Samsung Galaxy S7. (If3be7, b/159039233)
  • Rozwiązaliśmy problem polegający na tym, że po zamknięciu aplikacji nie można było wyłączyć aparatu (I7a7b3).
  • Rozwiązanie problemu, który powodował, że wielokrotne przełączanie aparatu przerywało podgląd podczas korzystania z implementacji SurfaceView w PreviewView (I920ce)
  • Metoda CameraControl#startFocusAndMetering zakończy się niepowodzeniem, jeśli żaden z określonych obiektów MeteringPoint nie będzie mógł wygenerować prawidłowych prostokątów pomiarowych. (Id53ce)

Camera-Core w wersji 1.0.0-beta06

24 czerwca 2020 r.

Publikacja androidx.camera:camera-core:1.0.0-beta06 Wersja 1.0.0-beta06 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano eksperymentalne interfejsy do filtrowania kamer według identyfikatora i CameraCharacteristics. (I28f61)

Poprawki błędów

  • Interfejs CameraX można teraz skonfigurować za pomocą ProcessCameraProvider#configureInstance() przed wywołaniem ProcessCameraProvider#getInstance(). Umożliwia to dostosowanie CameraXConfig bez konieczności implementowania CameraXConfig.Provider w klasie aplikacji. (Ia1a8d)
  • Jeśli żaden z określonych obiektów MeteringPoint nie może wygenerować prawidłowych prostokątów pomiarowych, metoda CameraControl#startFocusAndMetering zakończy się niepowodzeniem. (Id53ce)

Camera-Camera2 w wersji 1.0.0-beta05

10 czerwca 2020 r.

Publikacja androidx.camera:camera-camera2:1.0.0-beta05 Wersja 1.0.0-beta05 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiliśmy błąd powodujący awarię aplikacji podczas uruchamiania, gdy CameraX jest inicjowany, gdy telefon jest w trybie Nie przeszkadzać. InitializationException zawiera CameraUnavailableException, który zostanie ustawiony na ListenableFuture wyniku inicjowania, zamiast powodować awarię aplikacji. (I9909a, b/149413835)
  • Naprawiliśmy błąd powodujący awarię podczas wywoływania metody startFocusAndMetering na urządzeniach, na których CONTROL_AF_STATE ma wartość null. (Ife55e, b/157084254)

Camera-Core w wersji 1.0.0-beta05

10 czerwca 2020 r.

Publikacja androidx.camera:camera-core:1.0.0-beta05 Wersja 1.0.0-beta05 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Naprawiono błąd powodujący awarię podczas uruchamiania aplikacji, gdy CameraX jest inicjowana, gdy telefon jest w trybie Nie przeszkadzać. Zamiast awarii aplikacji InitializationException zawierający CameraUnavailableException zostanie ustawiony na ListenableFuture wyniku inicjowania. (I9909a, b/149413835)

Poprawki błędów

  • thought Zaktualizowano dokumentację Javadoc dla setTargetResolution i setTargetRotation. (Iae16f)

Camera-Camera2 w wersji 1.0.0-beta04

27 maja 2020 r.

Publikacja androidx.camera:camera-camera2:1.0.0-beta04 Wersja 1.0.0-beta04 zawiera te zatwierdzenia.

Poprawki błędów

  • Zezwolono aplikacjom na ustawianie dowolnych parametrów żądania przechwytywania camera2 za pomocą Camera2Interop bez powodowania awarii. Pamiętaj, że jeśli pojawią się problemy wynikające z zastąpienia parametrów, Stabilność i działanie nie są gwarantowane, gdy parametry są zastępowane za pomocą Camera2Interop. (Ibe5a1, b/149103700)
  • Naprawiliśmy automatyczną inicjalizację podczas korzystania z aplikacji na urządzeniu, które używa pseudolokalizacji. (I3bef3, b/154767663)
  • Przekonwertowano dziennik błędów związany z przypadkiem użycia odłączenia na dziennik debugowania w Camera2CameraImpl. (I1a565, b/154422490)
  • Naprawiliśmy problem, który powodował, że zdjęcie było czasami zbyt ciemne, mimo że lampa błyskowa została uruchomiona. (I5d9fa, b/149729613)
  • Naprawiono błąd, który powodował, że bufor w ImageProxy z ImageCapture nie był przewijany (I0c455, b/153249512).
  • Rozwiązaliśmy problemy, które występowały, gdy powiązana była tylko funkcja ImageCapture: (1) nie można było robić zdjęć w trybie MAX_QUALITY, (2) jakość obrazu była niska, ponieważ nie działała automatyczna ekspozycja. (I17782, b/145326998)
  • Zwiększona niezawodność ponownego otwierania aparatu, gdy CameraX zostanie odłączony przez inny proces lub ścieżkę kodu, która przejmuje aparat (I1fbc3, b/153714651).

Camera-Core w wersji 1.0.0-beta04

27 maja 2020 r.

Publikacja androidx.camera:camera-core:1.0.0-beta04 Wersja 1.0.0-beta04 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodaje eksperymentalny interfejs API CameraXConfig.Builder#setSchedulerHandler() do ustawiania modułu obsługi używanego wewnętrznie przez stos aparatu CameraX. Ten nowy interfejs API wraz z CameraXConfig.Builder#setCameraExecutor() powinien umożliwiać pełną kontrolę nad wątkami używanymi przez stos aparatu CameraX. (I7bf32, b/121160431)

Poprawki błędów

  • Naprawiono błąd powodujący awarię w ImageAnalysis, gdy dostęp do ImageProxy jest uzyskiwany po zamknięciu ImageReaderProxy. Oznacza to również, że wszystkie ImageProxy otrzymane przez Analyzer muszą zostać zamknięte, zanim zostanie zamknięty ImageReaderProxy. (I4b299, b/145956416, b/154155377, b/156357269)
  • Usunięto parametr CameraInfo z funkcji PreviewView#createSurfaceProvider(). Funkcja PreviewView pobiera go teraz wewnętrznie z SurfaceRequest. (If18f0, b/154652477)
  • Naprawiliśmy automatyczną inicjalizację podczas korzystania z aplikacji na urządzeniu, które używa pseudolokalizacji. (I3bef3, b/154767663)
  • Naprawiliśmy problem, który powodował, że zdjęcie było czasami zbyt ciemne, mimo że lampa błyskowa została uruchomiona. (I5d9fa, b/149729613)
  • Rozwiązaliśmy problem z ImageAnalysis, który powodował, że wielokrotne wywołania funkcji setAnalyzer/clearAnalyzer uniemożliwiały analizatorowi odbieranie obrazów do analizy. (I6169f, b/151605317, b/153514544)
  • Naprawiono błąd, który powodował, że bufor w ImageProxy z ImageCapture nie był przewijany (I0c455, b/153249512).
  • Rozwiązaliśmy problem polegający na tym, że pierwsza kamera na liście obsługiwanych urządzeń CameraManager nie zawsze była wybierana do użycia. (I4c624, b/153418028)
  • Rozwiązaliśmy problem, który powodował sporadyczne awarie, gdy ustawienie Preview.SurfaceProvider nie zwalniało wcześniej żądanej powierzchni. “java.lang.IllegalStateException: Camera surface session should only fail with request cancellation” (I8e4e7, b/155936225)

Camera-Camera2 w wersji 1.0.0-beta03

15 kwietnia 2020 roku

Publikacja androidx.camera:camera-camera2:1.0.0-beta03 Wersja 1.0.0-beta03 zawiera te zatwierdzenia.

Poprawki błędów

  • Poprawki obsługujące wydanie camera-core

Camera-Core w wersji 1.0.0-beta03

15 kwietnia 2020 roku

Publikacja androidx.camera:camera-core:1.0.0-beta03 Wersja 1.0.0-beta03 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiliśmy regresję z wersji beta03, w której wywołanie bindToLifecycle() z zerową liczbą UseCase powodowało zgłoszenie wyjątku. Uniemożliwiało to pobranie Camera bez powiązania UseCase.

Camera-Camera2 w wersji 1.0.0-beta02

1 kwietnia 2020 r.

Publikacja androidx.camera:camera-camera2:1.0.0-beta02 Wersja 1.0.0-beta02 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono ImageInfo.getRotationDegrees() z ImageProxy wygenerowanego przez ImageCapture, aby odpowiadał wartości obrotu orientacji EXIF. (Id4281, b/150802561)
  • Aby używać domyślnej implementacji CameraX/Camera2, nie trzeba już jawnie określać kolejności zależności CameraX w pliku build.gradle. W przypadkach, gdy wymagane jest zadeklarowanie ścisłych zależności, wszystkie zależności CameraX można teraz uwzględnić w pliku kompilacji. (I46e88)
  • Rozwiązaliśmy problem z IllegalArgumentException na urządzeniach, na których rozmiar wyświetlacza jest mniejszy niż 640 x 480. (Ife3f2, b/150506192)
  • Naprawiliśmy błąd w bindToLifecycle, aby UseCase był modyfikowany tylko wtedy, gdy zostanie pomyślnie powiązany. Wcześniej podczas wywoływania bindToLifecycle w celu obliczenia rozdzielczości UseCase był aktualizowany. Teraz nie trzeba już aktualizować UseCase, aby wykonywać obliczenia (I78d9e).

Camera-Core w wersji 1.0.0-beta02

1 kwietnia 2020 r.

Publikacja androidx.camera:camera-core:1.0.0-beta02 Wersja 1.0.0-beta02 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono ImageInfo.getRotationDegrees() z ImageProxy wygenerowanego przez ImageCapture, aby odpowiadał wartości obrotu orientacji EXIF. (Id4281, b/150802561)
  • Naprawiliśmy błąd w bindToLifecycle, aby UseCase był modyfikowany tylko wtedy, gdy zostanie pomyślnie powiązany. Wcześniej podczas wywoływania bindToLifecycle w celu obliczenia rozdzielczości UseCase był aktualizowany. Teraz nie trzeba już aktualizować UseCase, aby wykonywać obliczenia (I78d9e).
  • Rozwiązaliśmy problem, który powodował, że sesja przechwytywania w przypadku użycia Preview nie była aktualizowana, gdy powierzchnia podglądu zmieniała się po wielokrotnym wywołaniu Preview.setSurfaceProvider().

Camera-Camera2 w wersji 1.0.0-beta01

26 lutego 2020 r.

Publikacja androidx.camera:camera-camera2:1.0.0-beta01 Wersja 1.0.0-beta01 zawiera te zatwierdzenia.

Poprawki błędów

  • Zmieniono nazwę SurfaceRequest.setSurface(Surface) na SurfaceRequest.provideSurface(Surface), a SurfaceRequest.setWillNotComplete() na SurfaceRequest.willNotProvideSurface(). (I224fe)
  • Rozwiązaliśmy problem z nieprawidłowym formatem obrazu zapisanego po zmianie wartości obrotu docelowego za pomocą ImageCapture.setTargetRotation(). (I474ea, b/148763432)
  • Naprawiliśmy inicjowanie wariantów aplikacji z włączonym ProGuardem przez zachowanie flagi, która ustawia domyślnego dostawcę CameraXConfig. (I2d6c1)

Camera-Core w wersji 1.0.0-beta01

26 lutego 2020 r.

Publikacja androidx.camera:camera-core:1.0.0-beta01 Wersja 1.0.0-beta01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Zastąpiono ListenableFuture na SurfaceRequest.provideSurface() przez Executor i Callback. Upraszcza to interfejs API, ponieważ nie wymaga już obsługi wyjątków w provideSurface() i wymusza, że wywołania zwrotnego provideSurface() nie można anulować. Ma to zapobiec awariom na starszych urządzeniach spowodowanym przedwczesnym zwalnianiem powierzchni. Obiekt SurfaceRequest.Result jest teraz używany do śledzenia, jak SurfaceRequest korzysta z podanego Surface. (I7854b)
  • Zmieniono nazwę SurfaceRequest.setSurface(Surface) na SurfaceRequest.provideSurface(Surface), a SurfaceRequest.setWillNotComplete() na SurfaceRequest.willNotProvideSurface(). (I224fe)

Poprawki błędów

  • Rozwiązaliśmy problem z nieprawidłowym formatem obrazu zapisanego po zmianie wartości obrotu docelowego za pomocą ImageCapture.setTargetRotation(). (I474ea, b/148763432)
  • Naprawiliśmy inicjowanie wariantów aplikacji z włączonym ProGuardem przez zachowanie flagi, która ustawia domyślnego dostawcę CameraXConfig. (I2d6c1)
  • Zaktualizowaliśmy dokumentację interfejsów API trybu lampy błyskowej, aby uwzględnić możliwe wartości. (I4a3ec)

Camera-Camera2 w wersji 1.0.0-alpha10

10 lutego 2020 r.

Publikacja androidx.camera:camera-camera2:1.0.0-alpha10 Wersja 1.0.0-alpha10 zawiera te zatwierdzenia.

Poprawki błędów

  • Poprawiliśmy stabilność na urządzeniach INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY, zapewniając, że Surface są zachowywane tylko przez czas korzystania z aplikacji Camera2. (I9dac2)
  • Rozwiązaliśmy problem z niedoświetlonym podglądem na urządzeniach LEGACY przez odpowiednie dostosowanie CONTROL_AE_TARGET_FPS_RANGE. (1224638)

Camera-Core w wersji 1.0.0-alpha10

10 lutego 2020 r.

Publikacja androidx.camera:camera-core:1.0.0-alpha10 Wersja 1.0.0-alpha10 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Zaktualizowaliśmy ImageCapture, aby umożliwić zapisywanie obrazów w usługach Uri i OutputStream. Połączono przeciążone metody takePicture w jedną. Zaktualizowano aplikację testową, aby używała Uri jako przykładu kanonicznego. (Ia3bec)
  • Nazwę konta usługi Preview.PreviewSurfaceProvider zmieniono na Preview.SurfaceProvider. SurfaceProvider nie wymagają już od deweloperów tworzenia własnych ListenableFuture, a podawanie Surface odbywa się teraz za pomocą nowego obiektu SurfaceRequest. Metoda Preview.getPreviewSurfaceProvider() została usunięta, ponieważ może być nadużywana, gdy klasa Preview jest sparowana z innymi klasami, takimi jak PreviewView. (I20105)
  • Dodano: getTargetRotation() i getTargetName() do: Preview. (Iceee7)
  • Dodano getTargetRotation(), getBackpressureStrategy() i getImageQueueDepth() w: ImageAnalysis. (I9d6d9)
  • Dodano: getTargetRotation() i getCaptureMode() w: ImageCapture() (I5bc17)
  • Argumenty, które wcześniej były przekazywane w ImageCapture.OnImageSavedCallback.onError() i ImageCapture.OnImageCapturedCallback.onError(), zostały zastąpione pojedynczym argumentem ImageCaptureException, który nadal zawiera wszystkie informacje, które były wcześniej przekazywane.
  • Argument pliku przekazany wcześniej w ImageCapture.OnImageSavedCallback.onImageSaved() został usunięty. (I750d2)
  • Preview i ImageCapture zajęcia są teraz oznaczone jako ostateczne. (I2500b)
  • Zaktualizowano interfejs API, scalając metody getZoomRatio(), getMaxZoomRatio(), getMinZoomRatio() i getLinearZoom() interfejsu CameraInfo w getZoomState(), który zwraca instancję ZoomState. (Ib19fe)
  • Usunięto pola interfejsu API OPTION_TARGET_CLASS i OPTION_TARGET_NAME z CameraXConfig, ponieważ są one przeznaczone wyłącznie do użytku wewnętrznego biblioteki. Usunięto konstruktor dla: CameraXConfig.Builder. (I96912)
  • Usunięto wymaganie, zgodnie z którym aplikacja musi rozszerzać Application, aby zainicjować CameraX. CameraX będzie teraz inicjowany z domyślną konfiguracją Camera2, o ile artefakt camera-camera2 jest uwzględniony w pliku build.gradle aplikacji. (I58ff5) (b/146923574)

Camera-Camera2 w wersji 1.0.0-alpha09

22 stycznia 2020 r.

Publikacja androidx.camera:camera-camera2:1.0.0-alpha09 Wersja 1.0.0-alpha09 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodaj ścieżkę interoperacyjności camera2, aby wyodrębnić identyfikator aparatu Camera2. Identyfikator kamery możesz wyodrębnić z CameraInfo za pomocą Camera2CameraInfo.extractCameraId(). Poniższy przykładowy kod pokazuje, jak używać tej funkcji:

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

    Klasa Camera2CameraInfo wymaga klasy markerClass ExperimentalCamera2Interop.

Camera-Core w wersji 1.0.0-alpha09

22 stycznia 2020 r.

Publikacja androidx.camera:camera-core:1.0.0-alpha09 Wersja 1.0.0-alpha09 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Zmieniono nazwę parametru useCaseForSurface w SurfaceOrientedMeteringPointFactory na useCaseForAspectRatio i rozszerzono dokumentację referencyjną.
  • Metody FocusMeteringAction.Builder.from() zostały zastąpione przez konstruktory FocusMeteringAction.Builder().
  • Usunięto: DisplayOrientedMeteringPointFactory(android.content.Context, androidx.camera.core.CameraSelector, float, float). Aplikacje powinny używać konstruktora, który przyjmuje parametr Display i przekazuje bieżący wyświetlacz.
  • Ulepszenia Javadoc dotyczące interfejsów API ostrości i pomiaru w odniesieniu do MeteringMode i flag 3A oraz użycia parametru Display.
  • Rozszerzyliśmy dokumentację referencyjną dotyczącą setZoomRatio i setLinearZoom.

Poprawki błędów

  • Rozwiązaliśmy problemy występujące podczas zamykania i otwierania kamer, które powodowały błąd sprawdzania warunku wstępnego.
  • Naprawiliśmy błąd ConcurrentModificationException, który mógł wystąpić podczas korzystania z interfejsów API latarki i powiększenia.
  • Rozwiązaliśmy problem, dzięki czemu teraz wybierane są rozdzielczości bliższe żądanej, gdy dostępny jest rozmiar wymiarów mod16.
  • Interfejsy API startFocusMetering i cancelFocusMetering działają teraz zgodnie z dokumentacją, z prawidłowym czasem i potencjalnie zwracając błędy, gdy wystąpią.
  • Rozwiązaliśmy problem, który występował, gdy żądano określonej rozdzielczości docelowej z formatem obrazu przycięcia na urządzeniu, które nie obsługuje takich rozmiarów. Teraz, jeśli będzie to możliwe, zostanie wybrany nieprzycięty rozmiar o wystarczającej rozdzielczości, aby spełnić pierwotne żądanie.

Camera-Camera2 w wersji 1.0.0-alpha08

18 grudnia 2019 r.

Publikacja androidx.camera:camera-camera2:1.0.0-alpha08 Wersja 1.0.0-alpha08 zawiera te zatwierdzenia.

Znane problemy

  • Nie wszystkie opcje żądania przechwytywania Camera2 działają podczas korzystania z interoperacyjności Camera2. Jeśli żądana opcja nie jest obsługiwana, sesja nie zostanie rozpoczęta i może wystąpić błąd, np.: 09-09 14:04:13.643 10117 26020 26036 E AndroidRuntime: java.lang.IllegalArgumentException: Unsupported session configuration combination

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że po obróceniu lub przełączeniu aparatu na poziomie interfejsu API 21 i 22 pojawiał się czarny ekran podglądu.

Zmiany w interfejsie API

  • Eksperymentalna: dodano ścieżkę interoperacyjności camera2 do wyodrębniania identyfikatora aparatu.

Camera-Core w wersji 1.0.0-alpha08

18 grudnia 2019 r.

Publikacja androidx.camera:camera-core:1.0.0-alpha08 Wersja 1.0.0-alpha08 zawiera te zatwierdzenia.

Znane problemy

  • Aplikacje korzystające z PreviewView lub CameraView mogą mieć nieprawidłowy podgląd formatu obrazu. Dzieje się tak po wstrzymaniu lub wznowieniu na niektórych urządzeniach FULL, takich jak Pixel 2.

Poprawki błędów

  • Zaktualizowaliśmy dokumentację dotyczącą FocusMeteringAction i CameraControl.
  • Wdrożono TorchControl dla: enableTorch() i getTorchState().

Zmiany w interfejsie API

  • Ukryliśmy IntDef i przenieśliśmy stałe IntDef poza definicję IntDef.
  • Przeniesiono element rotationDegrees z klasy OnImageCaptureCallback do ImageInfo.
  • Przeniesiono element rotationDegrees z klasy Analyzer do ImageInfo.

Camera-Camera2 w wersji 1.0.0-alpha07

4 grudnia 2019 r.

Publikacja androidx.camera:camera-camera2:1.0.0-alpha07 Wersja 1.0.0-alpha07 pakietu camera-camera2 zawiera te zatwierdzenia

  • Camera2Config jest już dostępna do inicjowania i konfigurowania implementacji CameraX opartej na Camera2. Więcej informacji o tym, jak używać tej funkcji podczas inicjowania, znajdziesz w sekcji camera-core w informacjach o wersji.
  • Funkcja współdziałania camera2 jest teraz oznaczona jako eksperymentalna i została przeniesiona do osobnego pakietu androidx.camera.camera2.interop.

Camera-Core w wersji 1.0.0-alpha07

4 grudnia 2019 r.

Publikacja androidx.camera:camera-core:1.0.0-alpha07 Wersja 1.0.0-alpha07 pakietu camera-core zawiera te zatwierdzenia

Pamiętaj, że w tej wersji alfa wprowadziliśmy kilka istotnych zmian, ponieważ przygotowujemy się do wersji beta. Zalecamy zapoznanie się ze zmianami i podzielenie się opinią na grupie dyskusyjnej Google CameraX. Deweloperom, którzy używają CameraX w aplikacjach dostępnych w Sklepie Play, zalecamy poczekanie na oficjalną wersję beta przed uaktualnieniem biblioteki w aplikacjach.

Zmiany w interfejsie API

  • Ważne: inicjowanie CameraX uległo zmianie. Aplikacje powinny implementować interfejs CameraXConfig.Provider i używać domyślnego interfejsu Camera2Config udostępnianego przez androidx.camera.camera2. Typowe zastosowanie:

    import androidx.camera.camera2.Camera2Config
    import androidx.camera.core.CameraXConfig
    
    public class MyCameraXApplication : Application(),  CameraXConfig.Provider {
        override fun getCameraXConfig(): CameraXConfig {
                return Camera2Config.defaultConfig(this)
        }
    }
    
  • Klasa CameraX została usunięta. bindToLifecycle(), unbind(), unbindAll(), isBound() i hasCamera(), które wcześniej były udostępniane przez wywołanie klasy CameraX, są teraz dostępne przez ProcessCameraProvider.

  • Instancja ProcessCameraProvider dla każdego procesu jest uzyskiwana asynchronicznie za pomocą metody statycznej ProcessCameraProvider.getInstance(), która zwraca obiekt listenable future, który po zakończeniu udostępnia ProcessCameraProvider. Tutaj jest on wyświetlany w onCreate() w przypadku typowego użytkowania. Możesz wywołać getInstance() później w cyklu życia aktywności, aby opóźnić czas oczekiwania na inicjalizację (np. gdy działanie użytkownika otwiera interfejs aparatu).

    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);
      }
    
  • Detektor można dodać do ListenableFuture zwracanego przez getInstance(). Dzięki temu dostawcę aparatu można pobrać z Future bez blokowania na Future.get()

    cameraProviderFuture.addListener(Runnable {
      val cameraProvider = cameraProviderFuture.get()
      cameraProvider.bindToLifecycle(...)
    }, ContextCompat.getMainExecutor(this))
    
  • Wybór aparatu jest teraz dokonywany przez selektor aparatu, a nie w zależności od przypadku użycia.

    val cameraSelector = CameraSelector.Builder().requireLensFacing(LensFacing.BACK).build()
    
  • CameraProvider.bindToLifecycle otrzymuje właściciela cyklu życia, selektor aparatu i przypadki użycia, które są następnie powiązane z danym właścicielem cyklu życia i uruchamiane w przypadku wybranego aparatu.

    cameraProvider.bindToLifecycle(this as LifecycleOwner,
           cameraSelector, preview, imageAnalysis)
    
  • Usunięto klasy „Config” przypadków użycia. Zamiast tego twórz przypadki użycia bezpośrednio, ustawiając opcje w każdym kreatorze przypadków użycia. Przykład:

    preview = Preview.Builder().setTargetAspectRatio(AspectRatio.RATIO_16_9).build()
    
  • Przypadek użycia podglądu został zaktualizowany, aby akceptować platformę utworzoną przez aplikację i przez nią zarządzaną, co zapewnia zgodność ze sprawdzonymi metodami na Androidzie. Zdecydowanie zalecamy używanie klasy widoku PreviewView dostępnej w pakiecie camera-view.

    preview.setPreviewSurfaceProvider(previewView.previewSurfaceProvider)
    
  • Zapoznaj się z dokumentacją dotyczącą dołączania platformy zarządzanej przez aplikację. W takich przypadkach aplikacja zarządza cyklem życia platformy.

  • Ważne: implementacja metody ImageAnalysis Analyzer musi wywoływać metodę image.close() na otrzymanych obrazach, gdy zakończy się ich używanie. W przeciwnym razie nowe obrazy mogą nie być odbierane lub kamera może się zawiesić, w zależności od ustawienia przeciwciśnienia. Szczegółowe informacje znajdziesz w dokumentacji.

  • Strategia ImageAnalysis ImageReaderMode została zmieniona na strategię backpressure intdef.

  • ImageProxy.getImage() jest oznaczony jako eksperymentalny. Aplikacje powinny dodawać adnotacje dotyczące użycia, na przykład za pomocą @androidx.camera.core.ExperimentalGetImage

  • Wymóg adnotacji UIThread dla Analyzer został usunięty.

  • Dodano funkcję ImageAnalysis.clearAnalyzer(), która umożliwia usunięcie analizatora.

  • Nazwy detektorów z więcej niż 1 metodą zostały zmienione na Callback:

    • ImageCapture.OnImageCapturedListener to teraz ImageCapture.OnImageCapturedCallback
    • ImageCapture.OnImageSavedListener to teraz ImageCapture.OnImageSavedCallback
    • VideoCapture.OnVideoSavedListener to teraz VideoCapture.OnVideoSavedCallback
  • Typy wyliczeniowe zostały zmienione na IntDef

  • Dodaliśmy elementy sterujące powiększeniem:

    • CameraControl.setLinearZoom()
    • CameraControl.setZoomRatio()
    • CameraInfo.getLinearZoom()
    • CameraInfo.getMaxZoomRatio()
    • CameraInfo.getZoomRatio()
  • Dodano CameraInfo.hasFlashUnit(), aby określić, czy urządzenie ma lampę błyskową lub latarkę.

  • Usunięto CameraInfo.isFlashAvailable(). Latarka zastępuje funkcję lampy błyskowej. Więcej informacji znajdziesz w dokumentacji referencyjnej.

  • Pola ImageCapture.Metadata są zastępowane przez akcesory get/set/is.

  • Metody startFocusMetering i cancelFocusMetering zwracają teraz obiekt ListenableFutures, który reprezentuje asynchroniczne działanie wywołania.

  • MeteringPoints działają teraz jako uchwyty do działań związanych z pomiarem i są tworzone przez fabryki. Aplikacje powinny używać istniejących fabryk, a nie niestandardowych.

Rozwiązane problemy

  • Rozwiązaliśmy problem z robieniem zdjęcia po wznowieniu (gdy po poprzednim wstrzymaniu zdjęcia oczekiwały na ukończenie).
  • Znany problem: funkcja CameraControl.enableTorch() działa, ale zwracana wartość ListenableFuture<Void> zawsze wskazuje na natychmiastową przyszłość complete(success), nawet jeśli nie ma lampy błyskowej. W przyszłych wersjach zostanie to poprawione, aby działało w ten sposób: gdy nie ma lampy błyskowej, enableTorch(true) natychmiast kończy się niepowodzeniem (nie wysyła żądania do CaptureSession), a TorchState pozostaje wyłączone.
  • Znany problem: startFocusAndMetering i cancelFocusAndMetering rozpoczynają i anulują pomiar ostrości, ale natychmiast zwracają completed (success), co nie odpowiada udokumentowanemu działaniu. FocusMeteringResult z ListenableFuture<FocusMeteringResult> CameraControl.startFocusAndMetering() to fałszywy wynik, który isFocusSuccessful() i zawsze ma wartość „false”, co różni się od zamierzonego, udokumentowanego działania.
  • Znany problem: trwają prace nad fabryką punktów pomiarowych do użycia ze zdarzeniami dotknięcia PreviewView. Na razie aplikacje łączące niestandardowe zarządzane interfejsy mogą używać istniejących fabryk punktów pomiarowych. W przeciwnym razie funkcja ustawiania ostrości dotykiem nie jest dostępna w przypadku PreviewView.

Camera-Camera2 i Camera-Core w wersji 1.0.0-alpha06

9 października 2019 r.

Publikacja androidx.camera:camera-camera2:1.0.0-alpha06 i androidx.camera:camera-core:1.0.0-alpha06 Oto zatwierdzenia uwzględnione w wersji camera-camera2:1.0.0-alpha06 i zatwierdzenia uwzględnione w wersji camera-core:1.0.0-alpha06.

Nowe funkcje

Zmiany w ustawianiu formatu obrazu:

  • Dodano setTargetAspectRatioMode(), który akceptuje argument typu wyliczeniowego. Ustawia tryb formatu obrazu z opcjami RATIO_4_3 lub RATIO_16_9 zamiast dowolnego formatu obrazu. Lepiej odzwierciedla to fakt, że aparat obsługuje tylko określone formaty obrazu, a nie dowolne.
    • Obecnie dostępne są tylko formaty 16:9 i 4:3. W przypadku formatu 1:1 tylko niektóre urządzenia mają tę opcję dostępną w aparacie i tylko w ograniczonych rozdzielczościach. Aplikacje, które projektują interfejs lub przetwarzanie w formacie 1:1, powinny używać bardziej elastycznych opcji 16:9 lub 4:3 i przycinać wyświetlany obraz lub przetwarzać podregion.
    • Te formaty obrazu są zorientowane tak, aby wykorzystywać maksymalny obszar matrycy.
  • Do interfejsów API konfiguracji przypadków użycia dodano metodę getTargetAspectRatio(), która zwraca format obrazu, dla którego przeznaczony jest wynik przypadku użycia.
  • Metoda setTargetAspectRatio(Rational aspectRatio) została zmieniona na setTargetAspectRatioCustom(Rational aspectRatio) w przypadku ImageCapture. Po ustawieniu tej opcji dane wyjściowe ImageCapture są odpowiednio przycinane.

Interfejsy API wykonawcy

  • Te funkcje akceptują parametr executor, który umożliwia aplikacji kontrolowanie, na którym wykonawcy funkcja jest uruchamiana.
    • Interfejs API Preview.setOnPreviewOutputUpdateListener(). Jeśli nie ma wykonawcy dla danej funkcji, jest ona wykonywana w głównym wątku.
    • Preview.setOnPreviewOutputUpdateListener
    • FocusMeteringAction.Builder.setAutoFocusCallback
    • ImageAnalysis.setAnalyzer
    • ImageCapture.takePicture
    • CameraView.takePicture
    • CameraView.startRecording
    • VideoCapture.startRecording

Dodano CameraInfo z interfejsami API do sprawdzania dostępności lampy błyskowej i obrotu czujnika

  • Dodano CameraInfo i metodę getCameraInfo, która umożliwia aplikacjom sprawdzanie, czy jest dostępny obiektyw skierowany w stronę CameraInfo i czy w tym aparacie jest dostępna lampa błyskowa. Przykład:

    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);
    }
    
  • Dodano użytkownika CameraInfo.getSensorRotationDegrees(). Zapewnia orientację czujnika aparatu względem naturalnej orientacji urządzenia lub, dla wygody, względem orientacji opisanej przez obrót powierzchni (który opisuje orientację względem naturalnej orientacji).

Zmiany w interfejsie API i poprawki błędów

  • Formaty obrazu: w każdym przypadku użycia aplikacje powinny wywoływać tylko setTargetResolution() lub setTargetAspectRatio(). Wywołanie obu metod w tym samym kreatorze powoduje błąd.
    • Zwykle zalecamy użycie setTargetAspectRatio() na podstawie projektu interfejsu aplikacji. Konkretne rozwiązania zależą od przypadku użycia. Na przykład podgląd jest zbliżony do rozdzielczości ekranu, a robienie zdjęć zapewnia zdjęcia w wysokiej rozdzielczości. Więcej informacji znajdziesz w tabeli automatycznych rozwiązań.
    • Używaj setTargetResolution() w bardziej szczegółowych przypadkach, np. gdy wymagana jest minimalna (aby zaoszczędzić moc obliczeniową) lub maksymalna rozdzielczość (aby przetworzyć szczegóły).
  • Executor API: usunięto wywołanie setCallbackHandler() z interfejsów API konfiguracji przypadków użycia. Zamiast tego aplikacje mogą ustawić executor jako parametr w różnych innych interfejsach API, które ustawiają wywołanie zwrotne.
  • Zaktualizowano adnotacje o wartościach null w różnych funkcjach.
  • Rozwiązaliśmy problem, który powodował błąd java.lang.IllegalStateException at Camera$StateCallback.onError podczas otwierania aparatu.
  • Rozwiązaliśmy problem, który powodował, że gdy aplikacja żądała większych lub domyślnych rozdzielczości, wybierane były zbyt małe rozdzielczości (mniejsze niż 640 x 480), co powodowało, że podgląd obrazu był niewyraźny lub rozpikselowany. Aplikacje, które wymagają mniejszych rozdzielczości, mogą o nie poprosić.
  • Rozwiązaliśmy problem, który powodował, że po powrocie z intencji uruchamiającej inną aplikację aparatu na ekranie pojawiał się czarny ekran (nie udało się uruchomić aparatu).
  • Naprawiliśmy błąd, który powodował wyświetlanie tego błędu, gdy aplikacje były wielokrotnie uruchamiane lub zatrzymywane: java.lang.IllegalArgumentException: CaptureRequest contains unconfigured Input/Output Surface!
  • Naprawiliśmy błąd, który występował podczas wyłączania ImageAnalysis: java.lang.IllegalStateException: maxImages (4) has already been acquired, call #close before acquiring more.
  • Dodaliśmy dodatkowe testy procesu odłączania kamery.
  • Zwiększyliśmy stabilność systemu testowego podczas przeprowadzania testów aparatu jeden po drugim.

Camera-Camera2 i Camera-Core w wersji 1.0.0-alpha05

5 września 2019 r.

Publikacja androidx.camera:camera-camera2:1.0.0-alpha05 i androidx.camera:camera-core:1.0.0-alpha05 Oto zmiany wprowadzone w camera-camera2:1.0.0-alpha05 i zmiany wprowadzone w camera-core:1.0.0-alpha05.

  • Zmiana interfejsu API: zmieniono nazwy zmiennych błędów przypadków użycia:

    • Nazwa ImageCapture.UseCaseError została zmieniona na ImageCapture.ImageCaptureError
    • Nazwa VideoCapture.UseCaseError została zmieniona na VideoCapture.VideoCaptureError
  • Dodano interfejs API CameraControl z interfejsami API ustawiania ostrości po dotknięciu

    • Dodano interfejs API do pobierania CameraControl z CameraX dla aparatu wybranego na podstawie kierunku obiektywu:

      CameraX.getCameraControl(LensFacing lensFacing)

    • Dodano MeteringPointFactory, MeteringPoint, MeteringMode i FocusMeteringAction, aby uruchomić ustawianie ostrości po kliknięciu:

      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();
      
    • Dodano interfejs API dla CameraControl, który umożliwia rozpoczęcie i anulowanie pomiaru ostrości:

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

    • Dodano interfejsy API dla fabryk punktów pomiarowych, które pomagają w przekształcaniu współrzędnych dotknięcia na współrzędne czujnika na podstawie klas widoku:

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

  • Wymuszaj wywoływanie tych metod w głównym wątku (UI) i zgłaszaj błąd IllegalStateException, gdy tak się nie dzieje. Przyszłe wersje będą umożliwiać korzystanie z innych wątków i zapewnią serializację.

    • CameraX.bindToLifecycle()
    • CameraX.unbind()
    • CameraX.unbindAll()
    • ImageAnalysis.setAnalyzer()
    • ImageAnalysis.getAnalyzer()
    • ImageAnalysis.removeAnalyzer()
    • Preview.removePreviewOutputListener()
    • Preview.getOnPreviewOutputUpdateListener()
    • Preview.setOnPreviewOutputUpdateListener()
  • Różne ustawienia konfiguracji akceptują teraz parametry o wartości null, a odpowiednie metody pobierające mogą zwracać wartość null.

  • Rozwiązaliśmy problem występujący podczas testowania na emulatorach, które nie obsługują ustawień AF/AE/AWB.

  • Naprawiliśmy błąd powodujący awarię podczas obracania obrazu w trakcie jego analizy.

  • Naprawiliśmy błąd, który powodował, że podgląd był czarny na początku (brak danych z aparatu), po obróceniu lub po przełączeniu się między przednim a tylnym aparatem.

  • Usunięto testowanie wielu przypadków użycia analizy obrazów jednocześnie. Aby zapewnić zgodność, aplikacje powinny dołączać tylko 1 przypadek użycia analizy obrazu.

  • Dodaliśmy wstępne testy Robolectric dotyczące fałszywego aparatu w pakiecie testowym aparatu (w trakcie prac).

  • Usunięto test Camera2Inititalizer, ponieważ jego zakres był niejasny lub mylący.

Camera-Camera2 i Camera-Core w wersji 1.0.0-alpha04

7 sierpnia 2019 r.

Publikacja androidx.camera:camera-camera2:1.0.0-alpha04 i androidx.camera:camera-core:1.0.0-alpha04 Wersja 1.0.0-alpha04 zawiera te zatwierdzenia.

Nowe funkcje

Zmiany w wyborze formatu obrazu i rozdzielczości

Celem CameraX jest pomyślne zainicjowanie sesji aparatu. Oznacza to, że CameraX dostosowuje rozdzielczość i format obrazu do możliwości urządzenia, aby rozpocząć sesję przechwytywania jako pierwszy cel, więc dokładne żądania mogą nie zostać spełnione. Możliwe przyczyny:

  • Urządzenia nieobsługujące żądanej rozdzielczości
  • problemy ze zgodnością, np. na STARSZYCH urządzeniach, na których do prawidłowego działania wymagane są określone rozdzielczości;
  • Na niektórych urządzeniach pewne formaty są dostępne tylko w określonych formatach obrazu.
  • Preferencja „najbliższy mod16” w przypadku kodowania JPEG lub wideo. Zobacz: CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP

Chociaż CameraX tworzy sesję i nią zarządza, zawsze sprawdzaj w kodzie rozmiary obrazów zwracane w przypadku użycia i odpowiednio je dostosowuj.

Wprowadziliśmy pewne zmiany w ustawieniach rozdzielczości i formatu obrazu, aby interfejs API był bardziej przejrzysty:

  • Jeśli nie ustawiono żadnego formatu obrazu, w przypadku podglądu domyślnie stosowany jest format 4:3.
  • Gdy CameraX wewnętrznie rozważa zmiany żądanych rozdzielczości i formatów obrazu na podstawie możliwości urządzenia, najpierw próbuje zachować ten sam format obrazu (określony przez wywołania setTargetAspectRatio lub setTargetResolution).
  • Wersja rozdzielczości „Najbliższa mod16” jest traktowana jako ten sam format obrazu.

Tryb nieblokujący ImageAnalysis

  • Działanie ImageReaderMode.ACQUIRE_LATEST_IMAGE nie jest już blokujące. Pobiera najnowszy obraz z kolejki, ale stale odrzuca nieużywane obrazy, aby uniknąć blokowania potoku kamery.
  • Analizator może przechowywać pojedynczy obraz bez ograniczeń czasowych, nie powodując zatrzymania potoku.
  • Jeśli aplikacja udostępnia wykonawcę, który następnie blokuje, przypadek użycia ImageAnalysis blokuje.
  • Domyślny executor ustawiony wewnętrznie działa jako executor nieblokujący.

Poprawki błędów

  • Rozwiązaliśmy problemy z przekroczeniem limitu czasu oczekiwania na konwergencję 3A podczas robienia zdjęć na urządzeniach bez autofokusa, automatycznej ekspozycji i automatycznego balansu bieli.
  • Rozwiązaliśmy problem występujący podczas szybkiego robienia zdjęć za pomocą ImageCapture. Naprawia błąd: java.lang.IllegalStateException: maxImages (2) has already been acquired
  • Rozwiązaliśmy problem polegający na tym, że metoda setLensFacing nie była wywoływana w przypadku zastosowania, co powodowało błąd java.lang.IllegalArgumentException: Unable to get camera ID for use case.
  • Rozwiązaliśmy problem, który powodował, że urządzenie LEGACY wymagało określonego formatu obrazu jako maksymalnej rozdzielczości JPEG.
  • Rozwiązaliśmy problem, który występował, gdy aplikacja działała w tle podczas otwierania aparatu.
  • Rozwiązano problem z interfejsem API < 25, usunięto błąd checkAndUpdateEglState: invalid current EGLDisplay
  • Naprawiliśmy problem z odłączaniem podglądu po włączeniu i uruchomieniu rozszerzeń.
  • Artefakty kompilacji dla widoku i rozszerzeń aparatu są teraz publikowane jako wersje alfa

Camera-Camera2 i Camera-Core w wersji 1.0.0-alpha03

2 lipca 2019 r.

Publikacja androidx.camera:camera-core:1.0.0-alpha03 i androidx.camera:camera-camera2:1.0.0-alpha03 Wersja 1.0.0-alpha03 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano wyjaśnienie javadoc dotyczące „target” w wywołaniach konfiguracji setTarget.

Camera-Core

  • Naprawiliśmy błąd powodujący awarię nieskonfigurowanej powierzchni wejściowej/wyjściowej podczas szybkiego otwierania/zamykania lub wiązania/odwiązywania.
  • Przejście na nowe implementacje funkcji
  • Poprawki testów zapewniające bardziej niezawodne testowanie
  • Test integracji podstawowej pokazuje teraz czas wykonania zdjęć
  • Opracowanie wewnętrznej klasy zgodności dla wykonawców
  • Test czasu oczekiwania na zakończenie poprzedniego przechwytywania obrazów przez aplikację i poprawiona stabilność

Rozszerzenia

  • Dodano testy obsługi wersji.
  • Dodatkowe testy – wywołania zwrotne zdarzeń rozszerzenia
  • Ulepszenia dotyczące wewnętrznie powiązanych obrazów i metadanych.
  • Poprawki dotyczące przełączania trybów w aplikacji testowej

Camera-Camera2 i Camera-Core w wersji 1.0.0-alpha02

5 czerwca 2019 r.

Publikacja androidx.camera:camera-core:1.0.0-alpha02 i androidx.camera:camera-camera2:1.0.0-alpha02 Wersja 1.0.0-alpha02 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem z dzieleniem przez zero podczas korzystania z emulatora.
  • Rozwiązaliśmy problem z błędem NullPointerException/Surface Abandoned, który występował na niektórych urządzeniach podczas szybkiego robienia zdjęć przy szybkim odłączaniu i ponownym podłączaniu przypadków użycia.
  • Rozwiązaliśmy problem wewnętrzny, aby mieć pewność, że aktualizacje żądań przechwytywania będą miały spójny wpływ na wszystkie platformy.
  • Ulepszenia stabilności podczas ponownego uruchamiania przypadków użycia w nowych instancjach aplikacji
  • Zmiany w architekturze wewnętrznej w celu przygotowania do obsługi wykonawców w interfejsie API
  • Dodatkowe wyjaśnienia w Javadoc dotyczące klasy CameraX i zarządzania cyklem życia.
  • Dodano testy z instrumentacją w przypadku aplikacji do testowania wydajności Antelope
  • Usunięcie konieczności używania „-keepattributes Signature” w konfiguracji Proguard aplikacji

Camera-Camera2 i Camera-Core 1.0.0-alpha01

7 maja 2019 r.

Publikacja androidx.camera:camera-core:1.0.0-alpha01 i androidx.camera:camera-camera2:1.0.0-alpha01 Wersja 1.0.0-alpha01 zawiera te zatwierdzenia.

Camera-Lifecycle w wersji 1.0.0-beta11

14 października 2020 r.

Publikacja androidx.camera:camera-lifecycle:1.0.0-beta11 Wersja 1.0.0-beta11 zawiera te zatwierdzenia.

Poprawki błędów

  • <UseCase>.getTargetRotation() zwróci Surface.ROTATION_0, jeśli zostanie wywołana przed dołączeniem do instancji aparatu, chyba że w Builder lub UseCase ustawiono targetRotation. (I80fcd)

Camera-Lifecycle w wersji 1.0.0-beta10

23 września 2020 r.

Publikacja androidx.camera:camera-lifecycle:1.0.0-beta10 Wersja 1.0.0-beta10 zawiera te zatwierdzenia.

Poprawki błędów

Camera-Lifecycle w wersji 1.0.0-beta09

16 września 2020 roku

Publikacja androidx.camera:camera-lifecycle:1.0.0-beta09 Wersja 1.0.0-beta09 zawiera te zatwierdzenia.

Camera-Lifecycle w wersji 1.0.0-beta08

19 sierpnia 2020 r.

Publikacja androidx.camera:camera-lifecycle:1.0.0-beta08 Wersja 1.0.0-beta08 zawiera te zatwierdzenia.

Poprawki błędów

  • Inicjowanie nie powinno już powodować awarii, gdy używany jest obiekt Context, który nie zwraca obiektu Application z Context.getApplicationContext(). (I3d3c9, b/160817073)

Camera-Lifecycle w wersji 1.0.0-beta07

22 lipca 2020 r.

Publikacja androidx.camera:camera-lifecycle:1.0.0-beta07 Wersja 1.0.0-beta07 zawiera te zatwierdzenia.

Camera-Lifecycle w wersji 1.0.0-beta06

24 czerwca 2020 r.

Publikacja androidx.camera:camera-lifecycle:1.0.0-beta06 Wersja 1.0.0-beta06 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • CameraX można teraz skonfigurować za pomocą metody ProcessCameraProvider#configureInstance() przed wywołaniem metody ProcessCameraProvider#getInstance(). Umożliwia to dostosowanie CameraXConfig bez konieczności implementowania CameraXConfig.Provider w klasie Application aplikacji. (Ia1a8d)

Camera-Lifecycle w wersji 1.0.0-beta05

10 czerwca 2020 r.

Publikacja androidx.camera:camera-lifecycle:1.0.0-beta05 Wersja 1.0.0-beta05 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono błąd powodujący awarię podczas uruchamiania aplikacji, gdy CameraX jest inicjowana, gdy telefon jest w trybie Nie przeszkadzać. Zamiast awarii aplikacji InitializationException zawierający CameraUnavailableException zostanie ustawiony na ListenableFuture wyniku inicjowania. (I9909a, b/149413835)

Camera-Lifecycle w wersji 1.0.0-beta04

27 maja 2020 r.

Publikacja androidx.camera:camera-lifecycle:1.0.0-beta04 Wersja 1.0.0-beta04 zawiera te zatwierdzenia.

Camera-Lifecycle w wersji 1.0.0-beta03

15 kwietnia 2020 roku

Publikacja androidx.camera:camera-lifecycle:1.0.0-beta03 Wersja 1.0.0-beta03 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiliśmy regresję z wersji beta03, w której wywołanie bindToLifecycle() z zerową liczbą UseCase powodowało zgłoszenie wyjątku. Uniemożliwiało to pobranie Camera bez powiązania UseCase.
  • Poprawki obsługujące wydanie camera-core

Camera-Lifecycle w wersji 1.0.0-beta01

26 lutego 2020 r.

Publikacja androidx.camera:camera-lifecycle:1.0.0-beta01 Wersja 1.0.0-beta01 zawiera te zatwierdzenia.

Poprawki błędów

  • Poprawiliśmy dokumentację, aby zaznaczyć, że podczas uzyskiwania ProcessCameraProvider podczas inicjowania używana jest konfiguracja domyślna, a rozszerzanie Application jest opcjonalne. (I5e395)

Camera-Lifecycle w wersji 1.0.0-beta02

1 kwietnia 2020 r.

Publikacja androidx.camera:camera-lifecycle:1.0.0-beta02 Wersja 1.0.0-beta02 zawiera te zatwierdzenia.

Poprawki błędów

  • Zaktualizowano, aby obsługiwać poprawki błędów w artefaktach camera-camera2:1.0.0-beta02 i camera-core:1.0.0-beta02.

Camera-Lifecycle w wersji 1.0.0-alpha10

10 lutego 2020 r.

Publikacja androidx.camera:camera-lifecycle:1.0.0-alpha10 Wersja 1.0.0-alpha10 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano adnotację @MainThread do metod BindToLifecycle, unbind i unbindAll. (I990d2)

Camera-Lifecycle w wersji 1.0.0-alpha03

22 stycznia 2020 r.

Publikacja androidx.camera:camera-lifecycle:1.0.0-alpha03 Wersja 1.0.0-alpha03 zawiera te zatwierdzenia.

Aktualizacje

  • Różne poprawki i aktualizacje związane ze zmianami w Camera Core i Camera2.

Camera-Lifecycle w wersji 1.0.0-alpha02

18 grudnia 2019 r.

Publikacja androidx.camera:camera-lifecycle:1.0.0-alpha02 Wersja 1.0.0-alpha02 zawiera te zatwierdzenia.

Zmiany w zależnościach

  • Zaktualizowano, aby używać funkcji androidx.camera:camera-core:1.0.0-alpha08.

Camera-Lifecycle w wersji 1.0.0-alpha01

4 grudnia 2019 r.

Publikacja androidx.camera:camera-lifecycle:1.0.0-alpha01 Wersja 1.0.0-alpha01 biblioteki camera-lifecycle zawiera te zatwierdzenia

Uwagi dotyczące interfejsu API

  • Dodano artefakt camera-lifecycle, który udostępnia interfejs LifeCycleCameraProvider i implementację o nazwie ProcessCameraProvider. Udostępnia ona wiele funkcji poprzedniej klasy CameraX w podstawie i jest uzyskiwana za pomocą metody getInstance().
  • Aby korzystać z CameraX, aplikacje powinny zawierać bibliotekę camera-lifecycle.
  • W sekcji camera-core znajdziesz informacje o tym, jak przeprowadzić inicjowanie CameraX za pomocą ProcessCameraProvider.

Camera-Extensions i Camera-View w wersji 1.0.0

Wersja 1.0.0-alpha32

15 grudnia 2021 roku

Publikacja androidx.camera:camera-extensions:1.0.0-alpha32 i androidx.camera:camera-view:1.0.0-alpha32 Wersja 1.0.0-alpha32 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Usunięto niepotrzebne adnotacje @RequiresApi(21) z klas/interfejsów wewnętrznych. (I8e286, b/204917951)
  • Zaktualizuj pliki interfejsu API dla artefaktu camera-extensions. (If683a, b/161377155)

Poprawki błędów

  • Nie zezwalaj aplikacji na włączanie trybów rozszerzenia podczas wiązania VideoCapture. Rozszerzenia CameraX obsługują tylko te tryby: ImageCapture i Preview. VideoCapture nie jest jeszcze obsługiwany. Jeśli aplikacja wiąże VideoCapture i włącza dowolny tryb rozszerzenia, zostanie wygenerowany błąd IllegalArgumentException. (I0d87b)
  • CameraSelector#filter nie zgłasza już błędu IllegalArgumentException, gdy zbiór wyników jest pusty. (I27804)
  • Zmieniliśmy nazwę interfejsu API ExtensionsManager#getInstance na getInstanceAsync, ponieważ zwraca on ListenableFuture. Sufiks Async w nazwie funkcji może wyraźnie wskazywać, że jest to funkcja asynchroniczna. (I279d2)
  • Usuń parametr rozdzielczości z interfejsu API ExtensionsManager#getEstimatedCaptureLatencyRange, ponieważ użytkownicy nie mogą wiedzieć, które rozmiary są obsługiwane w przypadku zastosowania ImageCapture, i nie mogą odróżnić, czy zwrócone informacje o opóźnieniu dotyczą maksymalnego rozmiaru wyjściowego przechwytywania czy parametru rozdzielczości wejściowej. (I74bb2)
  • Przenieś parametr CameraProvider funkcji ExtensionsManager do interfejsu API getInstance(). Dzięki temu użytkownicy nie muszą wpisywać parametru CameraProvider za każdym razem, gdy wywołują funkcje ExtensionsManager. (Ic7e48)

Wersja 1.0.0-alpha31

17 listopada 2021 r.

Publikacja androidx.camera:camera-extensions:1.0.0-alpha31 i androidx.camera:camera-view:1.0.0-alpha31 Wersja 1.0.0-alpha31 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Do publicznego interfejsu API dodano metodę CameraSelector#filter, która umożliwia filtrowanie listy CameraInfos na podstawie CameraSelector. (I105d0)

Poprawki błędów

  • Rozwiązaliśmy problem z awarią występującą podczas szybkiego przełączania trybu rozszerzeń na niektórych urządzeniach. (Iebbef)

Wersja 1.0.0-alpha30

13 października 2021 r.

Publikacja androidx.camera:camera-extensions:1.0.0-alpha30 i androidx.camera:camera-view:1.0.0-alpha30 Wersja 1.0.0-alpha30 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano adnotację @RequiresApi(21) do wszystkich klas CameraX i usunięto minSdkVersion z pliku AndroidManifest.xml. Umożliwi to łatwą integrację biblioteki camera-core z aplikacjami, które mają minSdkVersion poniżej 21, ale chcą warunkowo używać ścieżek kodu opartych na interfejsie API 21 lub nowszym. W przypadku aplikacji z minSdkVersion 21 lub nowszą ta zmiana nie wymaga żadnych działań. (Ie7f2e, b/200599470)

Poprawki błędów

  • Rozwiązaliśmy problem z błędem AbstractMethodError, który występuje, gdy włączony jest ProGuard. (Iae468, b/201177844)

Wersja 1.0.0-alpha29

29 września 2021 r.

Publikacja androidx.camera:camera-extensions:1.0.0-alpha29 i androidx.camera:camera-view:1.0.0-alpha29 Wersja 1.0.0-alpha29 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Adnotacja ExperimentalUseCaseGroup została usunięta, ponieważ interfejsy API nie są już eksperymentalne. (I01ef5)
  • usuń RotationProvider#removeAllListeners(). Zamiast niej używaj zasady RotationProvider#removeListener(...). (Id9d4a)
  • Zaktualizowano klasę RotationReceiver: zmieniono set/clear Listener na add/remove/removeAll, usunięto odmianę setListener, która domyślnie używa wątku głównego, i dodano adnotacje metod. (Ib1669)

Poprawki błędów

  • Zmieniono nazwę ExtensionMode#BEAUTY na FACE_RETOUCH, aby prawidłowo odzwierciedlić działanie trybu rozszerzenia. (I61f54, b/198515274)
  • Rozwiązaliśmy problem polegający na tym, że aparat nieoczekiwanie się zamykał, gdy w jednej aktywności używano wielu obiektów CameraController i PreviewView. (Ibfd18, b/197539358)

Wersja 1.0.0-alpha28

18 sierpnia 2021 r.

Publikacja androidx.camera:camera-extensions:1.0.0-alpha28 i androidx.camera:camera-view:1.0.0-alpha28 Wersja 1.0.0-alpha28 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Adnotacja ExperimentalUseCaseGroupLifecycle została usunięta, ponieważ interfejsy API nie są już eksperymentalne. (I17b85)
  • Zrefaktoryzowano interfejs RotationListener i zmieniono jego nazwę na RotationProvider. Nadal zapewnia tę samą funkcję, ale z nieco innym interfejsem API. (Idffc5)
  • Zmień nazwę TAP_TO_FOCUS_UNSUCCESSFUL na TAP_TO_FOCUS_NOT_FOCUSED i TAP_TO_FOCUS_SUCCESSFUL na TAP_TO_FOCUS_FOCUSED. Ustawienie OutputSize jako final (I099fa)

Poprawki błędów

  • Usunięto wycofane klasy <EffectName><UseCase>Extender, ExtensionsErrorListener i powiązane interfejsy API ExtensionsManager. (I3b8c3)

Wersja 1.0.0-alpha27

21 lipca 2021 r.

Publikacja androidx.camera:camera-extensions:1.0.0-alpha27 i androidx.camera:camera-view:1.0.0-alpha27 Wersja 1.0.0-alpha27 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Interfejs Viewport API nie jest już eksperymentalny. Usuń eksperymentalną adnotację interfejsu API. (I717ea)
  • Zmieniono nazwę CoordinateTransform#getTransform na CoordinateTransform#transform i zaktualizowano JavaDoc (I864ae)

Poprawki błędów

  • Rozwiązaliśmy problem z rozciąganiem w trybie PreviewView PERFORMANCE podczas korzystania z interfejsu Compose. (Ie1137, b/183864890)

Wersja 1.0.0-alpha26

30 czerwca 2021 r.

Publikacja androidx.camera:camera-extensions:1.0.0-alpha26 i androidx.camera:camera-view:1.0.0-alpha26 Wersja 1.0.0-alpha26 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • dodaj nową metodę CameraController#getTapToFocusState(), która udostępnia najnowszy wynik ustawiania ostrości po dotknięciu. (Iaccb0)
  • dodanie do CameraController większej liczby głównych funkcji aparatu: getterów/setterów dla docelowego formatu obrazu, docelowej rozdzielczości, trybu przechwytywania, CameraControl i niestandardowych obiektów wykonujących. (Iea8f2)
  • dodaj klasę RotationReceiver, która odbiera zmiany obrotu powierzchni. Można go użyć do ustawienia docelowego obrotu, gdy urządzenie jest w trybie stałym pionowym lub poziomym. (Ib278f)
  • Udostępniliśmy nowe publiczne interfejsy API getEstimatedCaptureLatencyRange w klasie ExtensionsManager. (I6a8ec)
  • Wycofany interfejs ExtensionsErrorListener. Obecnie ten interfejs służy tylko do sprawdzania, czy podczas włączania trybów rozszerzeń brakuje podglądu lub przechwytywania obrazu. CameraX automatycznie doda dodatkowy podgląd lub przechwytywanie obrazu, aby funkcje rozszerzenia działały prawidłowo. Po tym czasie nie będą zgłaszane żadne błędy za pomocą tego interfejsu. (I47d9e)
  • Udostępniliśmy nowe publiczne interfejsy API ExtensionsManager getInstance, isExtensionAvailable i getExtensionEnabledCameraSelector oraz wycofaliśmy stare klasy <EffectName><UseCase>Extender i powiązane interfejsy API. (I329e6)

Wersja 1.0.0-alpha25

2 czerwca 2021 r.

Publikacja androidx.camera:camera-extensions:1.0.0-alpha25 i androidx.camera:camera-view:1.0.0-alpha25 Wersja 1.0.0-alpha25 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Interfejsy ExperimentalCameraFilter API nie są już na etapie eksperymentalnym i stały się oficjalnymi interfejsami API. Można ich używać bez adnotacji OptIn. (I4bc94)
  • Dodaj narzędzie, które przekształca współrzędne między przypadkami użycia. Przykładowe zastosowanie: przekształcanie współrzędnych wykrytych w przypadku użycia ImageAnalysis i wyróżnianie wykrytego obiektu w podglądzie. (I63ab1, b/137515129)
  • Kontakt CameraView został usunięty. CameraView zastępuje CameraController. Informacje o tym, jak przeprowadzić migrację, znajdziesz w przewodniku po migracji. (Id5005)

Poprawki błędów

  • ExperimentalUseCaseGroupLifecycle zastąpiono tekstem ExperimentalUseCaseGroup. (I3b2ef, b/159033688)

Wersja 1.0.0-alpha24

21 kwietnia 2021 r.

Publikacja androidx.camera:camera-extensions:1.0.0-alpha24 i androidx.camera:camera-view:1.0.0-alpha24 Wersja 1.0.0-alpha24 zawiera te zatwierdzenia.

Poprawki błędów

  • Zastąpiono adnotację @Experimental adnotacją @RequiresOptIn w eksperymentalnych interfejsach API. Do wywoływania eksperymentalnych interfejsów API używaj androidx.annotation.OptIn zamiast wycofanego androidx.annotation.experimental.UseExperimental. (Iff226)
  • Rozwiązaliśmy problem z rozciągniętym widokiem PreviewView na urządzeniu Samsung J5 Prime (Ib10b6).

Rozszerzenia i widok aparatu w wersji 1.0.0-alpha23

24 marca 2021 r.

Publikacja androidx.camera:camera-extensions:1.0.0-alpha23 i androidx.camera:camera-view:1.0.0-alpha23 Wersja 1.0.0-alpha23 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Widok z kamery jest wycofywany. Zamiast niej użyj zasady LifecycleCameraController. Zobacz przewodnik po migracji (Idac2c).
  • Dodano adnotację FloatRange do metody setLinearZoom() (I69971).

Poprawki błędów

  • thought Przypięto zależności widoku kamery, aby korzystać z artefaktów w wersji 1.0.0. Zależność od camera-view nie będzie już powodować automatycznego uaktualniania przez mechanizm rozwiązywania zależności Gradle artefaktów camera-core, camera-camera2 i camera-lifecycle do najnowszych wersji 1.1.0, chociaż camera-view nadal jest zgodny z tymi artefaktami, jeśli są one jawnie ustawione na używanie wersji 1.1.0. (Ic8fa1, b/181599852)
  • Naprawiliśmy problem z rozciągniętym podglądem w PreviewView na urządzeniach Samsung A3. (Iacb30, b/180121821)
  • Rozwiązaliśmy problem, który powodował, że nie można było ustawić selektora kamery przed jej zainicjowaniem. (Ic8bd0)

Rozszerzenia i widok aparatu w wersji 1.0.0-alpha22

24 lutego 2021 r.

Publikacja androidx.camera:camera-extensions:1.0.0-alpha22 i androidx.camera:camera-view:1.0.0-alpha22 Wersja 1.0.0-alpha22 zawiera te zatwierdzenia.

Zmiany w interfejsie API

Poprawki błędów

  • Naprawiliśmy błąd ExtensionsErrorListener, który powodował zgłaszanie błędów, gdy powiązany był tylko podgląd lub przechwytywanie obrazu. (I5ae39)

Camera Extensions & View w wersji 1.0.0-alpha21

27 stycznia 2021 r.

Publikacja androidx.camera:camera-extensions:1.0.0-alpha21 i androidx.camera:camera-view:1.0.0-alpha21 Wersja 1.0.0-alpha21 zawiera te zatwierdzenia.

Wydanie obsługujące inne artefakty biblioteki aparatu.

Rozszerzenia i widok aparatu w wersji 1.0.0-alpha20

16 grudnia 2020 roku

Publikacja androidx.camera:camera-extensions:1.0.0-alpha20 i androidx.camera:camera-view:1.0.0-alpha20 Wersja 1.0.0-alpha20 zawiera te zatwierdzenia.

Wydanie obsługujące inne artefakty biblioteki aparatu.

Camera-Extensions i Camera-View w wersji 1.0.0-alpha19

11 listopada 2020 roku

Publikacja androidx.camera:camera-extensions:1.0.0-alpha19 i androidx.camera:camera-view:1.0.0-alpha19 Wersja 1.0.0-alpha19 zawiera te zatwierdzenia.

Poprawki błędów

  • W widoku kamery pojawiła się adnotacja @ExperimentalVideo. Ta adnotacja oznacza interfejsy API, które udostępniają eksperymentalne funkcje wideo. Mogą one ulec zmianie, gdy funkcje zostaną w pełni rozwinięte. Każda metoda korzystająca z tych interfejsów API powinna używać adnotacji @UseExperimental z ExperimentalVideo jako markerClass. (I6d729)

Camera-Extensions w wersji 1.0.0-alpha18

14 października 2020 r.

Publikacja androidx.camera:camera-extensions:1.0.0-alpha18 Wersja 1.0.0-alpha18 zawiera te zatwierdzenia.

Poprawki błędów

  • Skróciliśmy czas oczekiwania na inicjalizację CameraX i bindToLifecycle (I61dc5).
  • <UseCase>.getTargetRotation() zwróci Surface.ROTATION_0, jeśli zostanie wywołana przed dołączeniem do instancji Camera, chyba że w Builder lub UseCase ustawiono targetRotation. (I80fcd)

Camera-View w wersji 1.0.0-alpha18

14 października 2020 r.

Publikacja androidx.camera:camera-view:1.0.0-alpha18 Wersja 1.0.0-alpha18 zawiera te zatwierdzenia.

Wydanie obsługujące inne artefakty biblioteki aparatu.

Camera-Extensions w wersji 1.0.0-alpha17

23 września 2020 r.

Publikacja androidx.camera:camera-extensions:1.0.0-alpha17 Wersja 1.0.0-alpha17 zawiera te zatwierdzenia.

Poprawki błędów

Camera-View w wersji 1.0.0-alpha17

23 września 2020 r.

Publikacja androidx.camera:camera-view:1.0.0-alpha17 Wersja 1.0.0-alpha17 zawiera te zatwierdzenia.

Poprawki błędów

Camera-Extensions w wersji 1.0.0-alpha16

16 września 2020 roku

Publikacja androidx.camera:camera-extensions:1.0.0-alpha16 Wersja 1.0.0-alpha16 zawiera te zatwierdzenia.

Poprawki błędów

  • Dodano metodę w ExtensionsManager, która umożliwia pobranie obiektu Extensions używanego do włączania i wykonywania zapytań dotyczących rozszerzeń w instancjach aparatu (I4fb7e).

Camera-View w wersji 1.0.0-alpha16

16 września 2020 roku

Publikacja androidx.camera:camera-view:1.0.0-alpha16 Wersja 1.0.0-alpha16 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Usunięto: PreviewView#setDeviceRotationForRemoteDisplayMode() i PreviewView#getDeviceRotationForRemoteDisplayMode(). Te 2 metody służą do dostosowywania obrotu podglądu, gdy pożądany obrót nie jest obrotem wyświetlacza, np. w przypadku wyświetlacza zdalnego. Aby teraz obsłużyć obrót podglądu bez wyświetlania, ustaw żądany obrót za pomocą Preview#setTargetRotation() i nowo dodanego PreviewView#getViewPort(targetRotation). (Ib62cc)
  • Zmieniono nazwę createSurfaceProvider() na getSurfaceProvider(). Metoda zawsze zwraca tę samą instancję Preview.SurfaceProvider. (Iff83c)

Poprawki błędów

  • Wymuszono używanie TextureView przez PreviewView, jeśli efekt rozszerzenia jest włączony, a implementacja biblioteki dostawcy wymaga wykonania specjalnego procesu na powierzchni wyjściowej. (I0c3cc)
  • Zezwalaj na dowolny obrót celu w podglądzie. Informacje o przekształceniu są obliczane i zwracane użytkownikowi na bieżąco za pomocą nowego wywołania zwrotnego TranformationInfoListener. (I21470)

Znane problemy

  • W PreviewView funkcja OnClickListener#onClick() nie jest wywoływana, gdy użytkownik kliknie PreviewView. Zdarzenie dotknięcia jest błędnie wykorzystywane przez PreviewView#onTouchEvent(). Problem zostanie rozwiązany w następnej wersji.
  • Punkt pomiarowy uzyskany z PreviewView#getMeteringPointFactory() może być nieprawidłowy, jeśli ViewPort jest używany z PreviewView.

Camera-Extensions w wersji 1.0.0-alpha15

19 sierpnia 2020 r.

Publikacja androidx.camera:camera-extensions:1.0.0-alpha15 Wersja 1.0.0-alpha15 zawiera te zatwierdzenia.

Poprawki błędów

  • Metoda ExtensionsManager.init() przyjmuje teraz jako parametr obiekt Context, a nie 0 argumentów. (Ife754)
  • Inicjowanie nie powinno już powodować awarii, gdy używany jest kontekst, który nie zwraca obiektu aplikacji z Context.getApplicationContext(). (I3d3c9, b/160817073)

    Camera-View w wersji 1.0.0-alpha15

    19 sierpnia 2020 r.

Publikacja androidx.camera:camera-view:1.0.0-alpha15 Wersja 1.0.0-alpha15 zawiera te zatwierdzenia.

Poprawki błędów

  • DisplayOrientedMeteringPointFactory przyjmuje instancję CameraInfo zamiast CameraSelector, więc istnieje bezpośrednie mapowanie na kamerę, dla której fabryka będzie generować punkty. Wszystkie klasy, które używają DisplayOrientedMeteringPointFactory, przyjmują też instancję CameraInfo zamiast CameraSelector. (I400c1)
  • Kontakt TextureViewMeteringPointFactory został usunięty. PreviewView udostępnia publiczny interfejs API (createMeteringPointFactory()) do tworzenia fabryki punktów pomiarowych niezależnie od tego, czy używa TextureView, czy SurfaceView. (Ide693)
  • Zmieniliśmy nazwy trybów implementacji SURFACE_VIEW/TEXTURE_VIEW klasy PreviewView na PERFORMANCE/COMPATIBLE. PERFORMANCE to stary tryb SURFACE_VIEW, a COMPATIBLE to stary tryb TEXTURE_VIEW. (I0edc2)
  • W przypadku robienia zdjęć zastąp flagę odwrócenia w poziomie w metadanych na podstawie kierunku aparatu. (I28499)

Camera-Extensions w wersji 1.0.0-alpha14

22 lipca 2020 r.

Publikacja androidx.camera:camera-extensions:1.0.0-alpha14 Wersja 1.0.0-alpha14 zawiera te zatwierdzenia.

Camera-View w wersji 1.0.0-alpha14

22 lipca 2020 r.

Publikacja androidx.camera:camera-view:1.0.0-alpha14 Wersja 1.0.0-alpha14 zawiera te zatwierdzenia.

Camera-Extensions w wersji 1.0.0-alpha13

24 czerwca 2020 r.

Publikacja androidx.camera:camera-extensions:1.0.0-alpha13 Wersja 1.0.0-alpha13 zawiera te zatwierdzenia.

Poprawki błędów

  • Dodano eksperymentalne interfejsy do filtrowania kamer według identyfikatora i CameraCharacteristics. (I28f61)

Camera-View w wersji 1.0.0-alpha13

24 czerwca 2020 r.

Publikacja androidx.camera:camera-view:1.0.0-alpha13 Wersja 1.0.0-alpha13 zawiera te zatwierdzenia.

Poprawki błędów

  • CameraView nie ulega już awarii z powodu błędu IllegalArgumentException podczas wiązania z LifecycleOwner, którego cykl życia przechodzi w stan DESTROYED krótko po powiązaniu. Cykle życia powiązań w stanie DESTROYED nie będą próbowały otworzyć aparatu. (I7c2b8)
  • Stan strumienia PreviewView jest teraz dostępny za pomocą CameraView.getPreviewStreamState() (I21a2b)

Camera-Extensions w wersji 1.0.0-alpha12

10 czerwca 2020 r.

Publikacja androidx.camera:camera-extensions:1.0.0-alpha12 Wersja 1.0.0-alpha12 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono błąd powodujący awarię podczas uruchamiania aplikacji, gdy CameraX jest inicjowana, gdy telefon jest w trybie Nie przeszkadzać. Zamiast awarii aplikacji InitializationException zawierający CameraUnavailableException zostanie ustawiony na ListenableFuture wyniku inicjowania. (I9909a, b/149413835)

Camera-View w wersji 1.0.0-alpha12

10 czerwca 2020 r.

Publikacja androidx.camera:camera-view:1.0.0-alpha12 Wersja 1.0.0-alpha12 zawiera te zatwierdzenia.

Poprawki błędów

  • Dodano interfejs API PreviewView#getBitmap(), który zwraca reprezentację bitmapową treści wyświetlanych na powierzchni podglądu. (I9b500, b/157659818)

Camera-Extensions w wersji 1.0.0-alpha11

27 maja 2020 r.

Publikacja androidx.camera:camera-extensions:1.0.0-alpha11 Wersja 1.0.0-alpha11 zawiera te zatwierdzenia.

Camera-View w wersji 1.0.0-alpha12

10 czerwca 2020 r.

Publikacja androidx.camera:camera-view:1.0.0-alpha12 Wersja 1.0.0-alpha12 zawiera te zatwierdzenia.

Nowe funkcje

Zmiany w interfejsie API

Poprawki błędów

  • Dodano interfejs API PreviewView#getBitmap(), który zwraca reprezentację bitmapową treści wyświetlanych na powierzchni podglądu. (I9b500, b/157659818)

Camera-View w wersji 1.0.0-alpha11

27 maja 2020 r.

Publikacja androidx.camera:camera-view:1.0.0-alpha11 Wersja 1.0.0-alpha11 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodaj interfejs API PreviewView#getPreviewStreamState, który umożliwia aplikacjom sprawdzanie, czy podgląd jest przesyłany strumieniowo. Gdy PreviewView jest w trybie TEXTURE_VIEW, stan STREAMING gwarantuje też, że obraz podglądu jest widoczny. (Ic0906, b/154652477)
  • Dodano interfejs API PreviewView#setDeviceRotationForRemoteDisplayMode(), który umożliwia obracanie urządzenia na potrzeby obliczeń przekształceń, gdy aplikacja działa w trybie wyświetlacza zdalnego. (I59b95, b/153514525)

Poprawki błędów

  • Rozwiązaliśmy problem ze zniekształceniem podglądu w przypadku kamer FULL/LIMITED/LEVEL_3 z Androidem 7.0 lub starszym. Wymuszony tryb ImplementationMode#TEXTURE_VIEW, gdy wersja Androida to 7.0 lub starsza. (I83e30, b/155085307)
  • Usunięto parametr CameraInfo z funkcji PreviewView#createSurfaceProvider(). Funkcja PreviewView pobiera go teraz wewnętrznie z SurfaceRequest. (If18f0, b/154652477)
  • Naprawiliśmy domyślny format obrazu VideoCapture, który w CameraView wynosi 16:9. (Ie6a7b, b/153237864)
  • Rozwiązaliśmy problem z czarnym ekranem w PreviewView, który występował po przesunięciu fragmentu Preview i ponownym przesunięciu w ViewPager2. Rozwiązaliśmy też problem, który występował, gdy removeView(previewview), a następnie addView(previewView). (Iab555, b/149877652, b/147354615)
  • Zaktualizuj interfejs API CameraView#takePicture(), aby umożliwić zapisywanie obrazów w usługach Uri i OutputStream. Zaktualizuj aplikację testową, aby używać Uri jako przykładu kanonicznego. (Ia2459, b/153607583)
  • Typ skali PreviewView możesz ustawić w układzie XML, ustawiając atrybut ScaleType. (I08565, b/153015659)
  • Usunięto CameraView.ScaleType. Zamiast tego użyj PreviewView.ScaleType, aby ustawić lub pobrać typ skali za pomocą CameraView. (Ia8974, b/153014831)
  • Jeśli element PreviewView nie ma koloru tła, domyślnie nadaj mu kolor tła. Dzięki temu treści za nim nie będą widoczne przed rozpoczęciem transmisji podglądu. (I09fad)

Camera-Extensions w wersji 1.0.0-alpha10

15 kwietnia 2020 roku

Publikacja androidx.camera:camera-extensions:1.0.0-alpha10 Wersja 1.0.0-alpha10 zawiera te zatwierdzenia.

Poprawki błędów

  • Poprawki obsługujące wprowadzenie Camera-Core

Camera-View w wersji 1.0.0-alpha10

15 kwietnia 2020 roku

Publikacja androidx.camera:camera-view:1.0.0-alpha010 Wersja 1.0.0-alpha010 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązuje poprzedni znany problem, w którym implementacja surfaceView w PreviewView nie działała prawidłowo na niektórych urządzeniach i powodowała awarię aplikacji po wznowieniu podglądu. (I5ed6b)

Camera-Extensions w wersji 1.0.0-alpha09

1 kwietnia 2020 r.

Publikacja androidx.camera:camera-extensions:1.0.0-alpha09 Wersja 1.0.0-alpha09 zawiera te zatwierdzenia.

Poprawki błędów

  • Zaktualizowano, aby obsługiwać poprawki błędów w artefaktach camera-camera2:1.0.0-beta02, camera-core:1.0.0-beta02 i camera-lifecycle:1.0.0-beta02

Camera-View w wersji 1.0.0-alpha09

1 kwietnia 2020 r. Publikacja androidx.camera:camera-view:1.0.0-alpha09 Wersja 1.0.0-alpha09 zawiera te zatwierdzenia.

Znane problemy

  • Używanie ImplementationMode.SURFACE_VIEW z PreviewView może nie działać dobrze na niektórych urządzeniach, ponieważ SurfaceView używany do podglądu unieważnia swoją powierzchnię, gdy cykl życia okna, w którym się znajduje, zostanie zatrzymany. Po ponownym uruchomieniu aparat jest ponownie otwierany i może próbować wznowić podgląd, zanim powierzchnia SurfaceView będzie ponownie prawidłowa. Na razie używaj ImplementationMode.TEXTURE_VIEW.

Zmiany w interfejsie API

  • Zmieniono nazwę PreviewView.setImplementationMode() na PreviewView.setPreferredImplementationMode().
  • Zmieniono nazwę PreviewView.getImplementationMode() na PreviewView.getPreferredImplementationMode().
  • Zastąpiono PreviewView.getSurfaceProvider() przez PreviewView.createSurfaceProvider(CameraInfo), który przyjmuje instancję CameraInfo z możliwością wartości null, używaną do optymalizacji podglądu przez użycie ImplementationMode.SURFACE_VIEW, gdy tylko jest to możliwe. Jeśli przekazana zostanie instancja o wartości null lub jeśli ustawisz preferowany tryb implementacji na ImplementationMode.TEXTURE_VIEW, wewnętrznie będzie używany tryb ImplementationMode.TEXTURE_VIEW.
  • Poniższy przykładowy kod pokazuje, jak wcześniej używano przypadku użycia podglądu z PreviewView.

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

    Obecnie możesz pisać:

    val camera = cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, preview)
    previewView.preferredImplementationMode = ImplementationMode.TEXTURE_VIEW
    preview.setSurfaceProvider(previewView.createSurfaceProvider(camera.cameraInfo))
    
  • Do PreviewView.getSurfaceProvider() dodano adnotację @UiThread, co oznacza, że musi być wywoływana z wątku głównego. (I192f3)

  • Dodano PreviewView.setScaleType(), który umożliwia ustawienie typu skali podglądu. Może mieć jedną z wartości w PreviewView.ScaleType, a domyślnie jest to PreviewView.ScaleType.FILL_CENTER.

  • Dodano: PreviewView.getScaleType().

  • Usunęliśmy obsługę ustawiania trybu implementacji dla PreviewView w układzie XML za pomocą atrybutu implementationMode.

  • Dodaj interfejs API createMeteringPointFactory() do PreviewView, aby umożliwić konwersję (x, y) w PreviewView na MeteringPoint. (Ib36d7)

Poprawki błędów

  • Naprawiliśmy błędy, które powodowały wyświetlanie nieprawidłowego podglądu po zmianie rozmiaru elementu PreviewView. (I71101)

Camera-Extensions w wersji 1.0.0-alpha08

26 lutego 2020 r.

Publikacja androidx.camera:camera-extensions:1.0.0-alpha08 Wersja 1.0.0-alpha08 zawiera te zatwierdzenia.

Camera-View w wersji 1.0.0-alpha08

26 lutego 2020 r.

Publikacja androidx.camera:camera-view:1.0.0-alpha08 Wersja 1.0.0-alpha08 zawiera te zatwierdzenia.

Poprawki błędów

  • Zastąpiono ListenableFuture na SurfaceRequest.provideSurface() przez Executor i Callback. Upraszcza to interfejs API, ponieważ nie wymaga już obsługi wyjątków w provideSurface() i wymusza, że wywołania zwrotnego provideSurface() nie można anulować. Ma to zapobiec awariom na starszych urządzeniach spowodowanym przedwczesnym zwalnianiem powierzchni. Obiekt SurfaceRequest.Result jest teraz używany do śledzenia, jak SurfaceRequest korzysta z podanego Surface. (I7854b)
  • Zmieniono nazwę SurfaceRequest.setSurface(Surface) na SurfaceRequest.provideSurface(Surface), a SurfaceRequest.setWillNotComplete() na SurfaceRequest.willNotProvideSurface(). (I224fe)
  • Naprawiliśmy inicjowanie wariantów aplikacji z włączonym ProGuardem przez zachowanie flagi, która ustawia domyślnego dostawcę CameraXConfig. (I2d6c1)

Camera-Extensions w wersji 1.0.0-alpha07

10 lutego 2020 r.

Publikacja androidx.camera:camera-extensions:1.0.0-alpha07 Wersja 1.0.0-alpha07 zawiera te zatwierdzenia.

Poprawki błędów

  • Argumenty, które wcześniej były przekazywane w ImageCapture.OnImageSavedCallback.onError() i ImageCapture.OnImageCapturedCallback.onError(), zostały zastąpione pojedynczym argumentem ImageCaptureException, który nadal zawiera wszystkie informacje, które były wcześniej przekazywane.
  • Argument pliku przekazany wcześniej w ImageCapture.OnImageSavedCallback.onImageSaved() został usunięty. (I750d2)

Camera-View w wersji 1.0.0-alpha07

10 lutego 2020 r.

Publikacja androidx.camera:camera-view:1.0.0-alpha07 Wersja 1.0.0-alpha07 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Implementacja TextureView w PreviewView ustawia teraz rozmiar TextureView na rozmiar wyjściowy czujnika aparatu, zanim przeskaluje go, aby wypełnić nadrzędny PreviewView. Jeśli chcesz, aby podgląd z kamery wypełniał całą część interfejsu (na przykład cały ekran), nie ustawiaj rozmiaru elementu PreviewView na stałą wartość ani nie ustawiaj zawijania treści (na przykład za pomocą atrybutu „wrap_content”). Może to spowodować, że podgląd z kamery będzie wypełniał tylko część elementu PreviewView (jeśli rozmiar wyjściowy czujnika kamery jest mniejszy). Zamiast tego ustaw PreviewView na tak duży jak jego element nadrzędny (na przykład za pomocą atrybutu „match_parent”). (1204869)

Poprawki błędów

  • Zaktualizowaliśmy ImageCapture, aby umożliwić zapisywanie obrazów w usługach Uri i OutputStream. Połączono przeciążone metody takePicture w jedną. Zaktualizowano aplikację testową, aby używała Uri jako przykładu kanonicznego. (Ia3bec)
  • Nazwę konta usługi Preview.PreviewSurfaceProvider zmieniono na Preview.SurfaceProvider. SurfaceProvider nie wymagają już od deweloperów tworzenia własnych ListenableFuture, a podawanie Surface odbywa się teraz za pomocą nowego obiektu SurfaceRequest. Metoda Preview.getPreviewSurfaceProvider() została usunięta, ponieważ może być nadużywana, gdy klasa Preview jest sparowana z innymi klasami, takimi jak PreviewView. (I20105)
  • Argumenty, które wcześniej były przekazywane w ImageCapture.OnImageSavedCallback.onError() i ImageCapture.OnImageCapturedCallback.onError(), zostały zastąpione pojedynczym argumentem ImageCaptureException, który nadal zawiera wszystkie informacje, które były wcześniej przekazywane.
  • Argument pliku przekazany wcześniej w ImageCapture.OnImageSavedCallback.onImageSaved() został usunięty. (I750d2)
  • Zaktualizowano interfejs API, scalając metody getZoomRatio(), getMaxZoomRatio(), getMinZoomRatio() i getLinearZoom() interfejsu CameraInfo w metodę getZoomState(), która zwraca instancję ZoomState. (Ib19fe)

Camera-Extensions w wersji 1.0.0-alpha06

22 stycznia 2020 r.

Publikacja androidx.camera:camera-extensions:1.0.0-alpha06 Wersja 1.0.0-alpha06 zawiera te zatwierdzenia.

Aktualizacje

  • Różne poprawki i aktualizacje związane ze zmianami w Camera Core i Camera2.

Camera-View w wersji 1.0.0-alpha06

22 stycznia 2020 r.

Publikacja androidx.camera:camera-view:1.0.0-alpha06 Wersja 1.0.0-alpha06 zawiera te zatwierdzenia.

Aktualizacje

  • Różne poprawki i aktualizacje związane ze zmianami w Camera Core i Camera2.

Camera-Extensions w wersji 1.0.0-alpha05

18 grudnia 2019 r.

Publikacja androidx.camera:camera-extensions:1.0.0-alpha05 Wersja 1.0.0-alpha05 zawiera te zatwierdzenia.

Poprawki błędów

  • Zaktualizowano, aby dopasować do wewnętrznych interfejsów API Camera Core.

Camera-View w wersji 1.0.0-alpha05

18 grudnia 2019 r.

Publikacja androidx.camera:camera-view:1.0.0-alpha05 Wersja 1.0.0-alpha05 zawiera te zatwierdzenia.

Znane problemy

  • Podczas korzystania z PreviewView format obrazu może być nieprawidłowy (b/146215202).

Nowe funkcje

  • Wdrożyliśmy nową klasę o nazwie PreviewView.TextureViewImplementation, która synchronizuje cykl życia SurfaceTexture z użyciem przez aparat powierzchni TextureView.

Camera-Extensions w wersji 1.0.0-alpha04

4 grudnia 2019 r.

Publikacja androidx.camera:camera-extensions:1.0.0-alpha04 Wersja 1.0.0-alpha04 rozszerzeń aparatu zawiera te zatwierdzenia

Zmiany w interfejsie API

  • Sprawdzanie dostępności i włączanie rozszerzenia wymaga teraz podania parametru wejściowego CameraSelector. Musi to być ten sam CameraSelector, który jest używany do powiązania przypadku użycia.

    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)
    
  • Zanim zaczniesz korzystać z biblioteki rozszerzeń, musisz zainicjować rozszerzenia.

    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 w wersji 1.0.0-alpha04

4 grudnia 2019 r.

Publikacja androidx.camera:camera-view:1.0.0-alpha04 Wersja 1.0.0-alpha04 pakietu camera-view zawiera te zatwierdzenia

Zmiany w interfejsie API

  • Dostępna jest klasa PreviewView, która ułatwia wyświetlanie danych wyjściowych z przypadku użycia podglądu w aplikacji.
  • W układzie można uwzględnić te elementy:PreviewView

    <androidx.camera.view.PreviewView
      android:id="@+id/preview_view"
      … />
    
  • PreviewView udostępnia PreviewSurfaceProvider, który ułatwia połączenie przypadku użycia wersji testowej

    preview.setPreviewSurfaceProvider(previewView.previewSurfaceProvider)
    
  • W nazewnictwie interfejsu API „ZoomLevel” to teraz „ZoomRatio”

  • Zmieniono dopuszczalność wartości null przez niektóre parametry metody

Camera-Extensions i Camera-View w wersji 1.0.0-alpha03

9 października 2019 r.

Publikacja androidx.camera:camera-extensions:1.0.0-alpha03 i androidx.camera:camera-view:1.0.0-alpha03 Oto zatwierdzenia uwzględnione w wersji camera-extensions:1.0.0-alpha03 i zatwierdzenia uwzględnione w wersji camera-view:1.0.0-alpha03.

Nowe funkcje

  • Dodano inicjator kontekstu dla rozszerzeń. Wersja rozszerzeń została zwiększona do 1.1.0

Camera-Extensions i Camera-View w wersji 1.0.0-alpha02

5 września 2019 r.

Publikacja androidx.camera:camera-extensions:1.0.0-alpha02 i androidx.camera:camera-view:1.0.0-alpha02 Oto zatwierdzenia uwzględnione w camera-extensions:1.0.0-alpha02, a oto zatwierdzenia uwzględnione w camera-view:1.0.0-alpha02.

  • Dodano testy sprawdzające, czy w PreviewImageProcessorImpl prawidłowo zaimplementowano sygnatury czasowe.
  • Napraw błąd testu ExtensionTest na urządzeniu Nexus 5 (poziom interfejsu API 21) i upewnij się, że podgląd jest dostępny.

Camera-Extensions i Camera-View w wersji 1.0.0-alpha01

7 sierpnia 2019 r.

Publikacja androidx.camera:camera-extensions:1.0.0-alpha01 i androidx.camera:camera-view:1.0.0-alpha01 Oto zatwierdzenia uwzględnione w camera-extensions:1.0.0-alpha01, a oto zatwierdzenia uwzględnione w camera-view:1.0.0-alpha01.

  • Nowa biblioteka dla przyszłych rozszerzeń aparatu, która umożliwia dostęp do efektów na obsługiwanych urządzeniach. Ta biblioteka jest w trakcie opracowywania.
  • Nowa klasa widoku kamery. Ta biblioteka jest w trakcie opracowywania.