CameraX

CameraX to dodatek do Jetpacka, który ułatwia dodawanie funkcji aparatu do aplikacji. Biblioteka zawiera wiele poprawek i obejścia, które ułatwiają deweloperom pracę na różnych urządzeniach.

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

Artefakt Wersja stabilna Wersja kandydująca Wersja Beta Wersja alfa
camera-camera2 1.4.1 - - 1.5.0-alpha04
camera-core 1.4.1 - - 1.5.0-alpha04
camera-compose - - - 1.5.0-alpha04
camera-effects 1.4.1 - - 1.5.0-alpha04
camera-extensions 1.4.1 - - 1.5.0-alpha04
camera-feature-combination-query - - - 1.5.0-alpha04
camera-feature-combination-query-play-services - - - 1.5.0-alpha04
camera-lifecycle 1.4.1 - - 1.5.0-alpha04
camera-mlkit-vision 1.4.1 - - 1.5.0-alpha04
camera-view 1.4.1 - - 1.5.0-alpha04
camera-viewfinder - - 1.3.0-beta02 1.4.0-alpha07
camera-video 1.4.1 - - 1.5.0-alpha04
Ta biblioteka została ostatnio zaktualizowana 11 grudnia 2024 r.

Testowanie urządzeń

Biblioteka CameraX jest testowana na wielu urządzeniach w naszym laboratorium. Listę urządzeń, które są obecnie testowane w laboratorium, znajdziesz w artykule CameraX – urządzenia testowane w laboratorium.

Deklarowanie zależności

Aby dodać zależność od CameraX, musisz dodać do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Maven firmy 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.5.0-alpha03"
  // 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.5.0-alpha03"
    // 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}")
}

Opinia

Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli zauważysz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk z gwiazdką.

Tworzenie nowego zgłoszenia

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

Aparat – komponowanie w wizierze – wersja 1.0

Wersja 1.0.0-alpha02

12 czerwca 2024 r.

androidx.camera:camera-viewfinder-compose:1.0.0-alpha02 został zwolniony. Wersja 1.0.0-alpha02 zawiera te komity.

Wersja 1.0.0-alpha01

14 maja 2024 r.

androidx.camera:camera-viewfinder-compose:1.0.0-alpha01 został zwolniony. Wersja 1.0.0-alpha01 zawiera te komity.

Nowe funkcje

  • Nowa biblioteka. Biblioteka ta zawiera komponent Viewfinder, który można używać w Compose, a który jest obsługiwany przez CameraX i Camera2. Składany wizjer obsługuje różne proporcje i obsługę zdarzeń dotykowych.

Wyświetlacz aparatu w wersji 1.4

Wersja 1.4.0-alpha07

12 czerwca 2024 r.

androidx.camera:camera-viewfinder:1.4.0-alpha07androidx.camera:camera-viewfinder-core:1.4.0-alpha07 są dostępne. Wersja 1.4.0-alpha07 zawiera te komity.

Wersja 1.4.0-alpha06

14 maja 2024 r.

androidx.camera:camera-viewfinder:1.4.0-alpha06androidx.camera:camera-viewfinder-core:1.4.0-alpha06 są dostępne. Wersja 1.4.0-alpha06 zawiera te komisy.

Zmiany w interfejsie API

  • Zmień nazwy typów enumeracji Viewfinder, aby lepiej odzwierciedlały implementację, i dodaj stałe wartości dla TransformationInfo.sourceRotation.ImplementationMode (Ic6149)
  • Dodano ZoomGestureDetector.ZoomEvent, aby zawierać stany gestu powiększania. (I84cdf)

Wersja aplikacji Aparat: 1.5

Wersja 1.5.0-alpha04

11 grudnia 2024 r.

androidx.camera:camera-*:1.5.0-alpha04 został zwolniony. Wersja 1.5.0-alpha04 zawiera te komity.

Zmiany w interfejsie API

  • Udostępnienie interfejsów ImageCapture.Builder#setOutputFormat i ImageCaptureCapabilities#getSupportedOutputFormats jako stabilnych interfejsów API (Ieb04a)
  • Dodaj VideoCapture.getResolutionInfo(), aby uzyskać informacje o rozdzielczości, gdy VideoCapture jest powiązany z cyklem życia. (Icb478)
  • Udostępniono interfejsy PreviewView.getScreenFlashPreviewView.setScreenFlashOverlayColor jako stabilne interfejsy API. (I74fee)

Poprawki błędów

  • Rozwiązaliśmy problem z nieudanym robieniem zdjęć na urządzeniu Vivo 1610 podczas używania lampy błyskowej w ciemności. (I366f4)
  • Rozwiązano problem nieoczekiwanego wyłączania się latarki po zrobieniu zdjęcia w telefonie Redmi Note 6 Pro. (I2e0e8, b/377144569)
  • Rozwiązaliśmy problem występujący na urządzeniach Pixel z Androidem 15, w którym tryb NIGHT w rozszerzeniach nie pozwalał na robienie zdjęć, dopóki aparat nie wyostrzył obiektu znajdującego się w pobliżu. (I228d4)
  • Rozwiązaliśmy problem z nieprawidłowym działaniem funkcji przechwytywania obrazu, gdy rozszerzenia są włączone, a VideoCapture są powiązane. (I5c745)
  • Włącz UltraHDR obsługę robienia zdjęć w rozszerzeniach, jeśli urządzenie ją obsługuje. (I48300)
  • Rozwiązaliśmy problem z czasem błysku w przypadku robienia zdjęć z błyskiem w urządzeniach CameraEffect. (I7698c)

Wersja 1.5.0-alpha03

30 października 2024 r.

androidx.camera:camera-*:1.5.0-alpha03 został zwolniony. Wersja 1.5.0-alpha03 zawiera te komity.

Zmiany w interfejsie API

  • Dodaj interfejsy API formatu wyjściowego dla RAW i RAW + JPEG ImageCapture, a sprawdzanie możliwości urządzenia jest dostępne w ImageCaptureCapabilities#getSupportedOutputFormats. OUTPUT_FORMAT_RAW służy do rejestrowania obrazu RAW w formacie Adobe DNG, a OUTPUT_FORMAT_RAW_JPEG – do jednoczesnego rejestrowania obrazów RAW i JPEG. Nowy interfejs API ImageCapture#takePicture służy do jednoczesnego przechwytywania obrazów. Musi on przekazywać 2 wartości OutputFileOptions: pierwsza to wartość dla obrazu RAW, a druga – dla obrazu JPEG. (Ib0f3d)

Poprawki błędów

  • Rozwiązaliśmy problem z podeksponowaniem podglądu i filmu na urządzeniach TCL, gdy włączona jest opcja VideoCapture. (Id7a64)
  • Rozwiązaliśmy problem, który powodował, że wywołanie startFocusMeteringPreviewView.getMeteringPointFactory nie powodowało uzyskania prawidłowych współrzędnych czujnika, gdy efekt jest włączony lub gdy są powiązane 4 przypadki użycia (udostępnianie strumienia). (I916c5, b/345993685)
  • Naprawiono błąd, który powodował, że zdarzenie VideoRecordEvent.Finalize.ERROR_INSUFFICIENT_STORAGE nie było aktywowane podczas nagrywania filmu, gdy nie było wystarczająco dużo miejsca na dane. (I35779, b/356399842)

Wersja 1.5.0-alpha02

2 października 2024 r.

androidx.camera:camera-*:1.5.0-alpha02 został zwolniony. Wersja 1.5.0-alpha02 zawiera te komity.

Nowe funkcje

  • Nowe interfejsy API do wysyłania zapytań o funkcje aparatu obsługiwane przez urządzenie. Na przykład sprawdzenie, czy HDR i 60 FPS mogą być włączone jednocześnie. Zawiera 2 elementy: camera-feature-combination-query i camera-feature-combination-query-play-services. To zgodna wersja interfejsu API CameraManager#getCameraDeviceSetup#isSessionConfigurationSupported interfejsu Camera2 z dodatkowymi danymi dostarczanymi przez Usługi Google Play.

Poprawki błędów

  • Rozwiązano problem z docelową liczbą klatek Preview/VideoCapture na urządzeniach na poziomie STAREGO. Docelowa częstotliwość 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ą CameraEffect. Zdjęcia wykonane z użyciem CameraEffect powinny teraz mieć takie same przetwarzanie przed i po wykonaniu zdjęcia (np. uruchamianie lampy błyskowej, konwergencja 3A itp., w stosownych przypadkach) jak zdjęcia bez CameraEffect. (I5ff30)
  • Wykluczono problematyczne rozmiary wyjściowe dla ImageAnalysis na urządzeniu Samsung SM-A057G. Jeśli ImageAnalysis używa rozdzielczości większej lub równej 1920 x 1440, może to spowodować problem z czarnym podglądem. Aby uniknąć tego problemu, zastosowano ExcludedSupportedSizesQuirk na urządzeniu SM-A057G. (I63dfe, b/365877975)
  • Rozwiązaliśmy problem z docelową liczbą klatek Preview/VideoCapture, gdy mechanizm udostępniania strumienia jest włączony wewnętrznie, aby udostępnić strumień na Preview i VideoCapture. (I4fdac)
  • Wprowadziliśmy obejście problemu, aby rozwiązać problem z nieprawidłowymi metadanymi obrazu JPEG na urządzeniach Samsung S10e i S10+. Po naprawieniu CameraX może zapisać obraz JPEG lub prawidłowe obiekty Bitmap mogą zostać zwrócone podczas wywołania funkcji ImageProxy.toBitmap() na tych urządzeniach, jeśli wystąpi problem z nieprawidłowymi metadanymi obrazu JPEG. (Iae493, b/356428987)
  • Wyłączone rozszerzenia dla tylnego aparatu Samsunga A52 o identyfikatorze 0, ponieważ podczas rejestrowania zdjęć HDR mogą wystąpić problemy z uruchomieniem aplikacji natywnej, a sesjecje konfiguracji mogą się nie udać w przypadku trybów BOKEH lub FACE_RETOUCH. (I03ec9, b/364152642)
  • Naprawiono błąd, który powodował, że zdarzenie VideoRecordEvent.Finalize.ERROR_INSUFFICIENT_STORAGE nie było wywoływane podczas nagrywania filmu, gdy nie było wystarczająco dużo miejsca na dane. (Ia5b4f, b/356399842)
  • Rozwiązaliśmy problem, który powodował niepowodzenie drugiego próby nagrywania wideo na Oppo A5 (CPH1931). (I181d6)

Wersja 1.5.0-alpha01

4 września 2024 r.

androidx.camera:camera-*:1.5.0-alpha01 został zwolniony. Wersja 1.5.0-alpha01 zawiera te komity.

Zmiany w interfejsie API

  • Udostępnij interfejs API do ustawiania ustawień kompozycji podczas jednoczesnego nagrywania filmów z 2 kamer. Ustawienia obejmują wartość alfa do mieszania, przesunięcie w swoich współrzędnych x, y, skalę szerokości i wysokości okna wyświetlania obrazu z kamery. Odsunięcie, szerokość i wysokość są określone w skali obrazu urządzenia. (Ia2b8a)
  • Udostępniono 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

  • Naprawiono awarię, która występowała, gdy wywołano bindToLifecycle z uszkodzonym LifecycleOwner. (I6e6d8)
  • Rozwiązano problem z czarnym ekranem w przedniej kamerze podczas łączenia z VideoCapture na telefonie Motorola Edge 20 Fusion. (I1fe88)
  • Zoptymalizowaliśmy konfigurację wykrywania gestów powiększania w PreviewView, aby poprawić płynność. (I04ffc)

Wersja aparatu 1.4

Wersja 1.4.1

11 grudnia 2024 r.

androidx.camera:camera-*:1.4.1 został zwolniony. Wersja 1.4.1 zawiera te komity.

Poprawki błędów

  • Rozwiązaliśmy problem występujący na urządzeniach Pixel z Androidem 15, w którym tryb NIGHT w rozszerzeniach nie pozwalał na robienie zdjęć, dopóki aparat nie wyostrzył obiektu znajdującego się w pobliżu. (I228d4)
  • Rozwiązaliśmy problem z nieprawidłowym działaniem ImageCapture#takePicture, gdy rozszerzenia są włączone, a VideoCapture są powiązane. (I5c745)

Wersja 1.4.0

30 października 2024 r.

androidx.camera:camera-*:1.4.0 został zwolniony. Wersja 1.4.0 zawiera te komitowane zmiany.

Ważne zmiany od wersji 1.3.0

Aplikacja CameraX w wersji 1.4.0 zawiera mnóstwo ciekawych nowości. Podsumowanie:

Główna funkcja: 10-bitowy HDR:

  • Łatwo robić niesamowite zdjęcia i filmy HDR.
  • Obsługuje kodowanie HLG i 10-bitowe HEVC.
  • Korzystaj z podglądu 10-bitowego 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 zawieszania takePictureawaitInstance.
  • Efekty w czasie rzeczywistym: możesz stosować efekty takie jak znak wodny i podświetlenie obiektu.
  • Interfejs CameraController API: nowe opcje konfiguracji nagrywania wideo.
  • Stabilizacja podglądu: zapytanie o możliwości urządzenia i włączenie stabilizacji.
  • Ulepszenia funkcji rejestrowania wideo: większa kontrola nad jakością i dostęp do wyższych rozdzielczości.
  • Integracja z rozszerzeniami CameraX: płynna integracja z aplikacją VideoCapture i nowymi funkcjami ImageCapture.
  • Shutter Sound API: łatwe sprawdzanie regionalnych wymagań dotyczących dźwięku migawki.
  • Lampa ekranu: ulepszone zdjęcia w słabym oświetleniu w przypadku przednich aparatów.
  • Interfejsy API metadanych rozszerzeń aparatu: interfejsy API obsługujące dostosowywanie siły rozszerzeń i otrzymywanie powiadomień o aktualnym trybie rozszerzeń w ExtensionMode#AUTO. Więcej informacji o poprawkach znajdziesz w ogłoszeniach dotyczących wersji betaRC.

Wersja 1.4.0-rc04

16 października 2024 r.

androidx.camera:camera-*:1.4.0-rc04 został zwolniony. Wersja 1.4.0-rc04 zawiera te komisy.

Poprawki błędów

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

Wersja 1.4.0-rc03

2 października 2024 r.

androidx.camera:camera-*:1.4.0-rc03 został zwolniony. Wersja 1.4.0-rc03 zawiera te komisy.

Poprawki błędów

  • Dodano funkcje lampy błyskowej, latarki i 3A do robienia zdjęć za pomocą CameraEffect. Zdjęcia wykonane z użyciem CameraEffect powinny teraz mieć takie same przetwarzanie przed i po wykonaniu zdjęcia (np. uruchamianie lampy błyskowej, konwergencja 3A itp., w stosownych przypadkach) jak zdjęcia bez CameraEffect. (I5ff30)
  • Zoptymalizowano płynność powiększania za pomocą gestów w aplikacji PreviewView (I04ffc).
  • Odłączenie ultra HDR od obsługi 10-bitowego wyjścia, ponieważ obsługa ultra HDR nie wymaga już 10-bitowego wyjścia. (I96ff2, I0c3b3)

Wersja 1.4.0-rc02

18 września 2024 r.

androidx.camera:camera-*:1.4.0-rc02 został zwolniony. Wersja 1.4.0-rc02 zawiera te komisy.

Poprawki błędów

  • Naprawiono awarię, która występowała, gdy wywołano funkcję bindToLifecycle, a obiekt LifecycleOwner został zniszczony. (I6e6d8)
  • Dodano animację widoczności w ScreenFlashView dla ScreenFlash#apply, która naprawia też błędy związane z niesynchronizowanym po jakimś czasie zakończeniem zmiany jasności. (I37cdb)
  • Zwiększono płynność powiększania, zastępując ustawienia powiększenia w ramach na obsługiwanych urządzeniach.

Wersja 1.4.0-rc01

7 sierpnia 2024 r.

androidx.camera:camera-*:1.4.0-rc01 został zwolniony. Wersja 1.4.0-rc01 zawiera te komisy.

Nowe funkcje

  • Dodano eksperymentalny CameraInfo.getCameraInfo, aby udostępniać konkretne informacje o aparacie bez konieczności wiązania przypadków użycia z aparatem. (I550d1)

Zmiany w interfejsie API

  • Dodano interfejsy API PreviewView.getScreenFlashPreviewView.setScreenFlashOverlayColor na wypadek, gdy element ScreenFlashView nie zostanie dodany w sposób jawny. (I43945)

Poprawki błędów

  • Rozwiązaliśmy problemy z ekspozycją i odcieniami kolorów w przypadku obrazu zarejestrowanego przy włączonym świetle błyskowym w warunkach słabego oświetlenia w ramach ograniczonego przypadku użycia funkcji VideoCapture. (Ic9814)
  • Rozwiązanie problemu polegający na tym, że przerwanie zapytania takePicture z włączonymi rozszerzeniami może spowodować nieotrzymanie wyniku, a następne zapytanie takePicture może przestać działać. (Iae78f)
  • Rozwiązaliśmy problem z wyciekiem pamięci występujący po włączeniu rozszerzeń. (Iab276)
  • Rozwiązano problem z nieprawidłowym działaniem rozszerzeń CameraX na urządzeniach takich jak Pixel 7/8 i Samsung Galaxy S24. Problem, który wynikał z konwersji Camera2OutputConfigImpl w trybie wydania, pojawił się po uaktualnieniu AGP do wersji 8.5.1 i włączeniu kompresji. (I99598, b/354824993)

Wersja 1.4.0-beta02

12 czerwca 2024 r.

androidx.camera:camera-*:1.4.0-beta02 został zwolniony. Wersja 1.4.0-beta02 zawiera te komity.

Zmiany w interfejsie API

  • Podobnie jak w przypadku VideoCapture, dodaj setMirrorMode do przypadku użycia Podgląd. Będzie on obsługiwać tryb lustrzanego odbicia włączony i wyłączony w przypadku strumienia podglądu za pomocą OutputConfiguration.setMirrorMode od poziomu interfejsu API 33 lub nowszego. W przypadku starszych interfejsów API nie będzie to możliwe. (I821f4)

Poprawki błędów

  • Rozwiązano problem polegający na tym, że aplikacje nie mogą robić zdjęć na urządzeniu Samsung Tab A8, gdy ImageCapture wybierze rozdzielczość 1920 x 1080 w kombinacji Preview + VideoCapture + ImageCapture UseCase. (I5a463, b/336925549)
  • Naprawiono błąd, który powodował, że nagrywanie trwałe mogło nie być kontynuowane po przełączeniu kamery. (Icb0a1)

Wersja 1.4.0-beta01

14 maja 2024 r.

androidx.camera:camera-*:1.4.0-beta01 został zwolniony. Wersja 1.4.0-beta01 zawiera te komity.

Zmiany w interfejsie API

  • Dodano ZoomGestureDetector.ZoomEvent, aby zawierać stany gestu powiększania. (I84cdf)

Poprawki błędów

  • Rozwiązano błąd, który powodował, że przechwytywanie i ustawienie ostrości przez dotknięcie nie używały wartości powtarzających się żądań w trybie FPS/stabilizacji, co mogło powodować ponowne tworzenie sesji przechwytywania i problemy z opóźnieniem lub zacinanie się podglądu na niektórych urządzeniach. (I7dc0b)
  • Naprawiono błąd, który uniemożliwiał wybranie opcji Wysoka rozdzielczość, gdy na niektórych urządzeniach włączona była opcja CameraEffect. (np. 4000 x 3000 na Samsungu A32 5G). (Ie3ed3, b/337336152)
  • Rozwiązano problem z zawieszaniem się podczas robienia zdjęć w podglądzie. ImageCaptureVideoCapture(UHD) są powiązane z Pixel 4XL API29. (I5b288)
  • Obsługa urządzeń wirtualnych: kontekst przekazywany do funkcji ProcessCameraProvider zachowa identyfikator urządzenia, aby zapewnić jego działanie w środowisku urządzenia wirtualnego. (I5ba48)

Wersja 1.4.0-alpha05

17 kwietnia 2024 r.

androidx.camera:camera-*:1.4.0-alpha05 został zwolniony. Wersja 1.4.0-alpha05 zawiera te komisy.

Nowe funkcje

  • Konwersja ProcessCameraProvider na implementację w Kotlinie. (I46d4f)
  • Dodano funkcję ImageCapture.takePicture suspend, aby można było wywoływać ją w sposób zgodny z językiem Kotlin. (I920be)

Zmiany w interfejsie API

  • Dodaj interfejsy API formatu wyjściowego do ImageCapture i metodę getSupportedOutputFormats do ImageCaptureCapabilities, aby zapytać o możliwości urządzenia. Domyślna wartość formatu wyjściowego to OUTPUT_FORMAT_JPEG, która umożliwia rejestrowanie obrazów SDR w formacie JPEG. Jeśli urządzenie obsługuje format ultra HDR, a format wyjściowy jest ustawiony na OUTPUT_FORMAT_JPEG_ULTRA_HDR, CameraX będzie rejestrować skompresowane obrazy w formacie ultra HDR za pomocą formatu JPEG/R. Format jest zgodny wstecz z formatem JPEG SDR i obsługuje renderowanie treści HDR. Oznacza to, że w starszych aplikacjach lub na starszych urządzeniach obrazy będą wyświetlane jako zwykłe pliki JPEG, a w aplikacjach i na urządzeniach, które zostały zaktualizowane do pełnego obsługiwania tego formatu, będą wyświetlane jako HDR. (I5de50)
  • Dodaj PhysicalCameraInfoCameraInfo, aby zapytać o informacje o fizycznym aparacie, oraz dodaj metodę ustawiania/odczytywania identyfikatora fizycznego aparatu w CameraSelector (Ic5b90).
  • Zawartość komórki CameraController#COORDINATE_SYSTEM_VIEW_REFERENCED zastąp komórką ImageAnalysis#COORDINATE_SYSTEM_VIEW_REFERENCED. Wartość stałej pozostaje taka sama. Dzięki temu wszystkie stałe są konsolidowane w jednym miejscu. (I890bb)
  • Nowy interfejs API RetryPolicy umożliwia deweloperom dostosowywanie zachowania ponownego próby w przypadku inicjalizacji CameraX. (I36dd2)
  • Umożliwienie tworzenia obiektu ImageCaptureLatencyEstimate w celu ułatwienia testowania (Iaba99)
  • Dodaj ImageAnalysis#COORDINATE_SYSTEM_SENSOR. W takim przypadku funkcja MlKitAnalyzer zwraca współrzędne w systemie współrzędnych czujnika aparatu. (I3ec61)
  • Interfejs API metadanych rozszerzeń. Nowe interfejsy CameraExtensionsInfoCameraExtensionsControl 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 wersję ProcessCameraProvider.awaitInstance, która jest wersją zawieszoną wersji ProcessCameraProvider.getInstance (Ib22b9).
  • Dodaj interfejs API PreviewView#getSensorToViewTransform(). Macierz reprezentuje transformację z współrzędnych czujnika aparatu na współrzędne PreviewView. Można go użyć do przekształcenia współrzędnych z jednego UseCase na inne. Na przykład przekształcenie współrzędnych wykrytych obiektów w ImageAnalysis na nakładkę PreviewView. (I947ab)
  • Uczynić interfejs API camera-viewfinder-core bardziej uniwersalnym, aby można było go używać w przypadku camera-viewfindercamera-viewfinder-compose. (I1e295)
  • Dodaj funkcję getSurface do ViewfinderSurfaceRequest. (I781a0)
  • Użyj właściwości camera-viewfinder-core w elementach camera-viewfinder i wycofaj z użycia elementy ViewfinderSurfaceRequestCameraViewfinder. (I6198c)
  • Dodano ZoomGestureDetector, który interpretuje gesty skalowania skonfigurowane specjalnie do powiększania przez zbliżanie. (Ifafbf)

Poprawki błędów

  • Rozwiązaliśmy problem z wybieraniem rozdzielczości ImageAnalysis związany z ustawieniem domyślnej rozdzielczości docelowej analizatora: docelową rozdzielczość nieprawidłowo ustawiano na 640 x 480, nawet jeśli aplikacja miała ustawioną inną domyślną rozdzielczość analizatora. Jeśli aplikacje napotykają ten problem (1.3.0 do 1.3.2) i nie mogą przejść na nowsze wersje, które zawierają rozwiązanie, możesz obejść ten problem, ustawiając bezpośrednio ResolutionSelector z preferowanym rozdzielczością i dopasowując AspectRatioStrategy do ImageAnalysis UseCase. (I81f72, b/330091012)
  • Rozwiązaliśmy problem, który powodował, że żądanie takePicture w kolejce mogło się nie uruchomić, jeśli bieżące żądanie zakończyło się niepowodzeniem. (Ie0801)
  • Wprowadzić sprawdzanie nieprawidłowych danych JPEG na urządzeniach Vivo X60 i X60 Pro. Może to rozwiązać problem z nieprawidłowo dużymi obrazami na tych urządzeniach. (I82247, b/288828159)
  • Naprawiono problem z nieprawidłowymi metadanymi obrazu JPEG na urządzeniach Samsung A24. Po wprowadzeniu poprawki CameraX może zapisać obraz JPEG lub zwracać prawidłowe obiekty Bitmap podczas wywołania funkcji ImageProxy.toBitmap() na urządzeniach Samsung A24. (I8d6eb, b/309005680)
  • Sprawdzanie nieprawidłowych danych JPEG zastosuj na wszystkich urządzeniach Samsung, jeśli zrobiony obraz ma więcej niż 10 MB. Może to rozwiązać problem z nieprawidłowo dużymi obrazami na urządzeniach Samsung. (Ic2a65, b/288828159)
  • Usunęliśmy obsługę ImageAnalysis w rozszerzeniach CameraX, ponieważ wiele implementacji rozszerzeń przez producentów nie działa dobrze z ImageAnalysis i może powodować niespójności. (I2d926)

Wersja 1.4.0-alpha04

24 stycznia 2024 r.

androidx.camera:camera-*:1.4.0-alpha04 został zwolniony. Wersja 1.4.0-alpha04 zawiera te commity.

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 element zawiera implementacje interfejsu API CameraEffect w OpenGL, który efektywnie manipuluje wyjściem z kamery.
  • OverlayEffect: do rysowania nakładek za pomocą interfejsu Canvas API na Androida. Dzięki temu aplikacja może dodawać znak wodny lub wyróżniać wykryte obiekty na wyjściu z aparatu.
  • DynamicRange Interfejsy API do stosowania w przypadku podglądu: zakres dynamiczny można teraz ustawić w przypadku użycia podglądu niezależnie od przypadku użycia filmu. Umożliwia to stosowanie dynamicznych zakresów HDR, takich jak HLG10, tylko w przypadku podglądu. W CameraInfo dostępne są też nowe interfejsy API, które umożliwiają zapytanie o zakresy dynamiczne obsługiwane przez poszczególne kamery.

Zmiany w interfejsie API

  • Zmieniono nazwę parametru ScreenFlashUiCompleter na ScreenFlashListener i przeniesiony parametr ScreenFlashUiCompleter#getExpirationTimeMillis do parametru expirationTimeMillis w kampanii ScreenFlash#apply. (I13944)
  • Dodano nowe interfejsy API, które umożliwiają ustawienie zakresu dynamicznego w przypadku użycia podglądu oraz zapytań dotyczących zakresów dynamicznych obsługiwanych przez dany aparat. Dzięki temu zakresy dynamiczne HDR, takie jak HLG10, mogą być używane tylko w przypadku podglądu, bez konieczności jednoczesnego wiązania VideoCapture. (If25e3)
  • Nazwa getMirroring() została zmieniona na isMirroring() (I47063)
  • Dodano obsługę szacowania opóźnienia w ramce w aparacie w czasie rzeczywistym. Rozszerzenia aparatu umożliwiają aplikacjom korzystanie z interfejsu API, który szacuje czas wykonania przechwycenia. Szacowany czas uwzględnia bieżące warunki środowiskowe, stan aparatu i czas potrzebny na przetworzenie żądań dotyczących przechwytywania wieloramkowego oraz ewentualny dodatkowy czas potrzebny na zakodowanie przetworzonych buforów. (I05c3a)
  • Nazwa ScreenFlashUiControl została zmieniona na ScreenFlash, ScreenFlashUiControl#applyScreenFlashUi na ScreenFlash#apply, ScreenFlashUiControl#clearScreenFlashUi na ScreenFlash#clear, a zamiast bezpośredniego udostępniania metody SCREEN_FLASH_UI_APPLY_TIMEOUT_SECONDS dodano metodę getScreenFlashUiApplyTimeoutSeconds. (Iccdd0)

Poprawki błędów

  • Rozwiązaliśmy problem z wyciekiem pamięci, który powodował, że aktywności lub fragmenty nie były uwalniane po włączeniu rozszerzeń (I14215).
  • Rozwiązaliśmy problem polegający na tym, że funkcja getZoomRatio zwracała nieprawidłowo zmniejszoną wartość podczas stosowania zwiększonego współczynnika powiększenia. (I4aa0d, b/317543616)
  • Zdarzenie ImageCapture#ScreenFlash#clear jest wywoływane natychmiast, gdy ImageCapture jest odłączony lub gdy kamera jest zamknięta. Rozwiązano też niektóre błędy, w których to zdarzenie nie było nigdy wywoływane, ponieważ w tych scenariuszach nie było prawidłowo wykonywane. (If99f9)
  • Rozwiązaliśmy problem z zawieszaniem się aplikacji, który występował, gdy cykl życia był zatrzymywany przed zakończeniem żądania takePicture (Idf017, b/306202751).
  • Rozwiązaliśmy problem polegający na tym, że podgląd aparatu staje się czarny, gdy na niektórych urządzeniach włączone są rozszerzenia (I1ffd0).
  • Naprawiono nieprawidłowy czas trwania nagrywania filmów na urządzeniach z procesorem Snapdragon 778G SoC (If6aa7, b/316057919).

Wersja 1.4.0-alpha03

13 grudnia 2023 r.

androidx.camera:camera-*:1.4.0-alpha03 został zwolniony. Wersja 1.4.0-alpha03 zawiera te commity.

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.onCaptureStartedOnImageSavedCallback.onCaptureStarted, aby powiadomić, kiedy kamera zaczęła naświetlać kadr. W tym momencie zalecamy odtworzenie dźwięku migawki lub animacji migawki. (Ic49b3)
  • Dodaliśmy obsługę funkcji błysku ekranu w aplikacji CameraX do robienia zdjęć z przedniego aparatu. CameraX zajmie się obsługą interfejsu API po stronie frameworku i w razie potrzeby zsynchronizuje czas z zmianami w interfejsie użytkownika aplikacji (np. uruchomienie wstępnego przechwytywania AE po zmianie koloru lub jasności ekranu aplikacji). Aplikacje muszą tylko dodać implementacje interfejsu użytkownika w interfejsie ScreenFlashUiControl udostępnionym przez CameraX. (I8ae84)
  • Dodano obsługę implementacji funkcji Błysk na ekranie w interfejsie API CameraX. Aplikacje będą mogły korzystać z podstawowej implementacji ImageCapture.ScreenFlashUiControl z poziomu PreviewView lub z nowego ScreenFlashView, który doda widok monochromatycznej nakładki i zmaksymalizuje jasność ekranu podczas robienia zdjęcia z błyskiem ekranu. (I1810e)

Zmiany w interfejsie API

  • Obsługa nowych funkcji rozszerzeń(po wyświetleniu i w trakcie procesu przechwytywania): dodano interfejsy API ImageCapture#getImageCaptureCapabilities(), które umożliwiają aplikacjom wysyłanie zapytań o możliwości funkcji po wyświetleniu i w trakcie procesu przechwytywania. Aplikacje mogą włączyć postview za pomocą ImageCapture.Builder#setPostviewEnabled(). Rozmiar postview można wybrać za pomocą ImageCapture.Builder#setPostviewResolutionSelector(). Podczas wywoływania takePicture() można zaimplementować onPostviewBitmapAvailable i onCaptureProcessProgressed w OnImageSavedCallback lub OnImageCapturedCallback, aby uzyskać powiadomienie o wyświetleniu reklamy i przetworzyć powiadomienie o postępach, jeśli jest to obsługiwane. (I5cd88)
  • Interfejsy API do obliczania transformacji współrzędnych z czujnika do bieżącego bufora z flagą wskazującą, czy Surface zawiera informacje o orientacji kamery (I59096).
  • Udostępnij interfejs API do zapytania PreviewCapabitlity w podglądzie UseCase. (Ie5b6c)
  • Dodano interfejsy API, aby obsługiwać 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 jest sytuacja, gdy aplikacja stara się nagrywać filmy w jakości UHD, ale CamcorderProfile urządzenia nie zawiera ustawień UHD, mimo że kodek umożliwia nagrywanie filmów w tej jakości. (Iedbe2, b/263961771)
  • Dodaj do CameraController metodę ImageAnalysis formatu wyjściowego (getter/setter). (I9a96c, b/308240643)

Poprawki błędów

  • W sekcji Aparat 1.3.1: ulepszono działanie ProcessCameraProvider#bindToLifecycle(). Główną zmianą jest optymalizacja procesu identyfikowania najbardziej odpowiednich kombinacji rozmiarów dla UseCases. Optymalne wyniki zależą od konkretnych kombinacji UseCase i liczby obsługiwanych rozmiarów wyjściowych na urządzeniach docelowych. (I454f2)
  • Zezwalaj na używanie VideoCapture, gdy włączone są rozszerzenia. (I91f32)
  • Rozwiązano problem z dużymi obrazami JPEG na urządzeniach z serii Samsung A71 i M51. Zdjęcia JPEG zawierają w segmencie danych skompresowanych JFIF niepotrzebne dane wypełniające z zerami. Powoduje to, że rozmiary plików z ujęciami są bardzo duże. Te zbędne dane wypełniające z zerami zostaną usunięte, aby zarejestrowane obrazy miały normalny rozmiar pliku. (I01afc, b/288828159)
  • Wyłącz obsługę ImageAnalysis na Pixelach, aby uniknąć błędu w Pixelu, który przypadkowo zwraca niepuste obsługiwane rozmiary ImageAnalysis. (I7ec31)
  • Rozwiązaliśmy problem z wydajnością, w którym obciążenie procesora i zużycie energii zwiększały się po włączeniu rozszerzeń. (Ibdccb)
  • Dodano Snapdragona 480 do listy CameraUseInconsistentTimebaseQuirk. Rozwiązano problem z Androidem 12 na urządzeniach z tym chipsetem, na których dźwięk w nagraniach jest przesunięty o czas, przez jaki urządzenie było w stanie zawieszenia. (I58010)

Wersja 1.4.0-alpha02

18 października 2023 r.

androidx.camera:camera-*:1.4.0-alpha02 został zwolniony. Wersja 1.4.0-alpha02 zawiera te commity.

Zmiany w interfejsie API

  • Zmień nazwę interfejsu API na setCameraOpenRetryMaxTimeoutInMillisWhileResuming i nazwę argumentu. (I72370)
  • Dodano interfejsy API do zapytania o możliwości urządzenia i włączenie stabilizacji obrazu w filmie i podglądzie. (I87544)
  • Udostępnij interfejs API, aby dostosować maksymalny czas oczekiwania na ponowne otwarcie aparatu. (I0c642)
  • Udostępniliśmy interfejs ProcessCameraProvider.shutdownAsync jako publiczny interfejs API do testowania, aby umożliwić korzystanie z procesu dostawcy aparatu w pakietach testów, które mogą wymagać inicjowania CameraX na różne sposoby w międzyczasie testów. (I9eca7)
  • Dodaj interfejsy API do konfigurowania zakresu dynamicznego, częstotliwości klatek i trybu lustrzanego podczas rejestrowania filmów. (Ifb8f7)
  • Wycofaj OutputSize i zastąp go ResolutionSelector. ResolutionSelector to bardziej kompleksowy sposób na wybór rozdzielczości, który jest zgodny z interfejsem camera-core API. (I93abd, b/286801438)

Poprawki błędów

  • Rozwiązano problem z czarnym podglądem na telefonie Samsung Galaxy S23 Ultra 5G, gdy włączone są rozszerzone zdjęcia z efektem bokeh lub retusz twarzy z użyciem ImageAnalysis na tylnym aparacie. (I2e8b1)
  • Rozwiązaliśmy problemy z podglądem i rozciągniętymi VideoCapture na telefonie Moto E5 Play. (73dce2)

Wersja 1.4.0-alpha01

20 września 2023 r.

androidx.camera:camera-*:1.4.0-alpha01 został zwolniony. Wersja 1.4.0-alpha01 zawiera te commity.

Zmiany w interfejsie API

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

Poprawki błędów

  • Zwiększ stabilność rozszerzeń, dbając o to, aby zdarzenia inicjalizacji i dezincjalizowania były wywoływane we właściwej kolejności. (Ib3b8e)
  • Usunięto błąd konfiguracji sesji przechwytywania, który występował, gdy dodano dodatkową powtarzającą się powierzchnię wewnętrzną, co powodowało przekroczenie obsługiwanej kombinacji powierzchni. (Id718c)
  • Usunięto problem z dużymi obrazami JPEG na urządzeniu Vivo S16. Zdjęcia JPEG zawierają w segmencie danych skompresowanych JFIF niepotrzebne dane wypełniające z zerami. Zdjęcia mają wtedy duży rozmiar. Te zbędne dane wypełniające z zerami zostaną usunięte, aby zarejestrowane obrazy miały normalny rozmiar pliku. (I79505, b/299069235)
  • Rozwiązanie problemu polegającego na tym, że ImageAnalysis nie może być powiązany z ImageCapture i Podglądem, gdy niektóre tryby rozszerzenia są włączone na niektórych urządzeniach. Poprawka spowoduje zwrócenie prawidłowej wartości, gdy aplikacje zapytają o dostępność ImageAnalysis za pomocą ExtensionsManager#isImageAnalysisSupported(). (I7d538)
  • Zaktualizuj JavaDoc, aby pasował do zachowania. Zamiast natychmiastowego zakończenia #setZoomRatio, #setLinearZoom i #enableTorch czekają, aż kamera będzie gotowa. Dodano 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.

androidx.camera:camera-*:1.3.4 został zwolniony. Wersja 1.3.4 zawiera te komity.

Poprawki błędów

  • Rozwiązaliśmy problem polegający na tym, że funkcja getZoomRatio zwracała nieprawidłowo zmniejszoną wartość podczas stosowania zwiększonego współczynnika powiększenia. (I4aa0d, b/317543616)
  • Naprawiono problem z robieniem zdjęć/naciskaniem, aby ustawić ostrość, gdy nie używano powtarzających się wartości FPS lub trybu stabilizacji, co może spowodować ponowne utworzenie sesji rejestrowania i problemy z opóźnieniem lub zablokowanie podglądu na niektórych urządzeniach. (I7dc0b)
  • Rozwiązaliśmy problem, który powodował, że podczas wywoływania funkcji setTargetFrameRate za pomocą funkcji FRAME_RATE_RANGE_UNSPECIFIED ustawiana jest niższa liczba klatek na sekundę. (I78c61)

Wersja 1.3.3

17 kwietnia 2024 r.

androidx.camera:camera-*:1.3.3 został zwolniony. Wersja 1.3.3 zawiera te komity.

Poprawki błędów

  • Rozwiązaliśmy problem z wybieraniem rozdzielczości ImageAnalysis związany z ustawieniem domyślnej rozdzielczości docelowej analizatora: docelową rozdzielczość nieprawidłowo ustawiano na 640 x 480, nawet jeśli aplikacja miała ustawioną inną domyślną rozdzielczość analizatora. Jeśli aplikacje napotykają ten problem (1.3.0 ~ 1.3.2) i nie mogą przejść na nowsze wersje, które zawierają rozwiązanie, możesz obejść ten problem, ustawiając bezpośrednio ResolutionSelector z preferowanym rozdzielczością i odpowiadającym AspectRatioStrategy do przypadku użycia ImageAnalysis. (I81f72, b/330091012)

Wersja 1.3.2

6 marca 2024 roku

androidx.camera:camera-*:1.3.2 został zwolniony. Wersja 1.3.2 zawiera te komitowane zmiany.

Poprawki błędów

  • Rozwiązaliśmy problem z metadanymi JPEG-a na urządzeniach Samsung A24. Aplikacja CameraX teraz poprawnie zapisuje obrazy, a funkcja ImageProxy.toBitmap() zwraca prawidłowe obiekty Bitmap. (I8d6eb, b/309005680)
  • Usunięto opcję rozdzielczości 9280 x 6944 na urządzeniach Redmi Note 9 Pro ze względu na problemy. (Ia23da)

Wersja 1.3.1

13 grudnia 2023 r.

androidx.camera:camera-*:1.3.1 został zwolniony. Wersja 1.3.1 zawiera te commity.

Poprawki błędów

Poprawiono wydajność ProcessCameraProvider#bindToLifecycle(). Główną zmianą jest optymalizacja procesu identyfikowania najbardziej odpowiednich kombinacji rozmiarów dla UseCases. Optymalne wyniki zależą od konkretnych kombinacji UseCase i liczby obsługiwanych rozmiarów wyjściowych na urządzeniach docelowych. (I454f2)

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

  • UseCases: Preview + ImageCapture + ImageAnalysis + VideoCapture

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

    • Google Pixel 7: około 9 ms do 7 ms
    • Samsung Galaxy S23 Ultra: około 6–5 ms
    • Samsung A53 5G: około 32 ms do 12 ms
  • Dodano Snapdragona 480 do listy CameraUseInconsistentTimebaseQuirk. Rozwiązano problem z Androidem 12 na urządzeniach z tym chipsetem, na których 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.

androidx.camera:camera-*:1.3.0 został zwolniony. Wersja 1.3.0 zawiera te commity.

Ważne zmiany od wersji 1.2.0

Wersja 1.3.0-rc02

20 września 2023 r.

androidx.camera:camera-*:1.3.0-rc02 został zwolniony. Wersja 1.3.0-rc02 zawiera te commity.

Poprawki błędów

  • Zwiększ stabilność rozszerzeń, dbając o to, aby zdarzenia inicjalizacji i dezinicjalizacji były wywoływane w prawidłowej kolejności. Rozwiązaliśmy problemy z czarnym podglądem podczas przełączania trybów rozszerzeń lub kamer. (Iddaac)
  • Rozwiązanie problemu polegającego na tym, że ImageAnalysis nie może być powiązany z ImageCapture i Podglądem, gdy niektóre tryby rozszerzeń są włączone na niektórych urządzeniach. Poprawka spowoduje zwrócenie prawidłowej wartości, gdy aplikacje zapytają o dostępność ImageAnalysis za pomocą ExtensionsManager#isImageAnalysisSupported(). (I7d538)
  • Rozwiązaliśmy problem polegający na tym, że dźwięk i obraz nagranego filmu były niezsynchronizowane, gdy włączono tryb lustrzanego odbicia na Xiaomi Poco X3 NFC. (I20b4c)

Wersja 1.3.0-rc01

23 sierpnia 2023 r.

androidx.camera:camera-*:1.3.0-rc01 został zwolniony. Wersja 1.3.0-rc01 zawiera te commity.

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 uruchamiany. (I517c6)

Poprawki błędów

  • Naprawiono błąd powodujący awarię, gdy strumień był udostępniany zarówno w VideoCapture, jak i w Podglądzie. Usunięto też czarny ekran na STARYCH urządzeniach, gdy włączone było udostępnianie strumienia.
  • Usunięto problem z dużymi obrazami JPEG na urządzeniach z serii Samsung S7 (SM-G930T, SM-G930V). Zdjęcia JPEG zawierają w segmencie danych skompresowanych JFIF niepotrzebne dane wypełniające z zerami. Zdjęcia mają wtedy duży rozmiar. Te zbędne dane wypełniające z zerami zostaną usunięte, aby zarejestrowane obrazy miały normalny rozmiar pliku. (I407b0, b/288828159)
  • Rozwiązano problem z dużymi obrazami JPEG na urządzeniach z serii Samsung S22 (SM-S901B, SM-S901B/DS) i S22+ (SM-S906B). Zdjęcia JPEG zawierają w segmencie danych skompresowanych JFIF niepotrzebne dane wypełniające z zerami. Z tego powodu na urządzeniu S22 SM-S901B/DS zrobione zdjęcia mają duży rozmiar około 13 MB. Te zbędne dane wypełniające z zerami zostaną usunięte, aby zarejestrowane obrazy miały normalny rozmiar pliku. (I73be9, b/288828159)
  • Naprawienie problemu z dużymi obrazami JPEG na urządzeniach z serii Samsung A5, A52, A70 i A72. Zdjęcia JPEG zawierają w segmencie danych skompresowanych JFIF niepotrzebne dane wypełniające z zerami. Powoduje to, że rozmiary uchwycionych obrazów są bardzo duże (np. 32 MB lub nawet 96 MB). Te zbędne dane wypełniające z zerami zostaną usunięte, aby zarejestrowane obrazy miały normalny rozmiar pliku. (I97c4d, b/288828159)
  • Naprawiono problem z wypadkiem aplikacji natywnej podczas robienia zdjęć przy włączonych rozszerzeniach (I698f5).

Wersja 1.3.0-beta02

26 lipca 2023 r.

androidx.camera:camera-*:1.3.0-beta02 został zwolniony. Wersja 1.3.0-beta02 zawiera te commity.

Poprawki błędów

  • Używanie lampy błyskowej w modelach Pixel 4 i 5, aby poprawić jakość zdjęć w warunkach słabego oświetlenia (I56ff5, b/280221967)
  • Rozwiązaliśmy problem z dużymi obrazami JPEG na urządzeniach z serii Samsung A5 (2017). Zdjęcia JPEG zawierają w segmencie danych skompresowanych JFIF niepotrzebne dane wypełniające z zerami. Zdjęcia mają wtedy rozmiar około 32 MB. Te zbędne dane wypełniające z zerami zostaną usunięte, aby zarejestrowane obrazy miały normalny rozmiar pliku. (I29837, b/288828159)
  • Rozwiązano problem z nieprawidłowym uruchamianiem ponownego próby w przypadku niepowodzenia rejestrowania na problemowych urządzeniach wymienionych w artykule CaptureFailedRetryQuirk. (I7b589)

Wersja 1.3.0-beta01

21 czerwca 2023 r.

androidx.camera:camera-*:1.3.0-beta01 został zwolniony. 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)VideoCapture.setTargetRotationDegrees(int). (Id8e77)
  • Klasa DynamicRange reprezentuje zakres dynamiczny obrazów. Można go użyć do wybrania formatów High Dynamic Range jako wyjścia VideoCapture do VideoCapture.Builder#setDynamicRange(). (Ib0377)
  • Dodano interfejs API isImageAnalysisSupported do ExtensionsManager, dzięki któremu aplikacje mogą określić, czy przypadki użycia ImageAnalysis można powiązać z podglądem i ImageCapture, gdy są włączone rozszerzenia. (I1bc63)
  • Nowa klasa VideoCapabilities uzyskana z Recorder może służyć do zapytania o obsługiwane zakresy dynamiczne i jakości nagrywania wideo na urządzeniu. Metody QualitySelector getSupportedQualities()isQualitySupported() są wycofywane. Zamiast tego używaj metod getSupportedQualities()isQualitySupported() klasy VideoCapabilities. (I04014)
  • Funkcja CameraController#setVideoCaptureTargetQuality() została przemianowana na setVideoCaptureQualitySelector i przyjmuje argument QualitySelector, co zapewnia większą elastyczność konfiguracji jakości filmu. Wartość CameraController#getVideoCaptureTargetQuality() została odpowiednio zmieniona na getVideoCaptureQualitySelector. (I520ed)
  • Usunięto eksperymentalne adnotacje funkcji wideo. Funkcje wideo są teraz stabilne. (I1a113)

Poprawki błędów

  • Użyj latarki jako lampy błyskowej na modelach Samsung SM-A320, aby zwiększyć szybkość i jakość zdjęć w słabym oświetleniu. (I6a022, b/286190938)
  • Dodaliśmy obsługę formatu ImageFormat.JPEG dla ImageProxy.toBitmap(). Jeśli nie uda się zdekodować tablicy bajtów JPEG, zostanie wywołana wyjątek UnsupportedOperationException. (I81958, b/282057603)

Wersja 1.3.0-alpha07

24 maja 2023 r.

androidx.camera:camera-*:1.3.0-alpha07 został zwolniony. Wersja 1.3.0-alpha07 zawiera te commity.

Nowe funkcje

  • Nowy interfejs API VideoCapture.Builder# setTargetFrameRate(Range) umożliwia rejestrowanie filmów z inną częstotliwością klatek niż domyślna częstotliwość klatek urządzenia. Dostępne częstotliwości klatek dla nagrań można sprawdzić za pomocą nowego interfejsu API CameraInfo#getSupportedFrameRates().

Zmiany w interfejsie API

  • Zmieniono nazwy stałych ResolutionSelector#HIGH_RESOLUTION_FLAG_OFFON na ALLOWED_RESOLUTIONS_NORMALSLOW oraz zmieniono nazwę funkcji konstruktora setHighResolutionEnabledFlag na setAllowedResolutionMode. (Iae817)
  • Funkcja CameraInfo#getSupportedFrameRateRanges() zwraca teraz wartość Set, a nie List, aby lepiej odzwierciedlać fakt, że zakresy nie są uporządkowane. (I02f43)
  • Dodaj do CameraEffect obiekt ErrorListener, aby obsługiwać nieodwracalne błędy (Ice471).
  • Dodaj publiczny konstruktor w ResolutionInfo, aby ułatwić testowanie (If6d1c)
  • Udostępniliśmy interfejs API UseCase.snapToSurfaceRotation(int), który zastępuje interfejs setTargetRotationDegrees i wycofuje interfejsy ImageAnalysis.setTargetRotationDegrees(int), ImageCapture.setTargetRotationDegrees(int)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 użycia podglądu (If4f2).
  • Funkcja VideoRecordEvent.Finalize zostanie teraz zakończona z kodem błędu ERROR_RECORDING_GARBAGE_COLLECTED, gdy obiekt Recording zostanie zatrzymany z powodu zbierania elementów usuniętych. (Iba974)

Poprawki błędów

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

Wersja 1.3.0-alpha06

19 kwietnia 2023 r.

androidx.camera:camera-*:1.3.0-alpha06 został zwolniony. Wersja 1.3.0-alpha06 zawiera te commity.

Nowe funkcje

  • Jednoczesne korzystanie z kamery to nowa funkcja wprowadzona w Androidzie 11, która umożliwia jednoczesne przesyłanie strumieniowe z urządzeń z kamerą, np. pozwala na jednoczesne korzystanie z przedniego i tylnego aparatu. CameraX obsługuje obecnie tylko 2 jednoczesne kamery, co pozwala na jednoczesne działanie 2 kamer, z maksymalnie 2 {@link UseCase} dla każdej z nich. 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ć format obrazu i strategie dotyczące rozdzielczości, aby wybrać najlepszą rozdzielczość dla swoich potrzeb.
    • Wszystkie rozmiary i parametry proporcji są wyrażane w współrzędnych czujnika urządzenia.
    • Aplikacje mogą stosować niestandardowy filtr rozdzielczości, aby uporządkować obsługiwane rozmiary w pożądanej kolejności.
    • Aplikacje mogą też umożliwiać rejestrowanie zdjęć w wysokiej rozdzielczości. Pamiętaj jednak, że używanie wysokiej rozdzielczości może wydłużyć czas nagrywania.
    • Dodano interfejsy API do powielania VideoCapture. Filmy nagrywane przez VideoCapture nie są domyślnie odwrócone. Jednak w przypadku przedniego aparatu podgląd jest domyślnie odbity jak w lustrze. Interfejsy API do zwierciadlenia VideoCapture umożliwiają dopasowanie do podglądu aparatu podczas korzystania z przedniego aparatu. Tak nazywają się 3 osoby: MirrorMode, OFF, ONON_FRONT_ONLY. Aby dopasować obraz do podglądu w aparacie, zalecamy użycie opcji ON_FRONT_ONLY, co oznacza, że lustro nie jest włączone w przypadku tylnego aparatu, ale jest włączone w przypadku przedniego aparatu.

Zmiany w interfejsie API

  • Udostępniliśmy nowy interfejs API ResolutionSelector. Aplikacje mogą określać strategie dotyczące formatu obrazu i rozdzielczości za pomocą reguł zapasowych lub niestandardowego filtra rozdzielczości, aby uzyskać pożądane wyniki. Aplikacje mogą określać flagę, aby umożliwić rejestrowanie w wysokiej rozdzielczości. Dzięki temu CameraX będzie mogło wybierać wyższe rozdzielczości podczas robienia zdjęć lub nagrywania filmów. Pamiętaj jednak, że użycie wysokiej rozdzielczości może wydłużyć czas nagrywania. (Ibed95)
  • Zakresy liczby klatek na sekundę obsługiwane przez algorytm AE można teraz zapytać za pomocą CameraInfo#getSupportedFrameRateRanges(). (Iaa67f)
  • Połącz nazwy wszystkich metod dotyczących częstotliwości klatek, używając parametru „FrameRate”. Popraw błędy w pliku javadoc VideoCapture#getTargetFrameRate() (I83304)
  • Wycofano starsze interfejsy API setTargetAspectRatiosetTargetResolution. Zamiast tego użyj nowego interfejsu API ResolutionSelector. (I542c3)
  • Dodano publiczne interfejsy API do obsługi równoczesnego korzystania z podwójnego aparatu, w tym:
    1. List<List<CameraInfo>> getAvailableConcurrentCameraInfos()
    2. ConcurrentCamera bindToLifecycle(@NonNull ConcurrentCameraConfig concurrentCameraConfig)
    3. boolean isConcurrentCameraModeOn() i ConcurrentCameraConfig, SingleCameraConfig i ConcurrentCamera (Iab1c1)
  • Ustaw ImageProcessor.Response#getOutputImage na NonNull (Ib9c60).
  • Dodano interfejsy API do powielania VideoCapture, w tym VideoCapture.Builder.setMirrorMode(int) i VideoCapture.getMirrorMode(). Interfejsy API są przydatne w przypadku aplikacji, które wymagają, aby nagranie wideo było zgodne ze zwykłym zachowaniem podglądu aparatu, czyli aby podgląd z tylnego aparatu nie był lustrzany, a z przedniego – tak. (I713b6, b/194634656)
  • Dodanie interfejsu setTargetFrameRate() w interfejsie VideoCapture.Builder oraz interfejsu getTargetFramerate() w interfejsie VideoCapture (I109d4)
  • Zrób tak, aby SurfaceOutput rozszerzało Closable, i ukryj publiczny konstruktor SurfaceOutput.Event. (I60ea8)
  • Dodano Recording.mute, aby dynamicznie wyciszyć lub włączyć wyciszenie nagrania w trakcie przetwarzania. RecordingStats będzie zawierać AudioStats.AUDIO_STATE_MUTED, gdy w trakcie przetwarzania nagranie jest wyciszone. (Ie17fc)
  • Parametr #setEffects() nie może być równy null. Dodano interfejs API #clearEffects() do anulowania efektów. Aplikacja powinna wywołać funkcję #clearEffects(), aby usunąć efekty. (I4b4d9)
  • Dodaj drugą wersję konstruktora ViewfinderSurfaceRequest.Builder, która przyjmuje konstruktor kopiujący (I621a7)

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował awarię aplikacji wywołujących Extensions API podczas zamykania aparatu (Ib27e5).
  • Rozwiązaliśmy problem, który powodował, że aplikacja VideoCapture nie działała z przednią kamerą na niektórych urządzeniach. Na przykład na telefonie Samsung Galaxy S23 i Xiaomi 2107113SG. (Ibec7e, b/270656244)
  • Rozwiązanie problemu polegającego na tym, że robienie zdjęć za pomocą aplikacji Pliki w folderze publicznym na zewnętrznym urządzeniu pamięci zawsze kończyło się niepowodzeniem w Androidzie 10 lub nowszym. Pamiętaj, że w Androidzie 10 robienie zdjęć za pomocą aplikacji Pliki w folderze publicznym na zewnętrznym urządzeniu pamięci masowej wymaga również ustawienia wartości requestLegacyExternalStorage na „true” w tagu aplikacji. (I11b2c)
  • Naprawiono błąd RejectedExecutionException powodujący awarię w funkcji DefaultSurfaceProcessor. Awaria może wystąpić, gdy VideoCapture jest powiązany, a aktywność jest wstrzymana. (Idb46a, b/273713906)

Wersja 1.3.0-alpha05

22 marca 2023 r.

androidx.camera:camera-*:1.3.0-alpha05 został zwolniony. Wersja 1.3.0-alpha05 zawiera te commity.

Zmiany w interfejsie API

  • Dodano interfejsy API rotacji VideoCapture, w tym VideoCapture.Builder.setTargetRotation(int), VideoCapture.setTargetRotation(int), VideoCapture.setTargetRotationDegrees(int)VideoCapture.getTargetRotation(). Interfejsy API są przydatne w przypadku aplikacji, które blokują orientację urządzenia. Dodano też użytkowników ImageCapture.setTargetRotationDegrees(int) i ImageAnalysis.setTargetRotationDegrees(int). (Id3ffe, b/205242781)
  • Zezwól na VIDEO_CAPTUREPREVIEW|VIDEO_CAPTURE jako docelowe efekty. Efekty kierowane na VIDEO_CAPTURE zostaną zastosowane do przypadku użycia VideoCapture. Efekty kierowane na PREVIEW|VIDEO_CAPTURE zostaną zastosowane do udostępnionego strumienia przed skopiowaniem do strumienia Podgląd i VideoCapture. (Iee6f3)

Poprawki błędów

  • Aparat1.2.2: rozwiązaliśmy problem, który powodował, że rozszerzenia CameraX nie działały prawidłowo, gdy włączono ProGuard na niektórych urządzeniach, takich jak Pixel (I90aa2).
  • Usunęliśmy błąd PreviewView, który powodował, że jeśli aplikacja sama obsługuje orientację ekranu, podgląd mógł zostać zniekształcony po obróceniu. Dzieje się tak tylko na niektórych urządzeniach. Można go odtworzyć na Pixelu 4, Pixelu 5 i Pixelu 6a. (I14340, b/223488673)

Wersja 1.3.0-alpha04

22 lutego 2023 roku

androidx.camera:camera-*:1.3.0-alpha04 został zwolniony. Wersja 1.3.0-alpha04 zawiera te commity.

Nowe funkcje

Nowa funkcja obsługi nieobsługiwanych wcześniej kombinacji powierzchni poprzez udostępnianie jednego strumienia wielu zastosowaniom.

  • Wcześniej podczas wiązania „Preview, VideoCapture, ImageAnalysis” na poziomie sprzętu aparatu FULL i niżej lub wiązania „Preview, VideoCapture, ImageCapture” na poziomie sprzętu LEGACY, CameraX wyrzuca IllegalArgumentException.
  • Nowe zachowanie 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 do podglądu i VideoCapture.
  • W efekcie może to spowodować zwiększenie opóźnienia i zużycia energii przez aplikację.

Zmiany w interfejsie API

  • Dodaj interfejs API, aby przekształcić ImageProxy w Bitmap. Obsługiwany format ImageProxy to ImageFormat.YUV_420_888 i PixelFormat.RGBA_8888. Jeśli format jest nieprawidłowy, zostanie zwrócony błąd IllegalArgumentException. (Ic7110)
  • Dodaj CoroutineCameraViewfinder, aby obsługiwać konfigurowanie wizjera za pomocą funkcji zawieszania w Kotlinie. (I657bc)
  • Dodaj nowy publiczny konstruktor klasy ViewfinderSurfaceRequest. Zapewnia elastyczność, gdy użytkownik nie może podać CameraCharacteristics. (Ie6549)

Poprawki błędów

  • Naprawiono problem z zawieszaniem się rozszerzeń, który występuje na niektórych urządzeniach Samsunga, gdy aplikacja jest zatrzymywana lub wznawiana zbyt szybko (Iaca26).

Wersja 1.3.0-alpha03

25 stycznia 2023 r.

androidx.camera:camera-*:1.3.0-alpha03 został zwolniony. Wersja 1.3.0-alpha03 zawiera te commity.

Zmiany w interfejsie API

  • Dodano CameraInfo.getIntrinsicZoomRatio, aby podać informacje o kącie widzenia w stosunku do domyślnej kamery. (Ib300c)
  • Dodano CameraInfo.getLensFacing, aby podać informacje o kierunku soczewki. Dodano CameraSelector#LENS_FACING_EXTERNAL jako funkcję eksperymentalną do wybierania kamer zewnętrznych. (Icaf3e)
  • Dodaj #setEffect() do CameraController, aby umożliwić dodawanie efektów do wyjścia z aparatu. (I1d21f)
  • Dodaj metodę invalidate() do SurfaceRequest. Dostawca powierzchni może powiadomić, że wcześniej podana powierzchnia nie jest już ważna. (Idc649)
  • Dodaj interfejs API ImageProcessor. Ten interfejs służy do wstawiania efektów końcowych do ścieżki ImageCapture. (I575c6)
  • Dodano interfejs API Recorder.Builder.setAspectRatio(), który można łączyć z interfejsem QualitySelector, aby obsługiwać więcej rozdzielczości filmów. (I8a082)
  • Dodano Recorder.Builder#setTargetVideoEncodingBitRate, aby ustawić docelowy kodowanie wideo BitRate i Recorder#getTargetVideoEncodingBitRate, aby uzyskać docelową szybkość transmisji bitów kodowania wideo. (I5984d)

Poprawki błędów

  • Rozwiązano problem z ImageCapture, gdy nie ma modułu lampy błyskowej i tryb lampy błyskowej jest włączony. (I9e8b4, b/263391112)
  • Rozwiązaliśmy problem z uszkodzeniem obrazów JPEG podczas zapisywania danych o lokalizacji Exif na niektórych urządzeniach Samsung z Androidem 12. (Ib7086, b/263747161, b/263289024)
  • gdy ustawienie latarki/zoomu nastąpiło przed zakończeniem inicjalizacji kamery, np. wywołanie CameraController#enableTorch, oczekujące działanie jest przechowywane w pamięci podręcznej i przesyłane po zakończeniu inicjalizacji. (I11e92, b/264157663)

Wersja 1.3.0-alpha02

7 grudnia 2022 r.

androidx.camera:camera-*:1.3.0-alpha02 został zwolniony. Wersja 1.3.0-alpha02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • dodać nowy interfejs API do stosowania efektu końcowego do danych wyjściowych podglądu. (Ic17d5)
  • Zmieniono nazwę OutputOptions.getDurationLimit na OutputOptions.getDurationLimitMillis, a OutputOptions.setDurationLimit na OutputOptions.setDurationLimitMillis. (I91f0c)
  • Dodaj klasę AudioConfig, aby obsługiwać ustawienia związane z dźwiękiem podczas nagrywania filmów. 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, OutputFileOptionsOutputFileResults, które nie są już używane po zastosowaniu nowego interfejsu API do przechwytywania wideo. (I38cd8)
  • zastosuj nowy interfejs API do przechwytywania filmów; Metody getVideoCaptureTargetSizesetVideoCaptureTargetSize są odpowiednio zastępowane metodami getVideoCaptureTargetQualitysetVideoCaptureTargetQuality, 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 funkcja wywołania zwrotnego onError nie jest wywoływana podczas robienia zdjęć bez uprawnień do przechowywania (I936db, b/244807669).
  • Ulepszona jakość i niezawodność rozszerzeń aparatu. Rozszerzenia aparatu są wyłączone na urządzeniach Motorola z wersją 1.1.0 lub starszą z powodu problemów z obsługą efektu bokeh, robieniem zdjęć i wznawianiem podglądu. (Id3ce3)
  • Naprawiono błąd powodujący awarię aplikacji natywnej, gdy na starszych urządzeniach jest włączone przycinanie filmów za pomocą ViewPort. (I16b8a, b/251357665)

Wersja 1.3.0-alpha01

9 listopada 2022 r.

androidx.camera:camera-*:1.3.0-alpha01 został zwolniony. Wersja 1.3.0-alpha01 zawiera te zatwierdzenia.

Nowe funkcje

  • Kontener Camera-viewfinder został oficjalnie opublikowany. Camera-viewfinder udostępnia podstawowy widok przeziernika, który może wyświetlać obraz z aplikacji Camera2. Przykładowy kod znajdziesz w pliku z przykładowym kodem.

Zmiany w interfejsie API

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

Poprawki błędów

  • Dodanie funkcji, która pozwoli niektórym problematycznym urządzeniom ponownie spróbować przechwycenia, gdy wystąpią błędy przechwycenia. (Id4795)
  • Rozwiązanie problemu z czarnym ekranem w implementacji PreviewView SurfaceView w ViewPager2. W ramach poprawki PreviewView będzie ponownie używać SurfaceView, jeśli żądana rozdzielczość nie zostanie zmieniona. (Ib3f27)
  • Obsługa przycinania filmów (funkcja WYSIWYG) podczas korzystania z interfejsu API ViewPort lub CameraController. (Ifbba8, b/201085351)
  • Naprawiono błąd, który uniemożliwiał nagrywanie filmów za pomocą przedniego aparatu na telefonie Huawei P40 lite. (I87c57, b/250807400)

Wersja 1.2

Wersja 1.2.3

24 maja 2023 r.

androidx.camera:camera-*:1.2.3 został zwolniony. Wersja 1.2.3 zawiera te zatwierdzenia.

Poprawki błędów

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

Wersja 1.2.2

22 marca 2023 r.

androidx.camera:camera-*:1.2.2 został zwolniony. Wersja 1.2.2 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązano problem polegający na tym, że rozszerzenia CameraX nie działają prawidłowo, gdy na niektórych urządzeniach, takich jak Pixel (I90aa2), włączona jest funkcja ProGuard.

Wersja 1.2.1

25 stycznia 2023 r.

androidx.camera:camera-*:1.2.1 został zwolniony. Wersja 1.2.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązanie problemu z uszkodzonymi obrazami 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.

androidx.camera:camera-*:1.2.0 został zwolniony. 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, w tym skanowania kodów kreskowych, wykrywania twarzy, wykrywania tekstu itp. Dodano MLKitAnalyzer jako nowe interfejsy API.
  • Nowy eksperymentalny interfejs API Zero-Shutter Lag. Optymalizuje przetwarzanie, aby uzyskać mniejsze opóźnienie przy zachowaniu dobrej jakości obrazu. Gdy tryb rejestrowania jest ustawiony na CAPTURE_MODE_ZERO_SHUTTER_LAG, opóźnienie między naciśnięciem przycisku migawki a zrobieniem zdjęcia powinno być zminimalizowane w porównaniu z innymi trybami rejestrowania. Na urządzeniach, które nie obsługują ZERO_SHUTTER_LAG, zostanie użyta funkcja CAPTURE_MODE_MINIMIZE_LATENCY.
  • Wycofaj android.camera.core.VideoCapture.
  • Dodano setStreamUseCase() jako publiczny interfejs API Camera2Interop.
  • Dodano wymagania dotyczące poziomu interfejsu API dla setOutputImageRotationEnabled.
  • Nazwa ImageAnalysis.Analyzer#getTargetResolutionOverride() została zmieniona na ImageAnalysis.Analyzer#getDefaultTargetResolution().
  • Dodano interfejs API do ustawiania metadanych lokalizacji w zapisanym filmie.
  • Rozwiązaliśmy problem z niską liczbą klatek na sekundę podczas korzystania z VideoCapture i w przypadku użycia podglądu w formacie 16:9.
  • Rozwiązaliśmy problem z czarnym podglądem, który występuje, gdy na niektórych urządzeniach Samsunga włączone jest rozszerzenie BOKEH, a użytkownik przełącza kamery.
  • Rozwiązano problem z wydłużeniem na urządzeniach Samsung J7 Prime (SM-G610M) i J7 (SM-J710MN) na poziomie interfejsu API 27.Preview/VideoCapture
  • Wyłączono obejście problemu polegające na przechyleniu 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.

androidx.camera:camera-*:1.2.0-rc01 został zwolniony. Wersja 1.2.0-rc01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodaj interfejs API setStreamUseCase dla OutputConfiguration. Użytkownik może określić zastosowanie strumienia na potrzeby sesji strumienia, zastępując wewnętrzną logikę CameraX, aby wybrać zastosowanie strumienia w celu optymalizacji zgodnie z potrzebami. (Ib1a95)

Poprawki błędów

  • Rozwiązano problem z wydłużeniem na urządzeniach Samsung J7 Prime (SM-G610M) i J7 (SM-J710MN) na poziomie interfejsu API 27.Preview/VideoCapture Rozdzielczość 1920 x 1080 powoduje rozciągnięcie obrazów Preview/VideoCapture. Dodano obejście problemu polegające na niewybieraniu rozdzielczości 1920 x 1080 w przypadku podglądu lub VideoCapture, aby uniknąć rozciągania obrazu. (I0e04e)
  • Usunięto problem niskiej liczby klatek na sekundę podczas korzystania z funkcji VideoCapture i podglądu w formatach 16:9 na niektórych urządzeniach Huawei. (If8c88, b/223643510)
  • Rozwiązano problem z otwieraniem kamery, gdy nie jest ustawiona opcja SurfaceProvider w podglądzie. W ramach poprawki podgląd bez ustawionego parametru SurfaceProvider nie będzie już konfigurowany w sesji przechwytywania kamery. (I99681)

Wersja 1.2.0-beta02

21 września 2022 r.

androidx.camera:camera-*:1.2.0-beta02 został zwolniony. Wersja 1.2.0-beta02 zawiera te commity.

Zmiany w interfejsie API

  • Dodaj wymagany poziom interfejsu API dla setOutputImageRotationEnabled (I26e3e, b/240993561)

Poprawki błędów

  • Wyłączono obejście problemu polegające na przechyleniu obszaru AF w poziomie w przypadku 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ępuje, gdy na niektórych urządzeniach Samsunga włączone jest rozszerzenie BOKEH, a użytkownik przełącza kamery. (If6168)

Wersja 1.2.0-beta01

24 sierpnia 2022 r.

androidx.camera:camera-*:1.2.0-beta01 został zwolniony. Wersja 1.2.0-beta01 zawiera te commity.

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 API. Optymalizuje przetwarzanie, aby zmniejszyć opóźnienie przy zachowaniu dobrej jakości obrazu. Gdy tryb rejestrowania jest ustawiony na CAPTURE_MODE_ZERO_SHUTTER_LAG, opóźnienie między naciśnięciem przycisku migawki a zrobieniem zdjęcia powinno być zminimalizowane w porównaniu z innymi trybami rejestrowania. Na urządzeniach, które nie obsługują ZERO_SHUTTER_LAG, zostanie użyty tryb CAPTURE_MODE_MINIMIZE_LATENCY.
  • ImageAnalysis.AnalyzerMLKitAnalyzer są teraz oficjalnymi interfejsami API.
  • Interfejs API do ustawiania metadanych lokalizacji w zapisanym filmie.
  • Zmień nazwę ImageAnalysis.Analyzer#getTargetResolutionOverride() na ImageAnalysis.Analyzer#getDefaultTargetResolution().

Poprawki błędów

  • Rozwiązano problem z przechwytywaniem obrazu w przypadku Alps k61v1_basic_ref. Zdjęte zdjęcia JPEG z HAL mają nieprawidłowe metadane EXIF. Metadane Exif nie zawierają tagu 0xffd9 ani 0xffda, aby ExifInterface poprawnie przeanalizował atrybuty. Aby obejść ten problem, spróbuj uchwycić obrazy w formacie YUV, a następnie skompresować je do formatu JPEG. (I45abb)

Wersja 1.2.0-alpha04

27 lipca 2022 roku

androidx.camera:camera-*:1.2.0-alpha04 został zwolniony. Wersja 1.2.0-alpha04 zawiera te commity.

Zmiany w interfejsie API

  • Zmień nazwę ImageAnalysis.Analyzer#getTargetResolutionOverride() na ImageAnalysis.Analyzer#getDefaultTargetResolution(). Zmieniono też zachowanie, tak aby wartość zwracana przez tę metodę mogła być zastąpiona wartością z ImageAnalysis#setTargetResolution(). (If1d36)
  • Interfejs API umożliwiający ustawienie metadanych lokalizacji w zapisanym filmie. Obiekt android.location.Location można skonfigurować za pomocą nowego interfejsu API androidx.camera.video.OutputOptions.Builder.setLocation(Location). (I313a0, b/204197544)

Poprawki błędów

  • Rozwiązanie problemu z robieniem zdjęć z podglądem odłączania (Ie70b6, b/235119898)
  • Rozwiązaliśmy problem z zawieszaniem się 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.

androidx.camera:camera-*:1.2.0-alpha03 został zwolniony. Wersja 1.2.0-alpha03 zawiera te komisy.

Zmiany w interfejsie API

  • Usunięto eksperymentalną adnotację dla ImageAnalysis.AnalyzerMLKitAnalyzer. (I0ff22)

Poprawki błędów

  • Dodano domyślny czas oczekiwania na automatyczne wyostrzanie wynoszący 5000 ms, który spowoduje zakończenie części AF z wartością isFocusSuccessful false, jeśli FocusMeteringAction nie zostanie anulowany i część AF nie zostanie zbliżona w czasie trwania. (Ibc2e3)
  • Rozwiązanie problemu z robieniem zdjęć z podglądem odłączenia (I1d3a2, b/235119898)
  • Włączono zaawansowane rozszerzenie i zaktualizowano wersję interfejsu obsługi rozszerzeń CameraX do 1.2 (I92256).

Wersja 1.2.0-alpha02

1 czerwca 2022 r.

androidx.camera:camera-*:1.2.0-alpha02 został zwolniony. Wersja 1.2.0-alpha02 zawiera te commity.

Nowe funkcje

  • Udostępnij interfejs CameraX Zero-Shutter Lag API jako eksperymentalny.

Zmiany w interfejsie API

  • Dodaj nowy tryb przechwytywania CAPTURE_MODE_ZERO_SHUTTER_LAGImageCapture i dodaj isZslSupportedCameraInfo, aby zapytać o możliwości urządzenia. CAPTURE_MODE_ZERO_SHUTTER_LAG ma zapewnić minimalne opóźnienie w przypadku natychmiastowego przechwytywania. Jest ona realizowana na podstawie pierścieniowego bufora, który przechowuje tymczasowe wyniki przechwytywania do późniejszego ponownego przetwarzania, gdy użytkownik naciska przyciski, aby robić zdjęcia. Jeśli {@link VideoCapture} jest powiązany lub tryb lampy błyskowej nie jest WYŁĄCZONY albo rozszerzenie OEM jest WŁĄCZONE, ten tryb zostanie wyłączony automatycznie. (I9ae74)
  • Dodaj metodę ImageAnalysis.getBackgroundExecutor() (Icc945)

Poprawki błędów

  • Naprawiono błąd ImageCapture – metoda takePicture wyłącza latarkę na zgłoszonych urządzeniach. (Ib5eb5, b/228272227)
  • Usunęliśmy błąd, który powodował, że AssertionError nie było obsługiwane podczas pobierania właściwości CONTROL_ZOOM_RATIO_RANGE (/Ia248a, b/231701345).

Wersja 1.2.0-alpha01

18 maja 2022 r.

androidx.camera:camera-*:1.2.0-alpha01 został zwolniony. Wersja 1.2.0-alpha01 zawiera te commity.

Nowe funkcje

  • Nowa biblioteka camera-mlkit-vision jest dostępna

Poprawki błędów

  • Naprawiono błąd, który powodował, że QualitySelector nie nagrywało filmów w jakości 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 kamerą o pełnym lub wyższym poziomie sprzętu. Strategia zastępcza QualitySelector powoduje, że VideoCapture nieprawidłowo uzyskuje rozdzielczość FHD. W przypadku tej kombinacji zastosowań rozdzielczość UHD jest obsługiwana i należy ją zastosować. (I0e788, b/230651237)
  • Naprawiono błąd NullPointerException w wersji ImageCapture.takePicture(). (I92366, b/230454568, b/229766155)
  • Poprawka zachowania asynchronicznego wstrzymywania 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.

androidx.camera:camera-*:1.1.0 został zwolniony. Wersja 1.1.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.0.0

  • 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 programistom śledzenie wersji i zmniejszy złożoność dużych matryc zgodności wersji.
  • Wprowadziliśmy nowe publiczne interfejsy API i funkcje, w tym:
  • Dodaj oficjalną bibliotekę filmów z aparatu, aby umożliwić nagrywanie filmów.
  • Możliwość konwersji YUV na RGB i rotacji (ImageAnalysis.Builder.setOutputImageRotationEnabled i setOutputImageFormat)
  • Obsługa trybu wielookiennego przez umożliwienie aplikacjom CameraX wznowienia korzystania z aparatu, gdy zostanie on przerwany przez inną aplikację i ponowne ustawienie ostrości.
  • Poprawiamy działanie aplikacji CameraX na składanych urządzeniach, rozwiązując niektóre problemy z podglądem.
  • Dodano interfejs API CameraState, który będzie dostępny za pomocą interfejsu CameraInfo.
  • Dodano interfejs API ProcessCameraProvider.getAvailableCameraInfos() do bezpośredniego pobierania informacji o dostępnych kamerach
  • Format wyjściowy JPEG dla ImageCapture#OnImageCapturedCallback, gdy włączone są rozszerzenia.
  • Dodano interfejs API isFocusMeteringSupportedCameraInfo, który umożliwia aplikacjom sprawdzenie, czy dany FocusMeteringAction jest obsługiwany przez bieżącą kamerę.
  • Wyświetlany interfejs API getResolutionInfo, który udostępnia informacje o rozdzielczości w przypadku podglądu, ImageCaptureImageAnalysis.
  • Dodano nowy interfejs API ImageCapture.Builder#setJpegQuality, który umożliwia zmianę jakości kompresji wyjściowego obrazu JPEG podczas robienia zdjęć.
  • Dodano do publicznego interfejsu API funkcję CameraSelector#filter, która umożliwia filtrowanie listy CameraInfos na podstawie CameraSelector.
  • Dodano Camera2CameraControl.clearCaptureRequestOptions do wyczyszczania istniejących opcji żądania przechwytywania.
  • Dodano eksperymentalny interfejs API do korzystania z CameraController z zewnętrznych bibliotek do przetwarzania obrazu, np. MLKit.
  • Dodano eksperymentalny interfejs API CameraInfo#getCameraSelector(), który zwraca CameraSelector unikalny dla danego aparatu.
  • kilka eksperymentalnych interfejsów API zostało awansowanych do rangi oficjalnych interfejsów API;
  • W przypadku interfejsów eksperymentalnych zastąpiono adnotację @Experimental adnotacją @RequiresOptIn. Do wywoływania eksperymentalnych interfejsów API użyj adnotacji androidx.annotation.OptIn zamiast wycofanej adnotacji androidx.annotation.experimental.UseExperimental.
  • Zaktualizowaliśmy te eksperymentalne interfejsy API do wersji oficjalnych: CameraXConfig.Builder#setAvailableCamerasLimiter(), CameraXConfig.Builder#setMinimumLoggingLevel(), CameraXconfig.Builder#setSchedulerHandler(), CameraXConfig#getAvailableCamerasLimiter(), CameraXConfig#getMinimumLoggingLevel(), CameraXConfig#getCameraExecutor(), CameraXConfig#getSchedulerHandler().
  • @ExperimentalCameraFilter Interfejsy API
  • eksperymentalne interfejsy API do kompensacji ekspozycji.
  • Promowanie eksperymentalnego interfejsu API UseCaseGroup dla modułu camera-core, modułu camera-lifecycle i modułu camera-video. Dodano parametry ViewPort#getLayoutDirection, ViewPort.Builder#setLayoutDirectionViewPort.Builder#setScaleType do dostosowywania widoku.
  • ExperimentalUseCaseGroupLifecycle awansował do rangi oficjalnych publicznych interfejsów API.
  • Zmiany w istniejących interfejsach API
  • Renamed MediaStoreOutputOptions.getCollection, by MediaStoreOutputOptions.getCollectionUri.
  • Aby ograniczyć ilość informacji, nazwa ActiveRecording została zmieniona na „Nagrywanie”.
  • Zmieniliśmy interfejs API dla twórców 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 ustawiono tryb ImageCapture#CAPTURE_MODE_MAX_QUALITY.
  • Konfiguracja kodeka nie powiodła się z powodu zamykania nagrywania wideo
  • Naprawiono rozciągnięty format obrazu podglądu/filmu podczas nagrywania w trybie 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 dotykiem (startFocusAndMetering), gdy tryb lampy błyskowej był ustawiony na „auto” lub „zawsze włączona” w środowisku o słabym oświetleniu.

Wersja 1.1.0-rc02

1 czerwca 2022 r.

androidx.camera:camera-*:1.1.0-rc02 został zwolniony. Wersja 1.1.0-rc02 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono błąd NullPointerException w wersji ImageCapture.takePicture(). (I92366, b/230454568, b/229766155)
  • Usunęliśmy błąd polegający na tym, że podczas pobierania właściwości CONTROL_ZOOM_RATIO_RANGE nie był obsługiwany parametr CONTROL_ZOOM_RATIO_RANGE.AssertionError (Ia248a, b/231701345)

Wersja 1.1.0-rc01

11 maja 2022 roku

androidx.camera:camera-*:1.1.0-rc01 został zwolniony. Wersja 1.1.0-rc01 zawiera te zatwierdzenia.

Nowe funkcje

  • Wydaj pierwszą wersję 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ł uwalniany, gdy VideoCapture<Recorder> był odłączony, co powodowało, że kolejne użycia VideoCapture<Recorder> kończyły się niepowodzeniem podczas nagrywania za pomocą MediaCodec.CodecException, zwłaszcza na urządzeniach z poziomem interfejsu API 21–22. (Ie7f68)
  • Fix captured images of CameraExtensionsActivity do not be deleted in ImageCaptureTest

Wersja 1.1.0-beta03

6 kwietnia 2022 roku

androidx.camera:camera-*:1.1.0-beta03 został zwolniony. Wersja 1.1.0-beta03 zawiera te commity.

Zmiany w interfejsie API

  • Zmiana konstruktora CaptureRequestOptions w taki sposób, aby był on ograniczony. (I261b6)
  • Dodano eksperymentalny interfejs API do korzystania z CameraController z zewnętrzymi bibliotekami do przetwarzania obrazów, np. MLKit (I4ea71).

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że podgląd w trybie PreviewView był wyświetlany w poziomie, gdy nie udawało się ponownie uruchomić aktywności po obróceniu urządzenia w trybie wielookiennym. (I1ea36, b/223488673)
  • Rozwiązanie problemu z wielozadaniowością, który powodował, że po przywróceniu fokusu do aplikacji nie można było wznowić działania aparatu, gdy (1) inna aplikacja o wysokiej priorytecie otwierała inny aparat (2) urządzenie to Samsung z Androidem 12. (I7e9f2)
  • obejście problemu w przypadku urządzeń, które ulegają awarii podczas sprawdzania dostępności lampy błyskowej; Na tych urządzeniach nie będzie dostępnego trybu latarki. (If26a3, b/216667482)
  • Rozwiązanie problemu AbstractMethodError, który występował, gdy aplikacje używały rozszerzeń i włączały Proguard. (I7cbaf, b/222726805)
  • Wymuszenie wyłączenia trybu rozszerzenia bokeh na urządzeniu Motorola razr 5G, co spowoduje problem z czarnym ekranem podglądu. (I35d49)
  • Naprawiono problem z brakiem synchronizacji dźwięku i obrazu po wstrzymaniu i wznowieniu odtwarzania na niektórych urządzeniach Samsunga z wersją API 29 lub starszą. (I64622, b/202798609, b/202798572)
  • Rozwiązano problem z brakiem synchronizacji dźwięku i obrazu po wstrzymaniu i wznowieniu odtwarzania na urządzeniu Sony G3125. (I2a1a5, b/202799148)
  • Naprawiono błąd, który powodował awarię, gdy Narzędzie do nagrywania napotkało błąd InvalidConfigException. Ta poprawka zapobiega tylko awariom aplikacji, ale nie rozwiązuje przyczyny InvalidConfigException. Jeśli Recorder nadal nie można skonfigurować, aplikacje będą otrzymywać wywołania zwrotne błędu po rozpoczęciu nagrywania. (I89c29, b/213617227)

Darowizna zewnętrzna

  • zaktualizowano :compose:ui:ui-test api (updateApi) ze względu na migrację test-coroutines-lib (I3366d)

Wersja 1.1.0-beta02

23 lutego 2022 r.

androidx.camera:camera-*:1.1.0-beta02 został zwolniony. Wersja 1.1.0-beta02 zawiera te commity.

Zmiany w interfejsie API

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

Poprawki błędów

  • Rozwiązanie problemu z rozciągniętym podglądem na Oppo Find N (I7d004)
  • Rozwiązaliśmy problem z zniekształceniem podglądu na Galaxy J7 Prime. (I4c500)
  • Użyj zgodnego bitrate’u, aby znaleźć koder wideo. (d969052)

Wersja 1.1.0-beta01

26 stycznia 2022 r.

androidx.camera:camera-*:1.1.0-beta01 został zwolniony. Wersja 1.1.0-beta01 zawiera te commity.

Nowe funkcje

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

Zmiany w interfejsie API

  • Dodano Camera2CameraControl.clearCaptureRequestOptions do wyczyszczania dotychczasowych opcji żądania przechwytywania. (Ifa07d)

Poprawki błędów

  • Naprawiono błąd, który powodował awarię podczas nagrywania filmów na niektórych urządzeniach z Androidem w wersji O(interfejs API 26). (I88fdf, b/212328261)
  • Rozwiązaliśmy problem z nieprawidłowym obszarem AF podczas używania cameraControl#startFocusAndMetering() na przednim aparacie urządzeń Samsung (Ifbf59, b/210548792)
  • Używanie latarki jako lampy błyskowej w Pixelu 3a/Pixelu 3a XL w celu zwiększenia szybkości i jakości zdjęć w ciemnych warunkach (Ib12b6, b/211474332)
  • Umożliwia aplikacjom wznowienie korzystania z kamery, gdy zostanie ono przerwane przez inną aplikację o wyższym priorytecie w trybie wielookiennym i ponowne skupienie się na aplikacji. Pamiętaj, że ze względu na problemy z ramką może wystąpić opóźnienie(od 1 do 10 sekund lub dłużej) między zmianą ostrości a otwarciem aparatu. (I4d092)

Wersja 1.1.0-alpha12

15 grudnia 2021 roku

androidx.camera:camera-*:1.1.0-alpha12 został zwolniony. Wersja 1.1.0-alpha12 zawiera te commity.

Zmiany w interfejsie API

  • Usunięto niepotrzebne adnotacje @RequiresApi(21) z klas i interfejsów wewnętrznych. (I8e286, b/204917951)
  • Stałe jakości i stałe strategii zapasowej klasy QualitySelector zostały zmienione, aby były reprezentowane przez obiekty klasy. Na przykład QualitySelector.QUALITY_HD jest zamieniane na Quality.HD, a QualitySelector.FALLBACK_STRATEGY_LOWER – 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 się odnosić do kolejności listy jakości danych wejściowych zamiast do kolejności utworzonej przez QualitySelector.Procedure. Zajęcia QualitySelector.Procedure zostały usunięte. (I43343)
  • Detektor zdarzeń PendingRecording.withEventListener() został usunięty, a teraz musi być przekazywany do detektora PendingRecording.start(). To wymaganie dotyczące detektorów zdarzeń ma zachęcać do obsługi błędów asynchronicznych zgłaszanych w zdarzeniu VideoRecordEvent.Finalize. (I1e71d)
  • Aby zmniejszyć ilość informacji, nazwa ActiveRecording została zmieniona na Recording. (I77ceb)

Poprawki błędów

  • Rozwiązano problem polegający na tym, że zdjęcia wykonane w trybie FLASH_AUTO są niedoświetlone w ciemnych warunkach na Pixelu 3a i Pixelu 3a XL (I13f19, b/205373142).
  • Zawsze używaj najnowszego rozmiaru wyświetlania do określenia podglądu Resolution. (I4a694)
  • Odfiltrowano kamery, które nie mają REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE. Kamery z REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE mają minimalny zestaw funkcji, który jest obsługiwany przez każde urządzenie z kamerą. Kamera bez REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE może być kamerą do obsługi funkcji specjalnych 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 te kamery powinny być odfiltrowywane, aby zapobiec nieprawidłowemu użyciu. (Ib8cda)
  • Funkcja CameraSelector#filter nie zwraca już błędu IllegalArgumentException, gdy zbiór wyników jest pusty. (I27804)
  • Do wybierania ustawień kodera na podstawie profili określonych przez producenta używane są teraz bardziej inteligentne heurystyki. (Iaeef0)
  • Po rozpoczęciu nagrywania filmów w jakości UHD na Pixelu 1 podgląd będzie zawierał przeplatane kolorowe linie. (I833c6, b/205340278)

Wersja 1.1.0-alpha11

17 listopada 2021 r.

androidx.camera:camera-*:1.1.0-alpha11 został zwolniony. Wersja 1.1.0-alpha11 zawiera te commity.

Zmiany w interfejsie API

  • Dodano do publicznego interfejsu API metodę CameraSelector#filter, która umożliwia filtrowanie listy obiektów CameraInfo na podstawie obiektu CameraSelector. (I105d0)
  • Dodaj interfejs API setOutputImageRotationEnabled do konfiguracji ImageAnalysis. Użytkownik może włączyć obrót dla bufora obrazu YUV/RGB. Stopień obrotu to obrót względny obliczony na podstawie obrotu czujnika i docelowego obrotu, aby obraz był widoczny z przodu.

  • Dodaj interfejs API setOutputImageRotationEnabled do konfiguracji ImageAnalysis. Użytkownik może włączyć obrót dla bufora obrazu YUV/RGB. Stopień obrotu to obrót względny obliczony na podstawie obrotu czujnika i docelowego obrotu, aby obraz był widoczny z przodu.

    Dodaj interfejs API getSensorToBufferTransformMatrix w ImageInfo. Zwrócona tablica 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). Tablicy można używać do mapowania współrzędnych z jednego {UseCase} na inne. Na przykład mapowanie współrzędnych twarzy wykrytej za pomocą ImageAnalysis na podgląd. (I9ff1e)

  • Dodano nowe API ImageCapture.Builder#setJpegQuality, aby umożliwić zmianę jakości kompresji obrazu JPEG podczas robienia zdjęć. (I8dcf4)

  • Zmieniono nazwę 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 skupiania ostrości przez dotknięcie (startFocusAndMetering), gdy tryb lampy błyskowej był ustawiony na „auto” lub „zawsze_włączona” w środowisku o słabym oświetleniu. (Id4c11)
  • Wyłączenie HDR+ na Pixelu 2 XL / Pixelu 3 XL w trybie MINIMIZE_LATENCY w celu zmniejszenia opóźnienia. (Ib6270, b/203505523)

Darowizna zewnętrzna

Wersja 1.1.0-alpha10

13 października 2021 r.

androidx.camera:camera-*:1.1.0-alpha10 został zwolniony. Wersja 1.1.0-alpha10 zawiera te commity.

Nowe funkcje

  • Opublikowano androidx.camera:camera-video:1.1.0-alpha10 jako pierwszą wersję alfa dla usługi wideo. W późniejszych wersjach zostanie rozwiązanych kilka znanych problemów.

Zmiany w interfejsie API

  • Dodano adnotację @RequiresApi(21) do wszystkich klas CameraX oraz usunięto minSdkVersion z pliku AndroidManifest.xml. Dzięki temu biblioteka camera-core będzie można łatwo zintegrować z aplikacjami, w których parametr minSdkVersion ma wartość mniejszą niż 21, ale które mają warunkowo używać ścieżek kodu korzystających z interfejsu API 21 lub nowszego. W przypadku aplikacji z parametrem minSdkVersion 21 lub nowszym nie musisz nic robić. (Ie7f2e, b/200599470)

Poprawki błędów

  • Wyjątek InitializationException powoduje, że aplikacja może prawidłowo obsłużyć błąd AssertionError występujący podczas tworzenia obiektu CameraCharacteristics. (Ibec79)

Wersja 1.1.0-alpha09

29 września 2021 r.

Funkcje androidx.camera:camera-camera2:1.1.0-alpha09, androidx.camera:camera-core:1.1.0-alpha09androidx.camera:camera-lifecycle:1.1.0-alpha09 są dostępne. Wersja 1.1.0-alpha09 zawiera te commity.

Zmiany w interfejsie API

  • Oznaczenie ExperimentalUseCaseGroup zostało usunięte, ponieważ interfejsy API nie są już eksperymentalne. (I01ef5)

Poprawki błędów

  • Rozwiązanie problemu polegającego na tym, że zdjęcia zrobione w trybie MAXIMIZE_QUALITY są rozmyte. (I173a9, b/193823892)
  • Rozwiązano problem z Samsung Galaxy J5, w którym aparat zacinał się po zrobieniu zdjęć z włączoną lub automatyczną lampą błyskową w ciemnym otoczeniu (I3aab9).
  • Gdy przycinanie jest wymagane w przypadku ImageCapture, kompresowanie wynikowego przyciętego obrazu z określonym poziomem jakości JPEG zgodnie z ustawionym trybem rejestracji. Jeśli tryb rejestrowania to CAPTURE_MODE_MINIMIZE_LATENCY, jakość kompresji JPEG będzie wynosić 95. Jeśli tryb rejestrowania to CAPTURE_MODE_MAXIMIZE_QUALITY, jakość kompresji JPEG będzie wynosić 100. (Ieb37c, b/142856426)

Wersja 1.1.0-alpha08

18 sierpnia 2021 r.

Funkcje androidx.camera:camera-camera2:1.1.0-alpha08, androidx.camera:camera-core:1.1.0-alpha08androidx.camera:camera-lifecycle:1.1.0-alpha08 są dostępne. 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 wybrana zostanie opcja 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

  • Rozwiązanie problemu polegający na tym, że ekran podglądu na telefonie Huawei P20 Lite jest zbyt jasny. Ten problem występuje tylko wtedy, gdy używane są określone specjalne rozdzielczości podglądu w połączeniu z dużym powiększeniem. (Idefce, b/192129158)
  • Rozwiązaliśmy problem, który powodował, że lampka błyskowa nie działała na niektórych urządzeniach, gdy po ustawieniu lampy błyskowej na FLASH_MODE_ON wkrótce nastąpiło zrobienie zdjęcia. (Ieb49b)
  • Rozwiązaliśmy problem polegający na tym, że podgląd zatrzymywał się na chwilę podczas robienia zdjęć, jeśli funkcje VideoCapture, ImageCapture i Preview były powiązane. (I56197, b/193864120)
  • Umożliwia funkcji ImageAnalysis wybranie rozdzielczości większej niż 1080p. Urządzenie o poziomie wyższym niż LIMITED może obsługiwać rozmiar RECORD dla ImageAnalysis, gdy jest połączone z Preview i ImageCapture. Wybrana rozdzielczość dla ImageCapture musi też być rozdzielczością rozmiaru REJESTRACJI. Aby wybrać rozdzielczość rozmiaru RECORD dla ImageAnalysis, należy ustawić docelową rozdzielczość rozmiaru RECORD zarówno w ImageCapture, jak i w ImageAnalysis. Oznacza to, że aplikacja wyraźnie rozumie kompromis i preferuje większą rozdzielczość dla ImageAnalysis niż dla ImageCapture. 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 przez urządzenie z kamerą, zgodnie z profilem CamcorderProfile. Rozmiar MAKSYMALNY odnosi się do maksymalnej rozdzielczości wyjściowej urządzenia do rejestrowania obrazu w danym formacie lub do wartości docelowej z metody StreamConfigurationMap.getOutputSizes(int). (I1ee97, b/192911449)
  • Dodaj informacje Exif do zrobionego zdjęcia. (I01ff0, b/193342619)
  • W ImageCapture zwraca identyfikator URI zapisanego obrazu, jeśli lokalizacja zapisu to Plik. (Ib5b49, b/149241379)
  • Rozwiązaliśmy problem, który powodował, że zdjęcia z włączonym fleszem były ciemne na wielu urządzeniach. (I4e510)

Wersja 1.1.0-alpha07

21 lipca 2021 r.

Funkcje androidx.camera:camera-camera2:1.1.0-alpha07, androidx.camera:camera-core:1.1.0-alpha07androidx.camera:camera-lifecycle:1.1.0-alpha07 są dostępne. Wersja 1.1.0-alpha07 zawiera te commity.

Poprawki błędów

  • Rozwiązano problem z Samsungiem Galaxy Note 5, w którym aparat zacinał się po zrobieniu zdjęć ze włączoną lub automatyczną lampą błyskową w ciemnym otoczeniu (If6871).
  • Rozwiązaliśmy problem YuvToJpegProcessor EOFException, który występował, gdy włączony był tryb rozszerzenia, a ustawiono tryb ImageCapture#CAPTURE_MODE_MAX_QUALITY. (I538bd, b/192017012)

Wersja 1.1.0-alpha06

30 czerwca 2021 r.

Funkcje androidx.camera:camera-camera2:1.1.0-alpha06, androidx.camera:camera-core:1.1.0-alpha06androidx.camera:camera-lifecycle:1.1.0-alpha06 są dostępne. Wersja 1.1.0-alpha06 zawiera te commity.

Zmiany w interfejsie API

  • Promowanie eksperymentalnych interfejsów API do kompensacji ekspozycji w przypadku biblioteki camera-core (I08ee8)
  • Dodano interfejs API isFocusMeteringSupported w informacjach o aparacie, który umożliwia aplikacjom sprawdzenie, czy podana akcja FocusMeteringAction jest obsługiwana przez bieżący aparat. (Ib45ae, b/188606490)
  • Udostępniliśmy interfejs getResolutionInfo API, aby udostępnić informacje o rozdzielczości dla funkcji Podgląd, Przechwytywanie obrazu i Analiza obrazu. (I2b613, b/188600718)
  • Uaktualniliśmy te eksperymentalne interfejsy API do oficjalnych: CameraXConfig.Builder#setAvailableCamerasLimiter(), CameraXConfig.Builder#setMinimumLoggingLevel(), CameraXconfig.Builder#setSchedulerHandler(), CameraXConfig#getAvailableCamerasLimiter(), CameraXConfig#getMinimumLoggingLevel(), CameraXConfig#getCameraExecutor(), CameraXConfig#getSchedulerHandler(). (I2ade2)
  • Udostępniono interfejs CameraProvider, aby umożliwić dostęp do zestawu kamer. (I1a7b1)
  • Promowanie eksperymentalnego interfejsu UseCaseGroup API w przypadku interfejsów camera-core, camera-lifecycle i camera-video. Dodano parametry ViewPort#getLayoutDirection, ViewPort.Builder#setLayoutDirectionViewPort.Builder#setScaleType do dostosowywania widoku. (I7cee8)

Wersja 1.1.0-alpha05

2 czerwca 2021 r.

Funkcje androidx.camera:camera-camera2:1.1.0-alpha05, androidx.camera:camera-core:1.1.0-alpha05androidx.camera:camera-lifecycle:1.1.0-alpha05 są dostępne. Wersja 1.1.0-alpha05 zawiera te commity.

Zmiany w interfejsie API

  • Usunięto zajęcia Camera2CameraFilter. Sugerować wybór kamery za pomocą CameraFilter i pobieranie informacji z CameraCharacteristics lub innych informacji związanych z Camera2 za pomocą Camera2CameraInfo (w razie potrzeby). (Ib887c)
  • ExperimentalCameraFilter Interfejsy API nie są już w fazie eksperymentalnej i stają się oficjalnymi interfejsami API. Można ich używać bez adnotacji OptIn. (I4bc94)
  • Dodano interfejs API stanu aparatu, który jest dostępny za pomocą CameraInfo#getCameraState(). (Ia86b4)
  • Dodano eksperymentalny interfejs API CameraInfo#getCameraSelector(), który zwraca obiekt CameraSelector, który jest unikalny dla danej kamery (I77f9f).

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że zwracany przez ListenableFuture w setZoomRatio i setLinearZoom nie był wykonywany na niektórych urządzeniach z Androidem 11 (I716d7).
  • przyspieszenie przełączania kamery i zmniejszenie częstotliwości występowania błędów w urządzeniu z kamerą (I34c99);
  • Zmieniono ExperimentalUseCaseGroupLifecycle na ExperimentalUseCaseGroup. (I3b2ef, b/159033688)

Wersja 1.1.0-alpha04

21 kwietnia 2021 r.

Funkcje androidx.camera:camera-camera2:1.1.0-alpha04, androidx.camera:camera-core:1.1.0-alpha04androidx.camera:camera-lifecycle:1.1.0-alpha04 są dostępne. Wersja 1.1.0-alpha04 zawiera te commity.

Poprawki błędów

  • Naprawiono wyciek pamięci spowodowany przez dostęp do tej samej kolekcji przez wiele wątków jednocześnie. Wyciek pamięci może spowodować, że aktywność lub fragment zostaną zachowane przez instancję podglądu. (I7b4b8)
  • W przypadku interfejsów API w wersji eksperymentalnej zastąpiono adnotację @Experimental adnotacją @RequiresOptIn. Do wywoływania eksperymentalnych interfejsów API używaj interfejsu androidx.annotation.OptIn zamiast wycofanego androidx.annotation.experimental.UseExperimental. (Iff226)
  • Naprawiono błąd, który powodował, że aplikacja ImageCapture z włączoną lub automatyczną lampą błyskową robiła na telefonie Samsung Galaxy S7 wyblakłe zdjęcia. (I30001)
  • Dodano interfejs CameraState API, który będzie dostępny za pośrednictwem interfejsu CameraInfo. (I75392)

Wersja 1.1.0-alpha03

24 marca 2021 r.

Funkcje androidx.camera:camera-camera2:1.1.0-alpha03, androidx.camera:camera-core:1.1.0-alpha03androidx.camera:camera-lifecycle:1.1.0-alpha03 są dostępne. Wersja 1.1.0-alpha03 zawiera te commity.

Poprawki błędów

  • Format wyjściowy JPEG dla ImageCapture#OnImageCapturedCallback, gdy włączone są tryby rozszerzeń. (I0d7b1)
  • Poprawiono błąd inicjowania na urządzeniach UMIDIGI BISON (I57d9e, b/180818665).
  • Naprawiono rozciągnięty podgląd Samsunga A3 w PreviewView. (Iacb30, b/180121821)

Wersja 1.1.0-alpha02

24 lutego 2021 r.

Funkcje androidx.camera:camera-camera2:1.1.0-alpha02, androidx.camera:camera-core:1.1.0-alpha02androidx.camera:camera-lifecycle:1.1.0-alpha02 są dostępne. Wersja 1.1.0-alpha02 zawiera te commity.

Zmiany w interfejsie API

  • Dodano interfejs API ProcessCameraProvider.getAvailableCameraInfos() do bezpośredniego pobierania informacji o dostępnych kamerach, które są albo wszystkimi kamerami urządzenia, albo wybranymi przez CameraSelector podany w pliku CameraXConfig.Builder.setAvailableCamerasLimiter(CameraSelector). (Ieac08)

Poprawki błędów

  • CameraX próbuje teraz wymusić otwarcie aparatu przy pierwszej próbie, co może spowodować przejęcie aparatu przez CameraX od innych klientów, jeśli ma on wyższy priorytet. (Iab069, b/175820568)
  • Usunięto błąd testu Robolectric, który występował, gdy w CameraXConfig używano setAvailableCamerasLimiter. (Ice307)
  • Ta zmiana przechwytuje wyjątek, gdy kolejka obrazów jest maksymalnie wykorzystana w ImageAnalysis. Zamiast awarii może się zdarzyć, że inne przypadki użycia będą działać wolno lub będą zamarzać, np. zamarzanie podglądu. (Ic12da, b/175851631)
  • Naprawiono ExtensionsErrorListener, aby zgłaszać błędy, gdy tylko podgląd lub ImageCapture są powiązane. (I5ae39)
  • Usunięto regres wydajności ImageCapture przez usunięcie weryfikacji zapisanej lokalizacji obrazu przed zrobieniem zdjęcia. Jeśli po wprowadzeniu tej zmiany miejsce zapisu jest nieprawidłowe, odpowiedź o błędzie będzie się pojawiać dłużej, ponieważ aplikacja będzie próbować zapisać obraz po zrobieniu zdjęcia. (I1fd4e, b/177061560)
  • Rozwiązano problem regresji wydajności ImageCapture w przypadku typu „Plik” w opcji OutputFileOptions. (I5164a, b/177061560)
  • Dokumentacja została zaktualizowana, aby odradzać używanie funkcji ProcessCameraProvider.configureInstance(...) z kodu biblioteki. (Ib8a9f)

Wersja 1.1.0-alpha01

27 stycznia 2021 r.

Funkcje androidx.camera:camera-camera2:1.1.0-alpha01, androidx.camera:camera-core:1.1.0-alpha01androidx.camera:camera-lifecycle:1.1.0-alpha01 są dostępne. Wersja 1.1.0-alpha01 zawiera te commity.

Poprawki błędów

  • obejście problemu polegające na tym, że od czasu do czasu dane obrazu w formacie JPEG są uszkodzone w przypadku tylnego aparatu w urządzeniu SM-G930T; (I52001, b/159831206)
  • Rozwiązaliśmy problem 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. (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.

Funkcje androidx.camera:camera-camera2:1.0.2, androidx.camera:camera-core:1.0.2androidx.camera:camera-lifecycle:1.0.2 są dostępne. Wersja 1.0.2 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązanie problemu polegającego na tym, że zdjęcia zrobione w trybie MAXIMIZE_QUALITY są rozmyte. (I173a9, b/193823892)
  • Rozwiązaliśmy problem, który powodował, że na wielu urządzeniach obrazy z włączonym fleszem były ciemne. (I4e510)

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

Wersja 1.0.1

21 lipca 2021 r.

Funkcje androidx.camera:camera-camera2:1.0.1, androidx.camera:camera-core:1.0.1androidx.camera:camera-lifecycle:1.0.1 są dostępne. Wersja 1.0.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że zwracana przez funkcję ListenableFuture wartość w funkcji setZoomRatiosetLinearZoom nie może zostać wykonana 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 i wyświetlał czarny podgląd. (I34c99)

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

Wersja 1.0.0

5 maja 2021 roku

Funkcje androidx.camera:camera-camera2:1.0.0, androidx.camera:camera-core:1.0.0androidx.camera:camera-lifecycle:1.0.0 są dostępne. Wersja 1.0.0 zawiera te zatwierdzenia.

Najważniejsze funkcje wersji 1.0.0

  • CameraX obsługuje Podgląd, ImageCaptureAnalysis.
  • CameraX zarządza cyklem życia aparatu za pomocą łatwego w użyciu interfejsu API.
  • CameraX ma zapewnić warstwę zgodności, która rozwiązuje wiele problemów w ekosystemie aparatów na Androidzie.

Znane problemy

Wersja 1.0.0-rc05

21 kwietnia 2021 r.

Funkcje androidx.camera:camera-camera2:1.0.0-rc05, androidx.camera:camera-core:1.0.0-rc05androidx.camera:camera-lifecycle:1.0.0-rc05 są dostępne. Wersja 1.0.0-rc05 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono błąd, który powodował, że aplikacja ImageCapture z włączoną lub automatyczną lampą błyskową robiła na telefonie Samsung Galaxy S7 wyblakłe zdjęcia. (I30001)

Wersja 1.0.0-rc04

24 marca 2021 r.

Funkcje androidx.camera:camera-camera2:1.0.0-rc04, androidx.camera:camera-core:1.0.0-rc04androidx.camera:camera-lifecycle:1.0.0-rc04 są dostępne. Wersja 1.0.0-rc04 zawiera te zatwierdzenia.

Poprawki błędów

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

Wersja 1.0.0-rc03

24 lutego 2021 r.

Funkcje androidx.camera:camera-camera2:1.0.0-rc03, androidx.camera:camera-core:1.0.0-rc03androidx.camera:camera-lifecycle:1.0.0-rc03 są dostępne. Wersja 1.0.0-rc03 zawiera te zatwierdzenia.

Poprawki błędów

  • Napraw błąd formatowania w dokumencie ProcessCameraProvider#getInstance
  • Usunięto błąd testu Robolectric występujący podczas używania w CameraXConfig metody setAvailableCamerasLimiter.
  • Usunięto regres wydajności ImageCapture przez usunięcie weryfikacji zapisanej lokalizacji obrazu przed zrobieniem zdjęcia. Po wprowadzeniu tej zmiany, jeśli miejsce docelowe zapisu jest nieprawidłowe, otrzymanie odpowiedzi o błędzie zajmie więcej czasu, ponieważ aplikacja będzie próbować zapisać obraz po zrobieniu zdjęcia.
  • Ta zmiana przechwytuje wyjątek, gdy kolejka obrazów jest zapełniona w ImageAnalysis. Zamiast awarii możesz zauważyć inne problemy, np. zacinanie się lub spowolnienie działania.
  • obejście problemu polegające na tym, że sporadycznie dane obrazu w formacie JPEG są uszkodzone w przypadku tylnego aparatu w urządzeniu SM-G930T; (I52001, b/159831206)
  • Ta zmiana przechwytuje wyjątek, gdy kolejka obrazów jest zapełniona w ImageAnalysis. Zamiast awarii może się zdarzyć, że inne przypadki użycia będą się zacinać lub działać wolno, np. zablokowana lub wolno działająca podgląd. (Ic12da, b/175851631)
  • Usunięto błąd testu Robolectric, który występował, gdy w CameraXConfig używano setAvailableCamerasLimiter. (Ice307)
  • Usunięto regres wydajności ImageCapture przez usunięcie weryfikacji zapisanej lokalizacji obrazu przed zrobieniem zdjęcia. Jeśli po wprowadzeniu tej zmiany miejsce zapisu jest nieprawidłowe, odpowiedź o błędzie będzie się pojawiać dłużej, ponieważ aplikacja będzie próbować zapisać obraz po zrobieniu zdjęcia. (I1fd4e, b/177061560)
  • Rozwiązano problem regresji wydajności ImageCapture w przypadku typu „Plik” w opcji OutputFileOptions. (I5164a, b/177061560)

Wersja 1.0.0-rc02

27 stycznia 2021 r.

Funkcje androidx.camera:camera-camera2:1.0.0-rc02, androidx.camera:camera-core:1.0.0-rc02androidx.camera:camera-lifecycle:1.0.0-rc02 są dostępne. 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)
  • Ograniczenie liczby prób ponownego otwarcia aparatu. Podczas próby naprawienia niektórych problemów z otwieraniem aparatu aplikacja CameraX nie będzie już próbować ponownie otwierać aparatu w nieskończoność. Zamiast tego zaprzestanie prób po 10 sekundach.I435d2

  • Rozwiązaliśmy problem 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. (I2a63c, b/150506192)

Wersja 1.0.0-rc01

16 grudnia 2020 roku

Funkcje androidx.camera:camera-camera2:1.0.0-rc01, androidx.camera:camera-core:1.0.0-rc01androidx.camera:camera-lifecycle:1.0.0-rc01 są dostępne. Wersja 1.0.0-rc01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Zmieniono CameraFilter i Camera2Filter, aby uwzględniały informacje o aparacie. (I6883d)
  • Dodano eksperymentalną klasę Camera2CameraControl, aby umożliwić dynamiczne współdziałanie z interfejsami Camera2. (I45cf3)
  • Zmieniono nazwę Camera2CameraInfo#fromCameraInfo na #from. (Ia2bd6)
  • Dodano do CameraXConfig eksperymentalny interfejs API setAvailableCamerasLimiter, aby umożliwić aplikacjom optymalizację opóźnienia inicjalizacji poprzez unikanie inicjowania nieużywanych kamer. (I6cf88)
  • Dodano metodę eksperymentalną CameraXConfig.Builder#setMinimumLoggingLevel(), która umożliwia ustawienie minimalnego poziomu rejestrowania dzienników w przypadku dzienników CameraX. Jeśli nie jest ustawiony, domyślna wartość to Log#DEBUG. (Ic3245)

Poprawki błędów

  • obejście problemu polegające na tym, aby od czasu do czasu uszkodzone dane obrazu w JPEG-ach na tylnym aparacie SM-G930V. (I5aca5, b/159831206)
  • Rozwiązaliśmy problem, który powodował, ż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 podglądu nie można było zatrzymać, wywołując funkcję 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, & Lifecycle Version 1.0.0-beta12

11 listopada 2020 roku

Funkcje androidx.camera:camera-camera2:1.0.0-beta12, androidx.camera:camera-core:1.0.0-beta12androidx.camera:camera-lifecycle:1.0.0-beta12 są dostępne. Wersja 1.0.0-beta12 zawiera te zatwierdzenia.

Poprawki błędów

  • Wyłączenie automatycznego flesza na urządzeniach Samsung A3 w celu naprawienia błędu podczas robienia zdjęć w trybie automatycznego flesza AE na urządzeniach Samsung A3. (Ia5fe3, b/157535165)
  • Rozwiązaliśmy problem polegający na tym, że podgląd był rozciągnięty na urządzeniach Nexus 4 z Androidem L (poziom interfejsu API 21 i 22). (I4d407, b/158749159)
  • OnImageCapturedCallback#onCaptureSuccess Implementacja klasy podstawowej nie zamyka już obrazu. Ma to na celu zapobieganie nieoczekiwanym działaniom programistów. Deweloperzy nie powinni polegać na metodzie super.onCaptureSuccess do zamykania obrazu. (Ifbf9c)
  • Wersja androidx adnotacji eksperymentalnej została wycofana, aby zapewnić zgodność z Kotlin. Została ona zastąpiona adnotacją RequiresOptIn, a linter obsługujący język Java został zaktualizowany, aby obsługiwał zarówno nową adnotację Kotlin, jak i nową wersję androidx. (I52495, b/151331381)

Camera-Camera2 Wersja 1.0.0-beta11

14 października 2020 r.

androidx.camera:camera-camera2:1.0.0-beta11 został zwolniony. 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łową wartośćCONTROL_ZOOM_RATIO_RANGE. (I62cc6)

Poprawki błędów

  • Rozwiązaliśmy problem NumberFormatException, który występował, gdy identyfikator kamery nie był liczbą całkowitą. (Ib2228)
  • Zmniejszono opóźnienie inicjalizacji CameraX i bindToLifecycle (I61dc5).
  • Tworzenie przypadków użycia nie wymaga inicjalizacji CameraX. Wszystkie konfiguracje specyficzne dla implementacji są ustawiane w UseCase po dołączeniu do instancji aparatu, 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 wystąpienia Camera, chyba że w Builderze lub UseCase ustawiono wartość targetRotation. (I80fcd)

Camera-Core w wersji 1.0.0-beta11

14 października 2020 r.

androidx.camera:camera-core:1.0.0-beta11 został zwolniony. Wersja 1.0.0-beta11 zawiera te zatwierdzenia.

Nowe funkcje: - obsługa interfejsu 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 NumberFormatException, który występował, gdy identyfikator kamery nie był liczbą całkowitą. (Ib2228)
  • Tworzenie przypadków użycia nie wymaga inicjalizacji CameraX. Wszystkie konfiguracje specyficzne dla implementacji są ustawiane w UseCase po dołączeniu do instancji aparatu, 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 Camera, chyba że w Builderze lub UseCase ustawiono wartość targetRotation. (I80fcd)

Camera-Core w wersji 1.0.0-beta10

23 września 2020 r.

androidx.camera:camera-core:1.0.0-beta10 został zwolniony. Wersja 1.0.0-beta10 zawiera te commity.

Poprawki błędów

  • Naprawiono błąd w weryfikacji miejsca zapisu pliku podczas przechwytywania obrazu (I8c565, b/167697553).

Camera-Camera2 Version 1.0.0-beta10

23 września 2020 r.

androidx.camera:camera-camera2:1.0.0-beta10 został zwolniony. Wersja 1.0.0-beta10 zawiera te commity.

Poprawki błędów

Camera-Camera2 Version 1.0.0-beta09

16 września 2020 roku

androidx.camera:camera-camera2:1.0.0-beta09 został zwolniony. Wersja 1.0.0-beta09 zawiera te commity.

Zmiany w interfejsie API

  • Zamiast statycznych metod Camera2CameraInfo używa instancji CameraInfo, aby pobrać informacje związane z Camera2. (I5b844)

Poprawki błędów

  • Rozwiązano problem z formatem obrazu docelowego na urządzeniach typu tablet. Jeśli docelowy współczynnik proporcji jest ustawiony jako AspectRatio.RATIO_16_9, należy wybrać rozmiar 16:9. (Ib7fcf, b/151969438)
  • Wywołaj InitializationException, aby aplikacja mogła prawidłowo obsłużyć błąd AssertionError występujący podczas tworzenia obiektu CameraCharacteristics. (I89c8c, b/160524721)
  • Dodano eksperymentalne interfejsy dla ExposureCompensation (If96c7)

Camera-Core w wersji 1.0.0-beta09

16 września 2020 roku

androidx.camera:camera-core:1.0.0-beta09 został zwolniony. Wersja 1.0.0-beta09 zawiera te commity.

Zmiany w interfejsie API

  • Naprawiono błąd, który powodował, że widoczny obszar był oznaczony jako niepusty w przypadku grupy UseCaseGroup. Deweloperzy powinni mieć możliwość utworzenia widoku bez ustawiania widoku. (Ie3d2e)
  • Dodano eksperymentalne interfejsy dla ExposureCompensation (If96c7)
  • Zezwalanie na dowolny obrót obiektu w podglądzie. Informacje o przekształceniu są obliczane i zwracane użytkownikowi w locie za pomocą nowego wywołania zwrotnego TranformationInfoListener. (I21470)

Poprawki błędów

  • Rozwiązaliśmy problem polegający na tym, że lampka błyskowa na niektórych urządzeniach nie wyłączała się. Dzieje się tak, gdy tryb lampy błyskowej jest ustawiony na FLASH_MODE_ON, aby zrobić zdjęcie, a po jego zrobieniu zmienia się na FLASH_MODE_OFF. Objawy są podobne do włączenia trybu latarki. (Ib4451, b/162568128)
  • Wymuszenie PreviewView do użycia TextureView, jeśli włączony jest efekt rozszerzenia, a implementacja biblioteki dostawcy wymaga specjalnego przetwarzania powierzchni wyjściowej. (I0c3cc)
  • Rozwiązaliśmy problem z wyciekiem aktywności/fragmentu, gdy kontekst aktywności/fragmentu jest przekazywany do ProcessCameraProvider.getInstance(Context).

Znane problemy

  • Gdy ustawisz ViewPort, prostokąt przycinania w ImageCapture może być nieprawidłowy na urządzeniach, które obracają bufor obrazu w HAL. Naprawimy to w kolejne wersji.

Camera-Camera2 Wersja 1.0.0-beta08

19 sierpnia 2020 r.

androidx.camera:camera-camera2:1.0.0-beta08 został zwolniony. Wersja 1.0.0-beta08 zawiera te commity.

Poprawki błędów

  • Zoptymalizowano bindToLifecycle, aby działał szybko w wątku głównym. (I1d57e)
  • Metoda DisplayOrientedMeteringPointFactory przyjmuje obiekt CameraInfo zamiast obiektu CameraSelector, aby można było bezpośrednio określić, dla której kamery ma generować punkty. Wszystkie klasy, które używają klasy DisplayOrientedMeteringPointFactory, przyjmują też instancję CameraInfo zamiast klasy CameraSelector. (I400c1)
  • Rozwiązano problem z grupowaniem rozmiarów o współczynniku proporcji automatycznej rozdzielczości, gdy przy ustawieniu docelowym 2016 x 1080 i obsługiwanym rozmiarze 1920 x 1080 px współczynnik proporcji wynosi 16:9. (I53167, b/159363774)
  • Rozwiązanie problemu z CameraControl, w którym nie działa on z powodu warunków wyścigowych (I2279f, b/152333890, b/160714166)

Camera-Core w wersji 1.0.0-beta08

19 sierpnia 2020 r.

androidx.camera:camera-core:1.0.0-beta08 został zwolniony. Wersja 1.0.0-beta08 zawiera te commity.

Zmiany w interfejsie API

  • Funkcja DisplayOrientedMeteringPointFactory przyjmuje instancję CameraInfo zamiast CameraSelector, więc istnieje bezpośrednie mapowanie na potrzeby tworzenia punktów dla aparatu. Wszystkie klasy, które używają DisplayOrientedMeteringPointFactory, przyjmują też instancję CameraInfo zamiast CameraSelector. (I400c1)

Poprawki błędów

  • W przypadku przechwytywania obrazu zastąpij flagę przewracania poziomego w metadanych na podstawie kierunku kamery. (I28499)
  • Inicjowanie nie powinno już powodować awarii, gdy używasz kontekstu, który nie zwraca obiektu Application z Context.getApplicationContext(). (I3d3c9, b/160817073)

Aparat-Camera2 w wersji 1.0.0-beta07

22 lipca 2020 r.

androidx.camera:camera-camera2:1.0.0-beta07 został zwolniony. Wersja 1.0.0-beta07 zawiera te zatwierdzenia.

Poprawki błędów

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

Camera-Core w wersji 1.0.0-beta07

22 lipca 2020 r.

androidx.camera:camera-core:1.0.0-beta07 został zwolniony. Wersja 1.0.0-beta07 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Scal styl dopasowania FIT_CENTER, FIT_STARTFIT_ENDFIT. FIToznacza, że zwrócony prostokąt przycinania będzie maksymalnym możliwym prostokątem czujnika. (Ia73c3)
  • Prostokąt przycinania podglądu jest konfigurowany przez widoczny obszar. Użytkownicy powinni widzieć tylko obszar określony przez prostokąt przycinania. (I142a4)

Poprawki błędów

  • Rozwiązaliśmy problem polegający na tym, że podgląd jest rozciągnięty na starszych urządzeniach z Androidem 5.0. (I0c03a)
  • Rozwiązaliśmy problem z wyjątkiem ConcurrentModificationException podczas odwiązywania przypadków użycia. (I371c0)

Aparat-Aparat2 w wersji 1.0.0-beta06

24 czerwca 2020 r.

androidx.camera:camera-camera2:1.0.0-beta06 został zwolniony. Wersja 1.0.0-beta06 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano eksperymentalne interfejsy do filtrowania kamer według identyfikatora kamery i właściwości CameraCharacteristics. (I28f61)

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że na telefonie Samsung Galaxy S7 funkcja startFocusAndMetering nie mogła ustawić ostrości. (If3be7, b/159039233)
  • Napraw problem z niemożliwością zamknięcia aparatu po wyjściu z aplikacji (I7a7b3).
  • Naprawiono błąd, który powodował przerywanie podglądu podczas wielokrotnego przełączania kamery przy użyciu implementacji PreviewView w SurfaceView (I920ce).
  • CameraControl#startFocusAndMetering zakończy się niepowodzeniem, jeśli żaden z podanych punktów pomiarowych nie może wygenerować prawidłowych prostokątów pomiarowych. (Id53ce)

Camera-Core Version 1.0.0-beta06

24 czerwca 2020 r.

androidx.camera:camera-core:1.0.0-beta06 został zwolniony. Wersja 1.0.0-beta06 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano eksperymentalne interfejsy do filtrowania kamer według identyfikatora kamery i właściwości CameraCharacteristics. (I28f61)

Poprawki błędów

  • Aplikację CameraX można teraz skonfigurować za pomocą interfejsu ProcessCameraProvider#configureInstance() przed wywołaniem interfejsu ProcessCameraProvider#getInstance(). Umożliwia to dostosowanie CameraXConfig bez konieczności implementowania CameraXConfig.Provider w klasie Application aplikacji. (Ia1a8d)
  • CameraControl#startFocusAndMetering zakończy się niepowodzeniem, jeśli żaden z podanych punktów pomiarowych nie będzie mógł wygenerować prawidłowych prostokątów pomiarowych. (Id53ce)

Camera-Camera2 Version 1.0.0-beta05

10 czerwca 2020 r.

androidx.camera:camera-camera2:1.0.0-beta05 został zwolniony. Wersja 1.0.0-beta05 zawiera te commity.

Poprawki błędów

  • Rozwiązanie problemu z zawieszaniem się aplikacji podczas inicjowania CameraX, gdy telefon jest w trybie Nie przeszkadzać. InitializationException zawiera CameraUnavailableException, który zostanie ustawiony na ListenableFuture wyniku inicjalizacji zamiast powodować awarię aplikacji. (I9909a, b/149413835)
  • Usunięto awarię podczas wywoływania funkcji startFocusAndMeteringna urządzeniach, na których CONTROL_AF_STATE jest pusty. (Ife55e, b/157084254)

Camera-Core w wersji 1.0.0-beta05

10 czerwca 2020 r.

androidx.camera:camera-core:1.0.0-beta05 został zwolniony. Wersja 1.0.0-beta05 zawiera te commity.

Zmiany w interfejsie API

  • Rozwiązanie problemu z zawieszaniem się aplikacji podczas inicjowania CameraX, gdy telefon jest w trybie Nie przeszkadzać. Jeśli InitializationException zawiera CameraUnavailableException, zostanie ono ustawione na ListenableFuture wyniku inicjalizacji zamiast powodować zamykanie aplikacji. (I9909a, b/149413835)

Poprawki błędów

  • Zaktualizowano dokumentację setTargetResolutionsetTargetRotation. (Iae16f)

Camera-Camera2 Version 1.0.0-beta04

27 maja 2020 r.

androidx.camera:camera-camera2:1.0.0-beta04 został zwolniony. Wersja 1.0.0-beta04 zawiera te commity.

Poprawki błędów

  • Umożliwiono aplikacjom ustawianie dowolnych parametrów żądania rejestrowania za pomocą interfejsu Camera2Interop bez powodowania awarii. Pamiętaj, że jeśli wystąpią problemy z następczymi parametrami, Stabilność i zachowanie nie są gwarantowane, gdy zastąpisz parametry za pomocą Camera2Interop. (Ibe5a1, b/149103700)
  • Automatyczna inicjalizacja została naprawiona w przypadku korzystania z aplikacji na urządzeniu, które używa pseudolokalizacji. (I3bef3, b/154767663)
  • Przekształcono dziennik błędów związany z oddzielonym przypadkiem użycia w dziennik debugowania w Camera2CameraImpl. (I1a565, b/154422490)
  • Rozwiązaliśmy problem polegający na tym, że czasem zdjęcie było zbyt ciemne, mimo że włączono lampę błyskową. (I5d9fa, b/149729613)
  • Usunięto błąd, który powodował, że bufor w ImageProxy z ImageCapture nie był przewijany (I0c455, b/153249512)
  • Rozwiązaliśmy problemy występujące podczas wiązania ImageCapture: (1) nie udało się zrobić zdjęć przy użyciu parametru MAX_QUALITY; (2) wygenerowano słabą jakość obrazu, ponieważ nie dział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 przechwytuje aparat (I1fbc3, b/153714651)

Camera-Core Wersja 1.0.0-beta04

27 maja 2020 r.

androidx.camera:camera-core:1.0.0-beta04 został zwolniony. Wersja 1.0.0-beta04 zawiera te commity.

Zmiany w interfejsie API

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

Poprawki błędów

  • Naprawiono błąd powodujący awarię w funkcji ImageAnalysis, gdy użytkownik uzyskuje dostęp do funkcji ImageProxy po zamknięciu funkcji ImageReaderProxy. Oznacza to również, że wszystkie ImageProxy otrzymane przez Analyzer muszą zostać zamknięte, zanim ImageReaderProxy zostanie zamknięta. (I4b299, b/145956416, b/154155377, b/156357269)
  • Parametr CameraInfo został usunięty z funkcji PreviewView#createSurfaceProvider(), a funkcja PreviewView pobiera go teraz wewnętrznie z funkcji SurfaceRequest. (If18f0, b/154652477)
  • Automatyczna inicjalizacja została naprawiona w przypadku korzystania z aplikacji na urządzeniu, które używa pseudolokalizacji. (I3bef3, b/154767663)
  • Rozwiązaliśmy problem polegający na tym, że czasami zdjęcie było zbyt ciemne, mimo że włączono lampę błyskową. (I5d9fa, b/149729613)
  • Rozwiązanie problemu z ImageAnalysis, w którym wielokrotne wywołania metod setAnalyzer lub clearAnalyzer powodowały, że analizator nie otrzymywał 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 kamer w CameraManager nie zawsze jest wybrana do użycia. (I4c624, b/153418028)
  • Rozwiązano problem z nieregularnym awariami spowodowanymi przez ustawienie Preview.SurfaceProvider, które nie zwalniało wcześniej żądanej powierzchni. “java.lang.IllegalStateException: Camera surface session should only fail with request cancellation” (I8e4e7, b/155936225)

Camera-Camera2 Wersja 1.0.0-beta03

15 kwietnia 2020 roku

androidx.camera:camera-camera2:1.0.0-beta03 został zwolniony. Wersja 1.0.0-beta03 zawiera te komitowane zmiany.

Poprawki błędów

  • Poprawki umożliwiające wydanie camera-core

Camera-Core Wersja 1.0.0-beta03

15 kwietnia 2020 roku

androidx.camera:camera-core:1.0.0-beta03 został zwolniony. Wersja 1.0.0-beta03 zawiera te komitowane zmiany.

Poprawki błędów

  • Rozwiązano regresję z wersji beta03, w której wywołanie funkcji bindToLifecycle() z zerowymi argumentami UseCase powodowało wyjątek. Zapobiegało to wyodrębnianiu Camera bez wiązania UseCase.

Camera-Camera2 wersja 1.0.0-beta02

1 kwietnia 2020 r.

androidx.camera:camera-camera2:1.0.0-beta02 został zwolniony. Wersja 1.0.0-beta02 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono ImageInfo.getRotationDegrees() z ImageProxy wygenerowanego przez ImageCapture, aby pasował do wartości orientacji obrotowej EXIF. (Id4281, b/150802561)
  • Aby używać domyślnej implementacji CameraX/Camera2, nie jest już wymagane jawne uporządkowanie zależności CameraX w build.gradle. W przypadku konieczności zadeklarowania ścisłych zależności wszystkie zależności CameraX można teraz uwzględnić w pliku kompilacji. (I46e88)
  • Rozwiązaliśmy problem IllegalArgumentExceptionwystępujący na urządzeniach, na których rozmiar wyświetlacza jest mniejszy niż 640 x 480. (Ife3f2, b/150506192)
  • Naprawiono bindToLifecycle, aby modyfikowała ona tylko UseCase, jeśli udało się ją powiązać. Wcześniej, gdy wywoływana była funkcja bindToLifecycle w celu wykonania obliczeń rozdzielczości, była aktualizowana zmienna UseCase. Teraz do wykonania obliczeń nie trzeba już aktualizować UseCase (I78d9e)

Camera-Core w wersji 1.0.0-beta02

1 kwietnia 2020 r.

androidx.camera:camera-core:1.0.0-beta02 został zwolniony. Wersja 1.0.0-beta02 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono ImageInfo.getRotationDegrees() z ImageProxy wygenerowanego przez ImageCapture, aby pasował do wartości orientacji obrotowej EXIF. (Id4281, b/150802561)
  • Naprawiono bindToLifecycle, aby modyfikowała ona UseCase tylko wtedy, gdy udało się ją powiązać. Wcześniej, gdy wywoływana była funkcja bindToLifecycle w celu wykonania obliczeń rozdzielczości, była aktualizowana zmienna UseCase. Teraz do wykonania obliczeń nie trzeba już aktualizować UseCase (I78d9e)
  • Rozwiązaliśmy problem, który powodował, że sesja przechwytywania w przypadku użycia Preview nie była aktualizowana, gdy powierzchnia podglądu zmieniła się po wywołaniu Preview.setSurfaceProvider() więcej niż raz.

Aparat – Camera2 w wersji 1.0.0-beta01

26 lutego 2020 r.

androidx.camera:camera-camera2:1.0.0-beta01 został zwolniony. Wersja 1.0.0-beta01 zawiera te commity.

Poprawki błędów

  • Zmieniono nazwę SurfaceRequest.setSurface(Surface) na SurfaceRequest.provideSurface(Surface), a SurfaceRequest.setWillNotComplete() na SurfaceRequest.willNotProvideSurface(). (I224fe)
  • Rozwiązanie problemu polegającego na tym, że po zmianie wartości docelowej obrotu za pomocą ImageCapture.setTargetRotation() nieprawidłowy był format zapisywanego obrazu. (I474ea, b/148763432)
  • Naprawiono błąd inicjowania wariantów aplikacji z włączonym ProGuardem, zachowując flagę, która ustawia domyślnego dostawcę CameraXConfig. (I2d6c1)

Camera-Core w wersji 1.0.0-beta01

26 lutego 2020 r.

androidx.camera:camera-core:1.0.0-beta01 został zwolniony. Wersja 1.0.0-beta01 zawiera te commity.

Zmiany w interfejsie API

  • Zawartość komórki ListenableFuture w kolumnie SurfaceRequest.provideSurface() została zastąpiona przez ExecutorCallback. Upraszcza to interfejs API, ponieważ nie wymaga już obsługi wyjątków w przypadku provideSurface() i zapewnia, że wywołania zwrotnego provideSurface() nie można anulować. Ma to zapobiegać awariom na starszych urządzeniach spowodowanym przedwczesnym zwalnianiem powierzchni. Obiekt SurfaceRequest.Result jest teraz używany do śledzenia sposobu korzystania przez SurfaceRequest z podawanego Surface. (I7854b)
  • Zmieniono nazwę SurfaceRequest.setSurface(Surface) na SurfaceRequest.provideSurface(Surface), a SurfaceRequest.setWillNotComplete() na SurfaceRequest.willNotProvideSurface(). (I224fe)

Poprawki błędów

  • Rozwiązanie problemu polegającego na tym, że po zmianie wartości docelowej obrotu za pomocą ImageCapture.setTargetRotation() nieprawidłowy był format zapisywanego obrazu. (I474ea, b/148763432)
  • Naprawiono błąd inicjowania wariantów aplikacji z włączonym ProGuardem, zachowując flagę, która ustawia domyślnego dostawcę CameraXConfig. (I2d6c1)
  • Zaktualizowaliśmy dokumentację interfejsów API trybu flash, aby uwzględnić możliwe wartości. (I4a3ec)

Aparat – Camera2, wersja 1.0.0-alpha10

10 lutego 2020 r.

androidx.camera:camera-camera2:1.0.0-alpha10 został zwolniony. Wersja 1.0.0-alpha10 zawiera te zatwierdzenia:

Poprawki błędów

  • Zwiększona stabilność na urządzeniach INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY dzięki temu, że Surface są przechowywane tylko przez czas korzystania z aplikacji Camera2. (I9dac2)
  • Rozwiązano problem z podświetlonym podglądem na urządzeniach STARSZEJ generacji przez odpowiednie dostosowanie CONTROL_AE_TARGET_FPS_RANGE. (1224638)

Camera-Core Wersja 1.0.0-alpha10

10 lutego 2020 r.

androidx.camera:camera-core:1.0.0-alpha10 został zwolniony. Wersja 1.0.0-alpha10 zawiera te zatwierdzenia:

Zmiany w interfejsie API

  • Zaktualizowano ImageCapture, aby umożliwić zapisywanie obrazów w folderach UriOutputStream. Połączone przeciążone metody takePicture w jedną. Zaktualizowano aplikację testową, aby używała Uri jako przykładu kanonicznego. (Ia3bec)
  • Nazwa Preview.PreviewSurfaceProvider została zmieniona na Preview.SurfaceProvider. SurfaceProvider nie wymagają już od programistów tworzenia własnych ListenableFuture, a udzielanie Surface odbywa się teraz za pomocą nowego obiektu SurfaceRequest. Metoda Preview.getPreviewSurfaceProvider() została usunięta z powodu możliwości jej niewłaściwego użycia, gdy Preview jest połączona z innymi klasami, takimi jak PreviewView. (I20105)
  • Dodano getTargetRotation() i getTargetName() do listy Preview. (Iceee7)
  • Dodano użytkowników getTargetRotation(), getBackpressureStrategy() i getImageQueueDepth() do albumu ImageAnalysis. (I9d6d9)
  • Dodano getTargetRotation() i getCaptureMode() w ImageCapture() (I5bc17)
  • Argumenty, które były wcześniej przekazywane w parametrach ImageCapture.OnImageSavedCallback.onError()ImageCapture.OnImageCapturedCallback.onError(), zostały zastąpione przez pojedynczy argument ImageCaptureException, który nadal zawiera wszystkie informacje, które były przekazywane wcześniej.
  • Argument pliku, który był wcześniej przekazywany w parametry ImageCapture.OnImageSavedCallback.onImageSaved(), został usunięty. (I750d2)
  • Zajęcia PreviewImageCapture są teraz oznaczone jako ostateczne. (I2500b)
  • Interfejs API został zaktualizowany. Metody getZoomRatio(), getMaxZoomRatio(), getMinZoomRatio() i getLinearZoom() interfejsu CameraInfo zostały połączone w interfejs 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 tylko do użytku wewnętrznego. Usunięto konstruktor CameraXConfig.Builder. (I96912)
  • Usunięto wymóg, że aplikacja musi rozszerzać klasę Application, aby zainicjować CameraX. CameraX będzie teraz inicjowana za pomocą domyślnej konfiguracji Camera2, o ile w pliku build.gradle aplikacji znajduje się artefakt camera-camera2. (I58ff5) (b/146923574)

Aparat-Aparat2 w wersji 1.0.0-alpha09

22 stycznia 2020 r.

androidx.camera:camera-camera2:1.0.0-alpha09 został zwolniony. Wersja 1.0.0-alpha09 zawiera te commity

Zmiany w interfejsie API

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

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

    Klasa Camera2CameraInfo wymaga parametru ExperimentalCamera2InteropmarkerClass.

Camera-Core w wersji 1.0.0-alpha09

22 stycznia 2020 r.

androidx.camera:camera-core:1.0.0-alpha09 został zwolniony. Wersja 1.0.0-alpha09 zawiera te commity.

Zmiany w interfejsie API

  • Parametr SurfaceOrientedMeteringPointFactory useCaseForSurface został przemianowany na useCaseForAspectRatio, a dokumentacja referencyjna została rozszerzona.
  • Metody FocusMeteringAction.Builder.from() są zastępowane 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 w dokumentacji Javadoc interfejsów focus i metering API dotyczące flag MeteringMode i 3A oraz użycia parametru Display.
  • Rozwinięliśmy dokumentację referencyjną dotyczącą setZoomRatiosetLinearZoom.

Poprawki błędów

  • Rozwiązaliśmy problemy z zamykaniem i otwieraniem kamer, które powodowały niepowodzenie kontroli „Warunek wstępny”.
  • Rozwiązaliśmy błąd ConcurrentModificationException, który mógł występować podczas używania interfejsów API latarki i zoomu.
  • Rozwiązaliśmy problem polegający na tym, że w przypadku wymiarów mod16 wybierane są rozdzielczości zbliżone do żądanej, gdy dostępne są wymiary mod16.
  • Interfejsy API startFocusMeteringcancelFocusMetering działają teraz zgodnie z dokumentacją, z prawidłowym czasem i możliwym zwracaniem błędów.
  • Rozwiązaliśmy problem polegający na tym, że na urządzeniu, które nie obsługuje takich rozmiarów, wysyłano żądanie określonej docelowej rozdzielczości z wymiaryem przycięcia. Teraz, gdy jest to możliwe, zostanie wybrany nieprzycięty rozmiar o wystarczającej rozdzielczości, aby objąć oryginalne żądanie.

Aparat-Aparat2 w wersji 1.0.0-alpha08

18 grudnia 2019 r.

androidx.camera:camera-camera2:1.0.0-alpha08 został zwolniony. Wersja 1.0.0-alpha08 zawiera te zatwierdzenia

Znane problemy

  • Nie wszystkie opcje żądania przechwycenia Camera2 działają podczas korzystania z interoperacyjności Camera2. Jeśli żądana opcja nie jest obsługiwana, sesja nie rozpocznie się i może wystąpić taki komunikat o błędzie: 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ł wyświetlanie czarnego ekranu po obrócenie lub przełączeniu kamery w przypadku poziomów interfejsu API 21 i 22.

Zmiany w interfejsie API

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

Camera-Core w wersji 1.0.0-alpha08

18 grudnia 2019 r.

androidx.camera:camera-core:1.0.0-alpha08 został zwolniony. Wersja 1.0.0-alpha08 zawiera te zatwierdzenia

Znane problemy

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

Poprawki błędów

  • Zaktualizowaliśmy dokumentację dotyczącą usług FocusMeteringAction i CameraControl.
  • Wdrożony TorchControl dla enableTorch() i getTorchState().

Zmiany w interfejsie API

  • Ukryte definicje typu IntDef i przeniesione stałe typu IntDef poza definicję typu IntDef.
  • Element sterujący rotationDegrees został przeniesiony z klasy OnImageCaptureCallback do klasy ImageInfo.
  • Element sterujący rotationDegrees został przeniesiony z klasy Analyzer do klasy ImageInfo.

Aparat-Camera2 wersja 1.0.0-alpha07

4 grudnia 2019

androidx.camera:camera-camera2:1.0.0-alpha07 został zwolniony. Wersja 1.0.0-alpha07 pakietu camera-camera2 zawiera te commity

  • Camera2Config jest teraz dostępna do inicjowania i konfigurowania implementacji Camera2 w CameraX. Więcej informacji o tym, jak używać tego podczas inicjowania, znajdziesz w sekcji dotyczącej modułu camera-core w informacjach o wersji.
  • Funkcja interoperacyjności w camera2 jest teraz oznaczona jako eksperymentalna i przeniesiona do osobnego pakietu, androidx.camera.camera2.interop.

Camera-Core w wersji 1.0.0-alpha07

4 grudnia 2019

androidx.camera:camera-core:1.0.0-alpha07 został zwolniony. Wersja 1.0.0-alpha07 pakietu camera-core zawiera te zatwierdzenia

Pamiętaj, że w tej wersji alpha są pewne istotne zmiany, ponieważ przygotowujemy się do wydania wersji beta. Zalecamy zapoznanie się ze zmianami i przesłanie opinii na temat grupy CameraX w Google. Deweloperom, którzy używają biblioteki CameraX w aplikacjach w Google Play, zalecamy zaczekanie na oficjalną wersję beta, zanim zaktualizują bibliotekę w swoich aplikacjach.

Zmiany w interfejsie API

  • Ważne: procedura inicjowania CameraX uległa zmianie. Aplikacje powinny implementować CameraXConfig.Provider i używać domyślnej wartości Camera2Config udostępnianej 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. Parametry bindToLifecycle(), unbind(), unbindAll(), isBound()hasCamera(), które wcześniej były dostępne w ramach wywołania klasy CameraX, są teraz dostępne w ProcessCameraProvider.

  • instancja ProcessCameraProvider dla każdego procesu jest uzyskiwana asynchronicznie za pomocą metody statycznej ProcessCameraProvider.getInstance(), która zwraca przyszłość do odsłuchania, która dostarcza ProcessCameraProvider po zakończeniu. Tutaj jest on pokazany w onCreate() w typowym przypadku. Możesz wywoływać funkcję getInstance() w późniejszym etapie cyklu aktywności, aby opóźnić opóźnienie inicjalizacji (np. gdy działanie użytkownika powoduje otwarcie interfejsu 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);
      }
    
  • Słuchacza można dodać do ListenableFuture zwracanego przez getInstance(). Dzięki temu dostawcę kamery można pobrać z Future bez blokowania na Future.get()

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

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

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

    preview = Preview.Builder().setTargetAspectRatio(AspectRatio.RATIO_16_9).build()
    
  • Przypadek użycia podglądu został zaktualizowany, aby umożliwić akceptowanie powierzchni utworzonej i zarządzanej przez aplikację, co pozwoli zachować sprawdzone metody dotyczące Androida. Zdecydowanie zalecamy użycie klasy widoku PreviewView, która jest dostępna w pakiecie widoku kamery.

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

  • Ważne: implementacja metody ImageAnalysis w analizatorze musi wywołać funkcję image.close() po zakończeniu korzystania z otrzymanych obrazów. W przeciwnym razie nowe obrazy mogą nie być odbierane lub kamera może się zatrzymać (w zależności od ustawienia ciśnienia wstecznego). Szczegóły znajdziesz w dokumentacji.

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

  • ImageProxy.getImage() jest oznaczone jako eksperymentalne. Aplikacje powinny zawierać adnotacje dotyczące sposobu korzystania, np. @androidx.camera.core.ExperimentalGetImage

  • Wymaganie adnotacji UIThread w przypadku Analyzer zostało usunięte.

  • Funkcja ImageAnalysis.clearAnalyzer() została dodana w celu usunięcia analizatora.

  • Listenery z większą liczbą metod zostały przemianowane na wywołania zwrotne:

    • ImageCapture.OnImageCapturedListener to teraz ImageCapture.OnImageCapturedCallback
    • ImageCapture.OnImageSavedListener to teraz ImageCapture.OnImageSavedCallback
    • VideoCapture.OnVideoSavedListener to teraz VideoCapture.OnVideoSavedCallback
  • Typy wyliczeniowe zostały zastąpione przez IntDef

  • Dodano elementy sterujące powiększeniem:

    • CameraControl.setLinearZoom()
    • CameraControl.setZoomRatio()
    • CameraInfo.getLinearZoom()
    • CameraInfo.getMaxZoomRatio()
    • CameraInfo.getZoomRatio()
  • CameraInfo.hasFlashUnit() jest dodawane, aby określić, czy sprzęt do obsługi lampy błyskowej lub latarki jest obecny.

  • CameraInfo.isFlashAvailable() został(a) usunięty(a). Funkcja latarki zastępuje funkcję lampy błyskowej. Więcej informacji znajdziesz w dokumentacji referencyjnej.

  • Pola ImageCapture.Metadata są zastępowane przez metody dostępu get/set/is.

  • Funkcje startFocusMeteringcancelFocusMetering zwracają teraz wartość ListenableFutures, która reprezentuje asynchroniczną operację wywołania.

  • MeteringPoints działają teraz jako uchwyty do pomiarowych działań i są produkowane przez fabryki. Aplikacje powinny korzystać z dotychczasowych fabryk, a nie z niestandardowych.

Rozwiązane problemy

  • Rozwiązaliśmy problem z robieniem zdjęć po wznowieniu (po poprzedniej przerwie w robieniu zdjęć).
  • Znane problemy: CameraControl.enableTorch() działa, ale zwracany ListenableFuture<Void> jest zawsze w niezwłocznej przyszłości complete(success), nawet jeśli nie ma jednostki flash. W przyszłych wersjach to zachowanie zostanie zmienione. Gdy nie ma modułu lampy błyskowej, enableTorch(true) od razu się nie powiedzie (nie wyśle żądania do CaptureSession), a TorchState pozostanie wyłączone.
  • Znane problemy: funkcje startFocusAndMeteringcancelFocusAndMetering uruchamiają i anulują pomiar ostrości, ale zwracają natychmiastową wartość completed (success), która nie odpowiada opisanemu działaniu. Wartość FocusMeteringResult z funkcji ListenableFuture<FocusMeteringResult> CameraControl.startFocusAndMetering() to fałszywy wynik, który isFocusSuccessful() i zawsze jest równy „fałsz”, co różni się od zamierzonego, udokumentowanego zachowania.
  • Znane problemy: trwa tworzenie fabryki punktów pomiarowych do użytku w przypadku zdarzeń styczności z klientem typu PreviewView. Obecnie aplikacje łączące niestandardowe powierzchnie zarządzane mogą korzystać z dotychczasowych fabryk punktów pomiarowych. W innych przypadkach funkcja ostrości dotykowej nie jest dostępna dla PreviewView.

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

9 października 2019 r.

androidx.camera:camera-camera2:1.0.0-alpha06androidx.camera:camera-core:1.0.0-alpha06 są dostępne. Oto kompilacje uwzględnione w camera-camera2:1.0.0-alpha06, a tutaj kompilacje uwzględnione w camera-core:1.0.0-alpha06.

Nowe funkcje

Zmiany w ustawieniach formatu obrazu:

  • Dodano metodę setTargetAspectRatioMode(), która akceptuje argument typu enum. Spowoduje to ustawienie trybu proporcji obrazu za pomocą opcji RATIO_4_3 lub RATIO_16_9 zamiast dowolnych proporcji. Ta zmiana odzwierciedla fakt, że z kamery pochodzą 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ą dostęp do kamery, a w tym przypadku tylko w ograniczonych rozdzielczościach. Aplikacje, które mają interfejs lub przetwarzanie w formacie 1:1, powinny używać bardziej elastycznych opcji 16:9 lub 4:3 i przycinać wyświetlacz lub przetwarzać podregion.
    • Te proporcje są zorientowane na wykorzystanie maksymalnej powierzchni czujnika.
  • Do interfejsów API konfiguracji przypadku użycia dodano parametr getTargetAspectRatio(), który zwraca współczynnik proporcji, na który jest przeznaczony wynik przypadku użycia.
  • Metoda setTargetAspectRatio(Rational aspectRatio) została zmieniona w przypadku ImageCapture na setTargetAspectRatioCustom(Rational aspectRatio). Gdy jest ustawiony, dane wyjściowe ImageCapture są odpowiednio przycinane.

Interfejsy API wykonawcy

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

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

  • Dodano metodę CameraInfogetCameraInfo, która pozwala aplikacjom sprawdzić, czy obiektyw skierowany jest w kierunku CameraInfo i czy w danej kamerze jest dostępny flesz. 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() Określa orientację czujnika aparatu względem naturalnej orientacji urządzenia lub, dla wygody, względem orientacji określonej przez obrót powierzchni (który opisuje orientację względem naturalnej orientacji).

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

  • Format obrazu: w przypadku każdego zastosowania aplikacje powinny wywoływać tylko jedną z funkcji setTargetResolution() lub setTargetAspectRatio(). Wywołanie obu w tym samym module kompilującym spowoduje błąd.
    • Zwykle zalecamy użycie setTargetAspectRatio() na podstawie projektu interfejsu aplikacji. Konkretne rozdzielczości zależą od przypadku użycia. Na przykład podgląd ma rozdzielczość zbliżoną do rozdzielczości ekranu, a nagrywanie obrazu zapewnia zdjęcia w wysokiej rozdzielczości. Więcej informacji znajdziesz w tabeli automatycznych rozdzielczości.
    • Użyj wartości setTargetResolution() w przypadku bardziej szczegółowych przypadków, np. gdy wymagane są minimalne (aby zaoszczędzić na obliczeniach) lub maksymalne rozdzielczości (aby przetworzyć szczegóły).
  • Interfejs API wykonawcy: usunięto wywołanie setCallbackHandler() z interfejsów API konfiguracji przypadku użycia. Zamiast tego aplikacje mogą ustawić wykonawcę jako parametr w różnych innych interfejsach API, które ustawiają wywołanie zwrotne.
  • Zaktualizowano adnotacje null dla różnych funkcji.
  • Rozwiązaliśmy problem, który powodował błąd java.lang.IllegalStateException at Camera$StateCallback.onError podczas otwierania aparatu.
  • Rozwiązano problem, w którym przy wybraniu zbyt małej rozdzielczości (mniejszej niż 640 x 480) podczas żądania większej lub domyślnej rozdzielczości aplikacja wyświetlała obraz w postaci bloków lub rozmyty obraz podglądu. Aplikacje, które wymagają mniejszych rozdzielczości, mogą wyraźnie o nie prosić.
  • Rozwiązaliśmy problem, który powodował, że po powrocie z intencji, która uruchomiła inną aplikację do obsługi aparatu, kamera wyświetlała czarny ekran (nie udało się uruchomić aparatu).
  • Naprawiliśmy błąd, który powodował wyświetlanie tego komunikatu o błędzie podczas wielokrotnego uruchamiania lub zatrzymywania aplikacji: java.lang.IllegalArgumentException: CaptureRequest contains unconfigured Input/Output Surface!
  • Usunięto błąd występujący podczas wyłączania funkcji ImageAnalysis: java.lang.IllegalStateException: maxImages (4) has already been acquired, call #close before acquiring more.
  • Dodaliśmy dodatkowe testy procesu odłączania kamery.
  • Zwiększona odporność systemu testowego podczas przeprowadzania testów aparatu w ciągu kilku minut.

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

5 września 2019 r.

androidx.camera:camera-camera2:1.0.0-alpha05androidx.camera:camera-core:1.0.0-alpha05 są dostępne. Oto kompilacje zawarte w camera-camera2:1.0.0-alpha05kompilacje zawarte w camera-core:1.0.0-alpha05.

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

    • Nazwa ImageCapture.UseCaseError została zmieniona na ImageCapture.ImageCaptureError
    • Nazwa VideoCapture.UseCaseError została zmieniona na VideoCapture.VideoCaptureError
  • Dodano interfejs CameraControl API z interfejsami „Dotknij, aby wyśrodkować”

    • Dodano interfejs API do uzyskiwania wartości CameraControl z CameraX dla aparatu wybranego według obiektywu:

      CameraX.getCameraControl(LensFacing lensFacing)

    • Dodano użytkowników MeteringPointFactory, MeteringPoint, MeteringMode i FocusMeteringAction do wykonania zadania „Kliknij, aby skupić się na…”:

      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 CameraControl do uruchamiania i anulowania pomiaru ostrości:

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

    • Dodano interfejsy API dla punktów pomiarowych, które pomagają przekształcać współrzędne dotyku w współrzędne czujnika na podstawie klas widoku:

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

  • Wymuś wywołanie podanych niżej metod w wątku głównym (UI), a w przeciwnym razie rzutuj wyjątek IllegalStateException. W kolejnych wersjach będzie można używać tych funkcji w innych wątkach 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 null, a odpowiednie metody gettera mogą zwracać null.

  • Rozwiązano problem z testowaniem na emulatorach, które nie obsługują ustawień AF/AE/AWB.

  • Naprawiono błąd awarii podczas obracania podczas analizowania obrazu.

  • Rozwiązaliśmy problem polegający na tym, że po przełączeniu się między przednim a tylnym aparatem lub po przekręceniu urządzenia narożnikowe przy wciśniętym przycisku aparatu ekran podglądu był czarny (brak danych z kamery).

  • Usunięto testowanie w przypadku wielu jednoczesnych zastosowań analizy obrazu. Aby zapewnić zgodność, aplikacje powinny zawierać tylko jeden przypadek użycia analizy obrazu.

  • Dodano pierwsze testy robolectric dla fałszywej kamery w pakiecie testów kamery (w toku).

  • Usunięto test Camera2Inititalizer, ponieważ jego zakres był niejasny lub wprowadzał w błąd.

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

7 sierpnia 2019 r.

androidx.camera:camera-camera2:1.0.0-alpha04androidx.camera:camera-core:1.0.0-alpha04 są dostępne. Wersja 1.0.0-alpha04 zawiera te zatwierdzenia

Nowe funkcje

Zmiany w wyborze formatu obrazu i współczynnika proporcji

Celem CameraX jest inicjowanie sesji aparatu. Oznacza to, że CameraX musi iść na kompromisy w zakresie rozdzielczości i proporcji obrazu, aby umożliwić rozpoczęcie sesji rejestrowania, co jest jej głównym celem. Z tego powodu niektóre dokładne żądania mogą nie zostać spełnione. Możliwe przyczyny:

  • Urządzenia, które nie obsługują żądanej rozdzielczości
  • problemy ze zgodnością, np. na STARYCH urządzeniach, na których do prawidłowego działania wymagane są określone rozdzielczości;
  • Na niektórych urządzeniach niektóre formaty są dostępne tylko w określonych proporcjach
  • Preferencja „nearest mod16” do kodowania JPEG lub wideo. Zobacz CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP

Mimo że CameraX tworzy sesję i ją zarządza, zawsze sprawdzaj zwracane rozmiary obrazu w wyjściu przypadku użycia w kodzie i odpowiednio je dostosowuj.

Wprowadziliśmy pewne zmiany w ustawieniach rozdzielczości i formatu obrazu, aby uprościć interfejs API:

  • Przypadek użycia podglądu jest teraz uznawany za mający domyślny format obrazu 4:3, jeśli nie jest ustawiony żaden inny.
  • 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 dowolne wywołania setTargetAspectRatio lub setTargetResolution).
  • Wersja „Nearest mod16” rozdzielczości jest uznawana za tę samą proporcję.

Tryb niezablokowany ImageAnalysis

  • Funkcja ImageReaderMode.ACQUIRE_LATEST_IMAGE nie blokuje już dostępu. Pobiera najnowszy obraz z kolejki, ale stale odrzuca nieużywane obrazy, aby uniknąć blokowania strumienia danych z kamery.
  • Analizator może przechowywać pojedynczy obraz przez nieograniczony czas bez blokowania potoku danych.
  • Jeśli aplikacja udostępnia wykonawcę, który następnie blokuje, blokuje to przypadki użycia ImageAnalysis.
  • Domyślny wykonawca działa wewnętrznie jako nieblokujący wykonawca.

Poprawki błędów

  • Rozwiązanie problemów z czasem oczekiwania na konwergencję 3A podczas robienia zdjęć na urządzeniach bez automatycznego ustawiania ostrości, automatycznej ekspozycji i automatycznego balansu bieli.
  • Rozwiązanie problemu z szybkim robieniem zdjęć za pomocą ImageCapture. Naprawiono błąd: java.lang.IllegalStateException: maxImages (2) has already been acquired
  • Rozwiązano problem, gdy funkcja setLensFacing nie była wywoływana w przypadku konkretnego przypadku użycia, co powodowało błąd java.lang.IllegalArgumentException: Unable to get camera ID for use case.
  • Rozwiązano problem, w którym urządzenie starsze wymagało określonego formatu obrazu jako maksymalnej rozdzielczości JPEG.
  • Naprawiono problem z zamykaniem aplikacji w tle podczas otwierania aparatu
  • Rozwiązanie problemu w interfejsie API <25, usunięcie błędu checkAndUpdateEglState: invalid current EGLDisplay
  • Rozwiązanie problemu z odwiązaniem podglądu po włączeniu i uruchomieniu rozszerzeń
  • Artefakty kompilacji dla widoku aparatu i rozszerzeń aparatu są teraz publikowane jako wersje alfa.

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

2 lipca 2019 r.

androidx.camera:camera-core:1.0.0-alpha03androidx.camera:camera-camera2:1.0.0-alpha03 są dostępne. Wersja 1.0.0-alpha03 zawiera te zatwierdzenia

Zmiany w interfejsie API

  • Dodano wyjaśnienie w dokumentacji javadoc dla parametru „target” w wywołaniach konfiguracji setTarget

Camera-Core

  • Rozwiązano problem z nieskonfigurowaną powierzchnią wejścia/wyjścia, która ulegała awarii podczas szybkiego otwierania/zamykania lub wiązania/rozwiązywania.
  • Przejście na nowe implementacje Futures
  • Testowanie poprawek w celu bardziej wszechstronnego testowania
  • Test integracji z serwerem Core pokazuje teraz czas wykonania zdjęć
  • Stworzenie wewnętrznej klasy zgodności dla wykonawców
  • Czas oczekiwania na zakończenie procesu rejestrowania zdjęć w aplikacji do testowania i poprawiona stabilność

Rozszerzenia

  • Dodano sprawdzanie wersji.
  • Dodatkowe testy – wywołania zwrotne zdarzeń rozszerzenia
  • Ulepszenia dotyczące wewnętrznie odpowiadających sobie 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.

androidx.camera:camera-core:1.0.0-alpha02androidx.camera:camera-camera2:1.0.0-alpha02 są dostępne. 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ązano błąd NullPointerException/Surface Abandoned występujący na niektórych urządzeniach podczas szybkiego robienia zdjęć podczas szybkiego odwiązywania i ponownie wiązania przypadków użycia.
  • Rozwiązano wewnętrzny problem, aby zapewnić spójność aktualizacji żądań rejestrowania na wszystkich platformach.
  • Poprawki stabilności podczas ponownego uruchamiania przypadków użycia w nowych instancjach aplikacji
  • zmiany wewnętrznej architektury w celu przygotowania do obsługi wykonawców w interfejsie API;
  • Dodatkowe wyjaśnienia dotyczące Javadoca dotyczącego klasy CameraX i zarządzania cyklem życia
  • Dodano testowanie z wykorzystaniem testów instrumentowanych w przypadku aplikacji do testowania wydajności Antelope
  • Usunięcie konieczności stosowania parametru „-keepattributes Signature” w konfiguracji Proguarda w aplikacji

Camera-Camera2 i Camera-Core 1.0.0-alpha01

7 maja 2019 r.

Zasoby androidx.camera:camera-core:1.0.0-alpha01androidx.camera:camera-camera2:1.0.0-alpha01 są dostępne. Wersja 1.0.0-alpha01 zawiera te zatwierdzenia:

Camera-Lifecycle w wersji 1.0.0-beta11

14 października 2020 r.

androidx.camera:camera-lifecycle:1.0.0-beta11 został zwolniony. 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 Camera, chyba że w Builderze lub UseCase ustawiono wartość targetRotation. (I80fcd)

Camera-Lifecycle w wersji 1.0.0-beta10

23 września 2020 r.

androidx.camera:camera-lifecycle:1.0.0-beta10 został zwolniony. Wersja 1.0.0-beta10 zawiera te commity.

Poprawki błędów

Camera-Lifecycle Version 1.0.0-beta09

16 września 2020 roku

androidx.camera:camera-lifecycle:1.0.0-beta09 został zwolniony. Wersja 1.0.0-beta09 zawiera te commity.

Camera-Lifecycle Version 1.0.0-beta08

19 sierpnia 2020 r.

androidx.camera:camera-lifecycle:1.0.0-beta08 został zwolniony. Wersja 1.0.0-beta08 zawiera te commity.

Poprawki błędów

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

Camera-Lifecycle Version 1.0.0-beta07

22 lipca 2020 r.

androidx.camera:camera-lifecycle:1.0.0-beta07 został zwolniony. Wersja 1.0.0-beta07 zawiera te zatwierdzenia.

Camera-Lifecycle Version 1.0.0-beta06

24 czerwca 2020 r.

androidx.camera:camera-lifecycle:1.0.0-beta06 został zwolniony. Wersja 1.0.0-beta06 zawiera te zatwierdzenia.

Zmiany w interfejsie API

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

Camera-Lifecycle Version 1.0.0-beta05

10 czerwca 2020 r.

androidx.camera:camera-lifecycle:1.0.0-beta05 został zwolniony. Wersja 1.0.0-beta05 zawiera te commity.

Poprawki błędów

  • Rozwiązanie problemu z zawieszaniem się aplikacji podczas inicjowania CameraX, gdy telefon jest w trybie Nie przeszkadzać. Jeśli InitializationException zawiera CameraUnavailableException, zostanie ono ustawione na ListenableFuture wyniku inicjalizowania zamiast powodować zamykanie aplikacji. (I9909a, b/149413835)

Camera-Lifecycle Version 1.0.0-beta04

27 maja 2020 r.

androidx.camera:camera-lifecycle:1.0.0-beta04 został zwolniony. Wersja 1.0.0-beta04 zawiera te commity.

Camera-Lifecycle Version 1.0.0-beta03

15 kwietnia 2020 roku

androidx.camera:camera-lifecycle:1.0.0-beta03 został zwolniony. Wersja 1.0.0-beta03 zawiera te komitowane zmiany.

Poprawki błędów

  • Rozwiązano regresję z wersji beta03, w której wywołanie funkcji bindToLifecycle() z zerowymi argumentami UseCase powodowało wyjątek. Zapobiegało to wyodrębnianiu Camera bez wiązania UseCase.
  • Poprawki umożliwiające wydanie camera-core

Camera-Lifecycle Wersja 1.0.0-beta01

26 lutego 2020 r.

androidx.camera:camera-lifecycle:1.0.0-beta01 został zwolniony. Wersja 1.0.0-beta01 zawiera te commity.

Poprawki błędów

  • W dokumentacji naprawiono błąd polegający na tym, że podczas pobierania wartości ProcessCameraProvider podczas inicjalizacji używana jest domyślna konfiguracja, a rozszerzanie wartości Application jest opcjonalne. (I5e395)

Camera-Lifecycle w wersji 1.0.0-beta02

1 kwietnia 2020 r.

androidx.camera:camera-lifecycle:1.0.0-beta02 został zwolniony. 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-beta02camera-core:1.0.0-beta02.

Camera-Lifecycle Wersja 1.0.0-alpha10

10 lutego 2020 r.

androidx.camera:camera-lifecycle:1.0.0-alpha10 został zwolniony. Wersja 1.0.0-alpha10 zawiera te zatwierdzenia:

Zmiany w interfejsie API

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

Camera-Lifecycle Version 1.0.0-alpha03

22 stycznia 2020 r.

androidx.camera:camera-lifecycle:1.0.0-alpha03 został zwolniony. Wersja 1.0.0-alpha03 zawiera te zatwierdzenia

Aktualizacje

  • Wprowadzono różne poprawki i aktualizacje umożliwiające obsługę zmian w Camera Core i Camera2.

Camera-Lifecycle Version 1.0.0-alpha02

18 grudnia 2019 r.

androidx.camera:camera-lifecycle:1.0.0-alpha02 został zwolniony. Wersja 1.0.0-alpha02 zawiera te zatwierdzenia:

Zmiany w zależnościach

  • Zaktualizowano ustawienie androidx.camera:camera-core:1.0.0-alpha08.

Camera-Lifecycle Version 1.0.0-alpha01

4 grudnia 2019

androidx.camera:camera-lifecycle:1.0.0-alpha01 został zwolniony. Wersja 1.0.0-alpha01 pakietu camera-lifecycle zawiera te commity

Uwagi dotyczące interfejsu API

  • Dodano artefakt cyklu życia aparatu, który udostępnia interfejs LifeCycleCameraProvider i implementację o nazwie ProcessCameraProvider, która zapewnia wiele funkcji poprzedniej klasy CameraX w jądrze i jest uzyskiwana za pomocą metody getInstance().
  • Aplikacje powinny zawierać bibliotekę cyklu życia aparatu, aby korzystać z CameraX.
  • Aby dowiedzieć się, jak zainicjować CameraX za pomocą ProcessCameraProvider, zapoznaj się z notatami w sekcji camera-core.

Camera-Extensions and Camera-View w wersji 1.0.0

Wersja 1.0.0-alpha32

15 grudnia 2021 roku

androidx.camera:camera-extensions:1.0.0-alpha32androidx.camera:camera-view:1.0.0-alpha32 są dostępne. Wersja 1.0.0-alpha32 zawiera te commity.

Zmiany w interfejsie API

  • Usunięto zbędne adnotacje @RequiresApi(21) z klas i interfejsów wewnętrznych. (I8e286, b/204917951)
  • Zaktualizuj pliki interfejsu API dla artefaktu rozszerzeń aparatu. (If683a, b/161377155)

Poprawki błędów

  • Zablokuj możliwość włączania przez aplikację trybów rozszerzenia podczas wiązania VideoCapture. Rozszerzenia CameraX obsługują tylko ImageCapturePreview. VideoCapture nie jest jeszcze obsługiwany. Jeśli aplikacja wiąże VideoCapture i włączy dowolny tryb rozszerzenia, zostanie wywołana funkcja IllegalArgumentException. (I0d87b)
  • Funkcja CameraSelector#filter nie zwraca już błędu IllegalArgumentException, gdy zbiór wyników jest pusty. (I27804)
  • Nazwa interfejsu API ExtensionsManager#getInstance została zmieniona na getInstanceAsync, ponieważ zwraca 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 wiedzą, które rozmiary są obsługiwane w przypadku użycia ImageCapture, i nie mogą odróżnić, czy zwrócone informacje o opóźnieniu dotyczą maksymalnego rozmiaru wyjściowego nagrania czy parametru rozdzielczości wejściowej. (I74bb2)
  • Przeniesienie parametru CameraProvider funkcji ExtensionsManager do interfejsu getInstance() API. 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.

androidx.camera:camera-extensions:1.0.0-alpha31androidx.camera:camera-view:1.0.0-alpha31 są dostępne. Wersja 1.0.0-alpha31 zawiera te commity.

Zmiany w interfejsie API

  • Dodano do publicznego interfejsu API metodę CameraSelector#filter, która umożliwia filtrowanie listy obiektów CameraInfo na podstawie obiektu CameraSelector. (I105d0)

Poprawki błędów

  • Naprawienie problemu z występowaniem awarii podczas szybkiego przełączania trybu rozszerzeń na niektórych urządzeniach. (Iebbef)

Wersja 1.0.0-alpha30

13 października 2021 r.

androidx.camera:camera-extensions:1.0.0-alpha30androidx.camera:camera-view:1.0.0-alpha30 są dostępne. Wersja 1.0.0-alpha30 zawiera te commity.

Zmiany w interfejsie API

  • Do wszystkich klas CameraX dodano adnotację @RequiresApi(21) oraz usunięto minSdkVersion z pliku AndroidManifest.xml. Dzięki temu biblioteka camera-core będzie można łatwo zintegrować z aplikacjami, w których parametr minSdkVersion ma wartość mniejszą niż 21, ale które mają warunkowo używać ścieżek kodu korzystających z interfejsu API 21 lub nowszego. W przypadku aplikacji z parametrem minSdkVersion 21 lub nowszym nie musisz nic robić. (Ie7f2e, b/200599470)

Poprawki błędów

  • Rozwiązaliśmy problem z błędem AbstractMethodError, który występował po włączeniu Proguarda. (Iae468, b/201177844)

Wersja 1.0.0-alpha29

29 września 2021 r.

androidx.camera:camera-extensions:1.0.0-alpha29androidx.camera:camera-view:1.0.0-alpha29 są dostępne. Wersja 1.0.0-alpha29 zawiera te commity.

Zmiany w interfejsie API

  • Oznaczenie ExperimentalUseCaseGroup zostało usunięte, ponieważ interfejsy API nie są już eksperymentalne. (I01ef5)
  • usuń RotationProvider#removeAllListeners(). Zamiast tego użyj elementu RotationProvider#removeListener(...). (Id9d4a)
  • Zaktualizowano klasę RotationReceiver: zmieniono metodę set/clear Listener na add/remove/removeAll, usunięto wariant setListener, który domyślnie używa głównego wątku, oraz dodano adnotację metod. (Ib1669)

Poprawki błędów

  • Zmieniliśmy nazwę ExtensionMode#BEAUTY na FACE_RETOUCH, aby poprawnie przedstawiać, co robi tryb rozszerzenia. (I61f54, b/198515274)
  • Rozwiązaliśmy problem polegający na tym, że kamera jest nieoczekiwanie zamykana, gdy w ramach jednej czynności używane są liczne elementy CameraController i PreviewView. (Ibfd18, b/197539358)

Wersja 1.0.0-alpha28

18 sierpnia 2021 r.

androidx.camera:camera-extensions:1.0.0-alpha28androidx.camera:camera-view:1.0.0-alpha28 są dostępne. Wersja 1.0.0-alpha28 zawiera te commity.

Zmiany w interfejsie API

  • Adnotacja ExperimentalUseCaseGroupLifecycle została usunięta, ponieważ interfejsy API nie są już eksperymentalne. (I17b85)
  • przekształciliśmy klasę RotationListener i zmieniliśmy jej nazwę na RotationProvider. Nadal zapewnia te same funkcje, 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. Zmiana rozmiaru wyjściowego na ostateczny (I099fa).

Poprawki błędów

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

Wersja 1.0.0-alpha27

21 lipca 2021 r.

androidx.camera:camera-extensions:1.0.0-alpha27androidx.camera:camera-view:1.0.0-alpha27 są dostępne. Wersja 1.0.0-alpha27 zawiera te commity.

Zmiany w interfejsie API

  • Interfejs Viewport API przestał być 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 trybu PreviewView PERFORMANCE podczas korzystania z niego razem z interfejsem tworzenia wiadomości. (Ie1137, b/183864890)

Wersja 1.0.0-alpha26

30 czerwca 2021 r.

androidx.camera:camera-extensions:1.0.0-alpha26androidx.camera:camera-view:1.0.0-alpha26 są dostępne. Wersja 1.0.0-alpha26 zawiera te commity.

Zmiany w interfejsie API

  • dodać nową metodę CameraController#getTapToFocusState(), która wyświetla najnowszy wynik po kliknięciu. (Iaccb0)
  • dodanie do klasy CameraController dodatkowych funkcji związanych z jądrem aparatu: metod gettera/settera docelowego formatu obrazu, docelowej rozdzielczości, trybu przechwytywania, metody CameraControl i niestandardowych wykonawców; (Iea8f2)
  • dodaj klasę RotationReceiver, która odbiera zmiany orientacji Surface. Można go użyć do ustawienia docelowego obrotu, gdy urządzenie jest w trybie pionowym lub poziomym. (Ib278f)
  • W klasie ExtensionsManager udostępniono nowe publiczne interfejsy API getEstimatedCaptureLatencyRange. (I6a8ec)
  • Wycofana klasa ExtensionsErrorListener. Obecnie ten interfejs jest używany tylko do sprawdzania, czy podczas włączania trybów rozszerzeń brakuje podglądu lub funkcji ImageCapture. Aby zapewnić prawidłowe działanie funkcji rozszerzenia, CameraX automatycznie doda dodatkowy podgląd lub ImageCapture. Po tym czasie nie będzie już żadnych błędów w tym interfejsie. (I47d9e)
  • Udostępniono nowe interfejsy API publiczne ExtensionsManager getInstance, isExtensionAvailable i getExtensionEnabledCameraSelector oraz wycofano stare klasy <EffectName><UseCase>Extender i powiązane z nimi interfejsy API. (I329e6)

Wersja 1.0.0-alpha25

2 czerwca 2021 r.

androidx.camera:camera-extensions:1.0.0-alpha25androidx.camera:camera-view:1.0.0-alpha25 są dostępne. Wersja 1.0.0-alpha25 zawiera te commity.

Zmiany w interfejsie API

  • Interfejsy ExperimentalCameraFilter API nie są już w fazie eksperymentalnej i zostały włączone jako oficjalne interfejsy API. Można ich używać bez adnotacji OptIn. (I4bc94)
  • Dodaj narzędzie, które przekształca współrzędne między zastosowaniami. Przykład użycia: przekształcenie współrzędnych wykrytych w przypadku użycia ImageAnalysis i wyświetlenie wykrytego obiektu w podglądzie. (I63ab1, b/137515129)
  • Użytkownik CameraView został usunięty. Wartość CameraView została zastąpiona wartością CameraController. Więcej informacji o migracji znajdziesz w przewodniku po migracji: (Id5005)

Poprawki błędów

  • Zawartość komórki ExperimentalUseCaseGroupLifecycle została zastąpiona komórką ExperimentalUseCaseGroup. (I3b2ef, b/159033688)

Wersja 1.0.0-alpha24

21 kwietnia 2021 r.

androidx.camera:camera-extensions:1.0.0-alpha24androidx.camera:camera-view:1.0.0-alpha24 są dostępne. Wersja 1.0.0-alpha24 zawiera te zatwierdzenia.

Poprawki błędów

  • W przypadku interfejsów API w wersji eksperymentalnej zastąpiono adnotację @Experimental adnotacją @RequiresOptIn. Do wywoływania eksperymentalnych interfejsów API używaj interfejsu androidx.annotation.OptIn zamiast wycofanego androidx.annotation.experimental.UseExperimental. (Iff226)
  • Usunięto problem z rozciągniętym podglądem na telefonie Samsung J5 Prime (Ib10b6).

Rozszerzenia i widok aparatu w wersji 1.0.0-alpha23

24 marca 2021 r.

androidx.camera:camera-extensions:1.0.0-alpha23androidx.camera:camera-view:1.0.0-alpha23 są dostępne. Wersja 1.0.0-alpha23 zawiera te commity.

Zmiany w interfejsie API

  • Komponent CameraView jest wycofywany. Zamiast tego użyj elementu LifecycleCameraController. Zapoznaj się z przewodnikiem po migracji (Idac2c).
  • Dodano adnotację FloatRange do setLinearZoom() (I69971)

Poprawki błędów

  • Zablokowane zależności widoku kamery, aby korzystały z elementów wersji 1.0.0. W zależności od camera-view nie będzie już powodować, że zależność gradle's resolution automatycznie aktualizuje camera-core, camera-camera2 i camera-lifecycle do najnowszych artefaktów w wersji 1.1.0, ale camera-view nadal jest zgodna z tymi artefaktami, jeśli są one wyraźnie ustawione na użycie wersji 1.1.0. (Ic8fa1, b/181599852)
  • Naprawiono rozciągnięty podgląd Samsunga A3 w PreviewView. (Iacb30, b/180121821)
  • Rozwiązaliśmy problem polegający na tym, że selektor kamery nie może zostać ustawiony przed zainicjowaniem kamery. (Ic8bd0)

Rozszerzenia i widok aparatu w wersji 1.0.0-alpha22

24 lutego 2021 r.

androidx.camera:camera-extensions:1.0.0-alpha22androidx.camera:camera-view:1.0.0-alpha22 są dostępne. Wersja 1.0.0-alpha22 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • dodaj metodę pobierającą informacje o aparacie do klasy CameraController. (Ib8138, b/178251727)

Poprawki błędów

  • Naprawiono ExtensionsErrorListener, aby zgłaszać błędy, gdy tylko podgląd lub ImageCapture są powiązane. (I5ae39)

Rozszerzenia i widok aparatu w wersji 1.0.0-alpha21

27 stycznia 2021 r.

androidx.camera:camera-extensions:1.0.0-alpha21androidx.camera:camera-view:1.0.0-alpha21 są dostępne. Wersja 1.0.0-alpha21 zawiera te commity.

Opublikowanie w celu obsługi innych artefaktów biblioteki aparatu.

Rozszerzenia i widok aparatu w wersji 1.0.0-alpha20

16 grudnia 2020 roku

androidx.camera:camera-extensions:1.0.0-alpha20androidx.camera:camera-view:1.0.0-alpha20 są dostępne. Wersja 1.0.0-alpha20 zawiera te commity.

Opublikowanie w celu obsługi innych artefaktów biblioteki aparatu.

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

11 listopada 2020 roku

androidx.camera:camera-extensions:1.0.0-alpha19androidx.camera:camera-view:1.0.0-alpha19 są dostępne. Wersja 1.0.0-alpha19 zawiera te commity.

Poprawki błędów

  • W widoku kamery wprowadzono adnotację @ExperimentalVideo. Ta adnotacja oznacza interfejsy API, które udostępniają eksperymentalne funkcje wideo, które mogą ulec zmianie w miarę ich dalszego rozwoju. Każda metoda korzystająca z tych interfejsów API powinna używać adnotacji @UseExperimental z wartością ExperimentalVideo jako markerClass. (I6d729)

Camera-Extensions w wersji 1.0.0-alpha18

14 października 2020 r.

androidx.camera:camera-extensions:1.0.0-alpha18 został zwolniony. Wersja 1.0.0-alpha18 zawiera te commity.

Poprawki błędów

  • Zmniejszono opóźnienie inicjalizacji CameraX i bindToLifecycle (I61dc5).
  • <UseCase>.getTargetRotation() zwróci Surface.ROTATION_0, jeśli zostanie wywołany przed dołączeniem do instancji Camera, chyba że w Builderze lub UseCase ustawiono wartość targetRotation. (I80fcd)

Widok z aparatu, wersja 1.0.0-alpha18

14 października 2020 r.

androidx.camera:camera-view:1.0.0-alpha18 został zwolniony. Wersja 1.0.0-alpha18 zawiera te commity.

Opublikowanie w celu obsługi innych artefaktów biblioteki aparatu.

Camera-Extensions w wersji 1.0.0-alpha17

23 września 2020 r.

androidx.camera:camera-extensions:1.0.0-alpha17 został zwolniony. Wersja 1.0.0-alpha17 zawiera te commity.

Poprawki błędów

Widok z aparatu, wersja 1.0.0-alpha17

23 września 2020 r.

androidx.camera:camera-view:1.0.0-alpha17 został zwolniony. Wersja 1.0.0-alpha17 zawiera te commity.

Poprawki błędów

Camera-Extensions w wersji 1.0.0-alpha16

16 września 2020 roku

androidx.camera:camera-extensions:1.0.0-alpha16 został zwolniony. Wersja 1.0.0-alpha16 zawiera te commity.

Poprawki błędów

  • Dodano metodę w ExtensionsManager, aby pobrać obiekt Extensions, który służy do włączania i wyszukiwania rozszerzeń w przypadku instancji aparatu (I4fb7).

Widok z aparatu, wersja 1.0.0-alpha16

16 września 2020 roku

androidx.camera:camera-view:1.0.0-alpha16 został zwolniony. Wersja 1.0.0-alpha16 zawiera te commity.

Zmiany w interfejsie API

  • Usunięto PreviewView#setDeviceRotationForRemoteDisplayMode()PreviewView#getDeviceRotationForRemoteDisplayMode(). Te 2 metody służą do dostosowywania rotacji podglądu, gdy pożądana rotacja nie jest rotacją wyświetlacza, np. wyświetlacz zdalny. Aby teraz obsłużyć rotację podglądu niewyświetlanego, ustaw żądaną rotację za pomocą Preview#setTargetRotation() i nowego PreviewView#getViewPort(targetRotation). (Ib62cc)
  • Nazwa createSurfaceProvider() została zmieniona na getSurfaceProvider(). Metoda zawsze zwraca ten sam element Preview.SurfaceProvider. (Iff83c)

Poprawki błędów

  • Wymuszenie PreviewView do użycia TextureView, jeśli włączony jest efekt rozszerzenia, a implementacja biblioteki dostawcy wymaga specjalnego przetwarzania powierzchni wyjściowej. (I0c3cc)
  • Zezwalanie na dowolny obrót obiektu w podglądzie. Informacje o przekształceniu są obliczane i zwracane użytkownikowi w locie za pomocą nowego wywołania zwrotnego TranformationInfoListener. (I21470)

Znane problemy

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

Camera-Extensions w wersji 1.0.0-alpha15

19 sierpnia 2020 r.

androidx.camera:camera-extensions:1.0.0-alpha15 został zwolniony. Wersja 1.0.0-alpha15 zawiera te commity.

Poprawki błędów

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

    Widok z aparatu, wersja 1.0.0-alpha15

    19 sierpnia 2020 r.

androidx.camera:camera-view:1.0.0-alpha15 został zwolniony. Wersja 1.0.0-alpha15 zawiera te commity.

Poprawki błędów

  • Funkcja DisplayOrientedMeteringPointFactory przyjmuje instancję CameraInfo zamiast CameraSelector, więc istnieje bezpośrednie mapowanie na potrzeby tworzenia punktów dla aparatu, którego ma używać fabryka. Wszystkie klasy, które używają DisplayOrientedMeteringPointFactory, przyjmują też instancję CameraInfo zamiast CameraSelector. (I400c1)
  • Użytkownik TextureViewMeteringPointFactory został usunięty. Usługa PreviewView udostępnia publiczny interfejs API (createMeteringPointFactory()) do tworzenia fabryki punktów pomiarowych niezależnie od tego, czy korzysta ona z interfejsu TextureView czy SurfaceView. (Ide693)
  • Zmień nazwy trybów implementacji PreviewView SURFACE_VIEW/TEXTURE_VIEW na PERFORMANCE/COMPATIBLE. PERFORMANCE to stary tryb SURFACE_VIEW, a COMPATIBLE to stary tryb TEXTURE_VIEW. (I0edc2)
  • W przypadku przechwytywania obrazu zastąpij flagę przewracania poziomego w metadanych na podstawie kierunku kamery. (I28499)

Camera-Extensions w wersji 1.0.0-alpha14

22 lipca 2020 r.

androidx.camera:camera-extensions:1.0.0-alpha14 został zwolniony. Wersja 1.0.0-alpha14 zawiera te zatwierdzenia.

Widok z aparatu, wersja 1.0.0-alpha14

22 lipca 2020 r.

androidx.camera:camera-view:1.0.0-alpha14 został zwolniony. Wersja 1.0.0-alpha14 zawiera te zatwierdzenia.

Camera-Extensions w wersji 1.0.0-alpha13

24 czerwca 2020 r.

androidx.camera:camera-extensions:1.0.0-alpha13 został zwolniony. Wersja 1.0.0-alpha13 zawiera te zatwierdzenia.

Poprawki błędów

  • Dodano eksperymentalne interfejsy do filtrowania kamer według identyfikatora kamery i właściwości CameraCharacteristics. (I28f61)

Widok z aparatu, wersja 1.0.0-alpha13

24 czerwca 2020 r.

androidx.camera:camera-view:1.0.0-alpha13 został zwolniony. Wersja 1.0.0-alpha13 zawiera te zatwierdzenia.

Poprawki błędów

  • CameraView nie ulega już awarii z błędem IllegalArgumentException podczas wiązania z LifecycleOwner, którego stan Lifecycle przechodzi w stan DESTROYED wkrótce po wiązaniu. Binding Lifecycles w stanie DESTROYED nie będzie próbować otwierać kamery. (I7c2b8)
  • Stan strumienia PreviewView jest teraz dostępny za pomocą metody CameraView.getPreviewStreamState() (I21a2b).

Camera-Extensions w wersji 1.0.0-alpha12

10 czerwca 2020 r.

androidx.camera:camera-extensions:1.0.0-alpha12 został zwolniony. Wersja 1.0.0-alpha12 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązanie problemu z zawieszaniem się aplikacji podczas inicjowania CameraX, gdy telefon jest w trybie Nie przeszkadzać. Jeśli InitializationException zawiera CameraUnavailableException, zostanie ono ustawione na ListenableFuture wyniku inicjalizacji zamiast powodować zamykanie aplikacji. (I9909a, b/149413835)

Widok z aparatu, wersja 1.0.0-alpha12

10 czerwca 2020 r.

androidx.camera:camera-view:1.0.0-alpha12 został zwolniony. Wersja 1.0.0-alpha12 zawiera te zatwierdzenia.

Poprawki błędów

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

Camera-Extensions Wersja 1.0.0-alpha11

27 maja 2020 r.

androidx.camera:camera-extensions:1.0.0-alpha11 został zwolniony. Wersja 1.0.0-alpha11 zawiera te commity.

Widok z aparatu, wersja 1.0.0-alpha12

10 czerwca 2020 r.

androidx.camera:camera-view:1.0.0-alpha12 został zwolniony. Wersja 1.0.0-alpha12 zawiera te zatwierdzenia.

Nowe funkcje

Zmiany w interfejsie API

Poprawki błędów

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

Camera-View Wersja 1.0.0-alpha11

27 maja 2020 r.

androidx.camera:camera-view:1.0.0-alpha11 został zwolniony. Wersja 1.0.0-alpha11 zawiera te commity.

Zmiany w interfejsie API

  • Dodaj interfejs API PreviewView#getPreviewStreamState, który pozwala aplikacjom sprawdzać, czy podgląd jest przesyłany strumieniowo. Gdy widok podglądu jest w trybie TEXTURE_VIEW, stan STREAMING również gwarantuje, że obraz podglądu jest widoczny. (Ic0906, b/154652477)
  • Dodano interfejs API PreviewView#setDeviceRotationForRemoteDisplayMode(), aby umożliwić obracanie urządzenia w celu obliczenia transformacji, jeśli aplikacja działa w trybie wyświetlania zdalnego. (I59b95, b/153514525)

Poprawki błędów

  • Rozwiązaliśmy problem z zniekształceniem podglądu na kamerach FULL/LIMITED/LEVEL_3 z Androidem 7.0 lub starszym. Tryb wymuszonego korzystania ImplementationMode#TEXTURE_VIEW, gdy wersja Androida jest 7.0 lub starsza. (I83e30, b/155085307)
  • Parametr CameraInfo został usunięty z funkcji PreviewView#createSurfaceProvider(), a funkcja PreviewView pobiera go teraz wewnętrznie z funkcji SurfaceRequest. (If18f0, b/154652477)
  • Domyślny format obrazu VideoCapture został ustawiony na 16:9 w obszarze CameraView. (Ie6a7b, b/153237864)
  • Rozwiązanie problemu z PreviewView czarnym ekranem po przesunięciu fragmentu Preview i powrocie do niego w ViewPager2. Rozwiązano też problem, gdy removeView(previewview), a potem addView(previewView). (Iab555, b/149877652, b/147354615)
  • Zaktualizuj interfejs API CameraView#takePicture(), aby umożliwić zapisywanie obrazów w usłudze UriOutputStream. Zaktualizuj aplikację testową, aby używała Uri jako przykładu kanonicznego. (Ia2459, b/153607583)
  • Typ skali PreviewView możesz ustawić w układzie XML, określając atrybut ScaleType. (I08565, b/153015659)
  • CameraView.ScaleType został(a) usunięty(a). Zamiast tego użyj funkcji PreviewView.ScaleType, aby ustawić lub pobrać typ skali w CameraView. (Ia8974, b/153014831)
  • Domyślnie nadaj PreviewView kolor tła, jeśli nie ma go jeszcze domyślnie. Zapobiega to wyświetlaniu treści znajdujących się za nim przed rozpoczęciem strumienia podglądu. (I09fad)

Camera-Extensions Wersja 1.0.0-alpha10

15 kwietnia 2020 roku

androidx.camera:camera-extensions:1.0.0-alpha10 został zwolniony. Wersja 1.0.0-alpha10 zawiera te zatwierdzenia.

Poprawki błędów

  • poprawki umożliwiające wydanie Camera-Core;

Widok z kamery – wersja 1.0.0-alpha10

15 kwietnia 2020 roku

androidx.camera:camera-view:1.0.0-alpha010 został zwolniony. Wersja 1.0.0-alpha010 zawiera te commity.

Poprawki błędów

  • Rozwiązano wcześniej znany problem, który powodował, że implementacja PreviewView w surfaceView 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.

androidx.camera:camera-extensions:1.0.0-alpha09 został zwolniony. Wersja 1.0.0-alpha09 zawiera te commity.

Poprawki błędów

  • Aktualizacja w celu obsługi poprawek błędów w artefaktach camera-camera2:1.0.0-beta02, camera-core:1.0.0-beta02 i camera-lifecycle:1.0.0-beta02

Widok z aparatu, wersja 1.0.0-alpha09

1 kwietnia 2020 r. androidx.camera:camera-view:1.0.0-alpha09 została opublikowana. Wersja 1.0.0-alpha09 zawiera te commity.

Znane problemy

  • Korzystanie z funkcji ImplementationMode.SURFACE_VIEW w komponencie PreviewView może nie działać prawidłowo na niektórych urządzeniach. Dzieje się tak, ponieważ komponent SurfaceView używany do podglądu powoduje unieważnienie powierzchni, gdy cykl życia okna, w którym się znajduje, zostanie zatrzymany. Gdy okienko zostanie ponownie uruchomione, kamera zostanie ponownie otwarta i może spróbować wznowić podgląd, zanim powierzchnia SurfaceView będzie ponownie ważna. Na razie należy używać ImplementationMode.TEXTURE_VIEW.

Zmiany w interfejsie API

  • Nazwa PreviewView.setImplementationMode() została zmieniona na PreviewView.setPreferredImplementationMode().
  • Nazwa PreviewView.getImplementationMode() została zmieniona na PreviewView.getPreferredImplementationMode().
  • Zawartość komórki PreviewView.getSurfaceProvider() została zastąpiona komórką PreviewView.createSurfaceProvider(CameraInfo), która przyjmuje wartość null w komórce CameraInfo, która jest używana do optymalizacji podglądu przez użycie ImplementationMode.SURFACE_VIEW, gdy tylko to możliwe. Jeśli przekazano instancję null lub preferowany tryb implementacji ma wartość ImplementationMode.TEXTURE_VIEW, wewnętrznie używana jest wartość ImplementationMode.TEXTURE_VIEW.
  • Ten przykładowy kod pokazuje, jak wcześniej używano podglądu za pomocą metody PreviewView.

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

    Obecnie możesz napisać:

    val camera = cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, preview)
    previewView.preferredImplementationMode = ImplementationMode.TEXTURE_VIEW
    preview.setSurfaceProvider(previewView.createSurfaceProvider(camera.cameraInfo))
    
  • Do PreviewView.getSurfaceProvider() została dodana adnotacja @UiThread, co oznacza, że należy ją wywołać z wątku głównego. (I192f3)

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

  • Dodano PreviewView.getScaleType().

  • Usunięto obsługę ustawiania trybu implementacji dla PreviewView w układzie XML za pomocą atrybutu implementationMode.

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

Poprawki błędów

  • Rozwiązaliśmy problemy z wyświetlaniem nieprawidłowego podglądu po zmianie rozmiaru PreviewView. (I71101)

Camera-Extensions w wersji 1.0.0-alpha08

26 lutego 2020 r.

androidx.camera:camera-extensions:1.0.0-alpha08 został zwolniony. Wersja 1.0.0-alpha08 zawiera te commity.

Widok z aparatu, wersja 1.0.0-alpha08

26 lutego 2020 r.

androidx.camera:camera-view:1.0.0-alpha08 został zwolniony. Wersja 1.0.0-alpha08 zawiera te commity.

Poprawki błędów

  • Zawartość komórki ListenableFuture w kolumnie SurfaceRequest.provideSurface() została zastąpiona przez ExecutorCallback. Upraszcza to interfejs API, ponieważ nie wymaga już obsługi wyjątków w przypadku provideSurface() i zapewnia, że wywołania zwrotnego provideSurface() nie można anulować. Ma to zapobiegać awariom na starszych urządzeniach spowodowanym przedwczesnym zwalnianiem powierzchni. Obiekt SurfaceRequest.Result jest teraz używany do śledzenia sposobu korzystania przez SurfaceRequest z podawanego Surface. (I7854b)
  • Zmieniono nazwę SurfaceRequest.setSurface(Surface) na SurfaceRequest.provideSurface(Surface), a SurfaceRequest.setWillNotComplete() na SurfaceRequest.willNotProvideSurface(). (I224fe)
  • Naprawiono błąd inicjowania wariantów aplikacji z włączonym ProGuardem, zachowując flagę, która ustawia domyślnego dostawcę CameraXConfig. (I2d6c1)

Camera-Extensions w wersji 1.0.0-alpha07

10 lutego 2020 r.

androidx.camera:camera-extensions:1.0.0-alpha07 został zwolniony. Wersja 1.0.0-alpha07 zawiera te zatwierdzenia

Poprawki błędów

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

Widok z aparatu – wersja 1.0.0-alpha07

10 lutego 2020 r.

androidx.camera:camera-view:1.0.0-alpha07 został zwolniony. Wersja 1.0.0-alpha07 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Implementacja PreviewViewTextureView ustawia teraz rozmiar TextureView na rozmiar wyjściowy czujnika aparatu, zanim zostanie ona przeskalowana, aby wypełnić element nadrzędny PreviewView. Jeśli chcesz, aby podgląd kamery wypełniał całą część interfejsu użytkownika (np. cały ekran), nie należy ustawiać rozmiaru PreviewView na stałą wartość ani nie należy stosować zawinięcia zawartości (np. za pomocą atrybutu „wrap_content”). Może to spowodować, że podgląd kamery wypełni tylko część PreviewView (jeśli rozmiar wyjściowy czujnika kamery jest mniejszy). Zamiast tego należy ustawić PreviewView tak samo duży jak jego nadrzędny (np. za pomocą atrybutu „match_parent”). (1204869)

Poprawki błędów

  • Zaktualizowano ImageCapture, aby umożliwić zapisywanie obrazów w folderach UriOutputStream. Połączone przeciążone metody takePicture w jedną. Zaktualizowano aplikację testową, aby używała Uri jako przykładu kanonicznego. (Ia3bec)
  • Nazwa Preview.PreviewSurfaceProvider została zmieniona na Preview.SurfaceProvider. SurfaceProvider nie wymagają już od programistów tworzenia własnych ListenableFuture, a udzielanie Surface odbywa się teraz za pomocą nowego obiektu SurfaceRequest. Metoda Preview.getPreviewSurfaceProvider() została usunięta z powodu możliwości jej niewłaściwego użycia, gdy Preview jest połączona z innymi klasami, takimi jak PreviewView. (I20105)
  • Argumenty, które były wcześniej przekazywane w parametrach ImageCapture.OnImageSavedCallback.onError()ImageCapture.OnImageCapturedCallback.onError(), zostały zastąpione przez pojedynczy argument ImageCaptureException, który nadal zawiera wszystkie informacje, które były przekazywane wcześniej.
  • Argument pliku, który był wcześniej przekazywany w parametry ImageCapture.OnImageSavedCallback.onImageSaved(), został usunięty. (I750d2)
  • Interfejs API został zaktualizowany. Metody getZoomRatio(), getMaxZoomRatio(), getMinZoomRatio()getLinearZoom() interfejsu CameraInfo zostały połączone w jedną metodę getZoomState(), która zwraca instancję ZoomState. (Ib19fe)

Camera-Extensions w wersji 1.0.0-alpha06

22 stycznia 2020 r.

androidx.camera:camera-extensions:1.0.0-alpha06 został zwolniony. Wersja 1.0.0-alpha06 zawiera te zatwierdzenia

Aktualizacje

  • Wprowadzono różne poprawki i aktualizacje umożliwiające obsługę zmian w Camera Core i Camera2.

Widok z aparatu, wersja 1.0.0-alpha06

22 stycznia 2020 r.

androidx.camera:camera-view:1.0.0-alpha06 został zwolniony. Wersja 1.0.0-alpha06 zawiera te zatwierdzenia

Aktualizacje

  • Wprowadzono różne poprawki i aktualizacje umożliwiające obsługę zmian w Camera Core i Camera2.

Camera-Extensions w wersji 1.0.0-alpha05

18 grudnia 2019 r.

androidx.camera:camera-extensions:1.0.0-alpha05 został zwolniony. Wersja 1.0.0-alpha05 zawiera te zatwierdzenia:

Poprawki błędów

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

Widok z kamery, wersja 1.0.0-alpha05

18 grudnia 2019 r.

androidx.camera:camera-view:1.0.0-alpha05 został zwolniony. Wersja 1.0.0-alpha05 zawiera te zatwierdzenia:

Znane problemy

  • Przy korzystaniu z PreviewView (b/146215202) współczynnik proporcji może być nieprawidłowy.

Nowe funkcje

  • Wprowadziliśmy nową klasę PreviewView.TextureViewImplementation, która synchronizuje cykl życia SurfaceTexture z korzystaniem przez aparat z powierzchni TextureView.

Camera-Extensions w wersji 1.0.0-alpha04

4 grudnia 2019

androidx.camera:camera-extensions:1.0.0-alpha04 został zwolniony. Wersja 1.0.0-alpha04 rozszerzeń aparatu zawiera te commity

Zmiany w interfejsie API

  • Sprawdzanie dostępności i włączania rozszerzenia przyjmuje teraz parametr wejściowy 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()
    )
    

Widok z kamery, wersja 1.0.0-alpha04

4 grudnia 2019

androidx.camera:camera-view:1.0.0-alpha04 został zwolniony. Wersja 1.0.0-alpha04 pakietu camera-view zawiera te commity

Zmiany w interfejsie API

  • Klasa PreviewView służy do łatwego wyświetlania danych wyjściowych z przypadku użycia Podgląd w aplikacji.
  • W układzie można uwzględnić PreviewView:

    <androidx.camera.view.PreviewView
      android:id="@+id/preview_view"
       />
    
  • PreviewView udostępnia PreviewSurfaceProvider, aby ułatwić łączenie przypadku użycia podglądu

    preview.setPreviewSurfaceProvider(previewView.previewSurfaceProvider)
    
  • W nazwach interfejsów API „ZoomLevel” jest teraz „ZoomRatio

  • Zmieniono możliwość zwracania wartości null w przypadku niektórych parametrów metody.

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

9 października 2019 r.

androidx.camera:camera-extensions:1.0.0-alpha03androidx.camera:camera-view:1.0.0-alpha03 są dostępne. Oto kompilacje uwzględnione w camera-extensions:1.0.0-alpha03, a tutaj kompilacje uwzględnione w camera-view:1.0.0-alpha03.

Nowe funkcje

  • Dodano inicjalizator 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.

Zasoby androidx.camera:camera-extensions:1.0.0-alpha02androidx.camera:camera-view:1.0.0-alpha02 są dostępne. Oto kompilacje zawarte w camera-extensions:1.0.0-alpha02, a tutaj kompilacje zawarte w camera-view:1.0.0-alpha02.

  • Dodano testy, które sprawdzają, czy PreviewImageProcessorImpl prawidłowo implementuje sygnatury czasowe.
  • Napraw błąd testu ExtensionTest na Nexusie 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.

Zasoby androidx.camera:camera-extensions:1.0.0-alpha01androidx.camera:camera-view:1.0.0-alpha01 są dostępne. Oto kompilacje zawarte w camera-extensions:1.0.0-alpha01, a tutaj kompilacje zawarte w camera-view:1.0.0-alpha01.

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