CameraX
Ta tabela zawiera wszystkie artefakty w grupie androidx.camera
.
Artefakt | Wersja stabilna | Wersja kandydująca | Wersja Beta | Wersja alfa |
---|---|---|---|---|
camera-camera2 | 1.4.1 | - | - | 1.5.0-alpha05 |
camera-core | 1.4.1 | - | - | 1.5.0-alpha05 |
camera-compose | - | - | - | 1.5.0-alpha05 |
camera-effects | 1.4.1 | - | - | 1.5.0-alpha05 |
camera-extensions | 1.4.1 | - | - | 1.5.0-alpha05 |
camera-feature-combination-query | - | - | - | 1.5.0-alpha05 |
camera-feature-combination-query-play-services | - | - | - | 1.5.0-alpha05 |
camera-lifecycle | 1.4.1 | - | - | 1.5.0-alpha05 |
camera-mlkit-vision | 1.4.1 | - | - | 1.5.0-alpha05 |
camera-view | 1.4.1 | - | - | 1.5.0-alpha05 |
camera-viewfinder | - | - | 1.3.0-beta02 | 1.4.0-alpha07 |
camera-video | 1.4.1 | - | - | 1.5.0-alpha05 |
Testowanie urządzeń
Biblioteka CameraX jest testowana na wielu urządzeniach w naszej pracowni. 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ć repozytorium Google Maven do projektu. 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. Daj nam znać, jeśli zauważysz nowe problemy lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz zagłosować na istniejący problem, klikając przycisk z gwiazdką.
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 komisy.
Nowe funkcje
- Nowa biblioteka. Biblioteka ta zawiera komponent Viewfinder, który można używać z Compose, CameraX i Camera2. Składany wizjer obsługuje różne formaty obrazu i obsługę zdarzeń dotykowych.
Aplikacja Camera Viewfinder w wersji 1.4
Wersja 1.4.0-alpha07
12 czerwca 2024 r.
androidx.camera:camera-viewfinder:1.4.0-alpha07
i androidx.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-alpha06
i androidx.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 one implementacje na poziomie źródła, i dodaj stałe wartości dlaTransformationInfo.sourceRotation
.ImplementationMode
(Ic6149) - Dodano
ZoomGestureDetector.ZoomEvent
, aby zawierać stany gestu powiększania. (I84cdf)
Wersja aparatu 1.5
Wersja 1.5.0-alpha05
15 stycznia 2025 r.
androidx.camera:camera-*:1.5.0-alpha05
został zwolniony. Wersja 1.5.0-alpha05 zawiera te komity.
Zmiany w interfejsie API
- Dodaj
VideoCapture.getSelectedQuality()
, aby znać wybraną jakość na podstawieQualitySelector
. (I70508, b/204288986) - Gdy wywołanie przechwytywania obrazu zostanie wywołane za pomocą interfejsu
ImageCapture.OnImageCapturedCallback
API, informacje ImageInfo z zwróconego obiektuImageProxy
mogą teraz służyć do określenia, czy błysk został włączony za pomocą nowego interfejsuImageInfo.getFlashState()
API. (Id2c61, b/380527406) - Dodano obsługę formatu wyjściowego
OUTPUT_IMAGE_FORMAT_NV21
dlaImageAnalysis
. (I484ab) - Usuń eksperymentalną adnotację artefaktu
featurecombinationquery
(I4427f) - Dostosowywanie zakresu współczynnika powiększenia dozwolonego dla
CameraControl
na podstawie specyficznych cech rozszerzeń, gdy włączony jest tryb rozszerzeń. (I85af1)
Poprawki błędów
- Uaktualniono
compileSdk
do poziomu 35, aby umożliwić korzystanie z interfejsów API związanych z Androidem 15. Aplikacje korzystające z bibliotek CameraX również będą musiały uaktualnić ustawienie konfiguracjicompileSdk
. (Ic80cd) - Ta biblioteka korzysta teraz z adnotacji JSpecify dotyczących nullowości, które są używane w ramach typu. Deweloperzy Kotlina powinni używać tych argumentów kompilatora, aby wymusić prawidłowe użycie:
-Xjspecify-annotations=strict
,-Xtype-enhancement-improvements-strict-mode
(Idc6c6, b/326456246).
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ępnione interfejsy API
ImageCapture.Builder#setOutputFormat
iImageCaptureCapabilities#getSupportedOutputFormats
jako stabilne (Ieb04a) - Dodaj
VideoCapture.getResolutionInfo()
, aby uzyskać informacje o rozdzielczości, gdyVideoCapture
jest powiązany z cyklem życia. (Icb478) - Udostępniono interfejsy
PreviewView.getScreenFlash
iPreviewView.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ązanie problemu polegającego na tym, że latarka nieoczekiwanie wyłączała się po zrobieniu zdjęcia w Redmi Note 6 Pro. (I2e0e8, b/377144569)
- Rozwiązaliśmy problem 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 przy ustawieniu kierowania
CameraEffect
na urządzeniach TCL. (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 udostępnij wImageCaptureCapabilities#getSupportedOutputFormats
.OUTPUT_FORMAT_RAW
służy do przechwytywania obrazu RAW, który jest formatem Adobe DNG, aOUTPUT_FORMAT_RAW_JPEG
do jednoczesnego przechwytywania obrazów RAW i JPEG. Nowy interfejs APIImageCapture#takePicture
służy do jednoczesnego przechwytywania zdjęć. Musi on przekazywać 2 wartościOutputFileOptions
: 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
startFocusMetering
zPreviewView.getMeteringPointFactory
nie powodowało uzyskania prawidłowych współrzędnych czujnika, gdy efekt jest włączony lub gdy 4 przypadki użycia są powiązane (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 STARE. Docelowa szybkość klatek ustawiona za pomocą interfejsu APIsetTargetFrameRate
lubCamera2Interop
była zawsze zastępowana wartością podaną przezAeFpsRangeLegacyQuirk
. Dzięki tej poprawce biblioteka CameraX będzie uwzględniać wartość ustawioną za pomocą interfejsu APIsetTargetFrameRate
lubCamera2Interop
. (Ie2d32) - Dodano funkcje lampy błyskowej/torby/3A do robienia zdjęć za pomocą
CameraEffect
. Zdjęcia wykonane z użyciemCameraEffect
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 bezCameraEffect
. (I5ff30) - Wykluczono problematyczne rozmiary wyjściowe dla
ImageAnalysis
na urządzeniu Samsung SM-A057G. JeśliImageAnalysis
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, zastosowanoExcludedSupportedSizesQuirk
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ń doPreview
iVideoCapture
. (I4fdac) - Wprowadziliśmy obejście problemu, aby rozwiązać problem z nieprawidłowymi metadanymi obrazu JPEG na urządzeniach Samsung S10e i S10+. Po zastosowaniu poprawki CameraX może zapisać obraz JPEG lub zwrócić prawidłowe obiekty Bitmap 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 A52s o identyfikatorze 0, ponieważ podczas rejestrowania zdjęć HDR mogą wystąpić problemy z załadunkiem i konfiguracją sesji w trybach BOKEH lub FACE_RETOUCH. (I03ec9, b/364152642)
- 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. (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.
Nowe funkcje
- W ramach interfejsu CameraX Viewfinder Compose Adapter udostępniono nowy element
camera-compose
, który wyświetla podgląd strumienia z aparatu CameraXSurfaceRequest
zcamera-core
. (I8666e) - Dodano nowy komponent
CameraXViewfinder
, który działa jako idiomatyczny komponent dostosowujący komponenty CameraXSurfaceRequest
do komponentuViewfinder
. (I4770f)
Zmiany w interfejsie API
- Udostępnij interfejs API do ustawiania ustawień kompozycji podczas jednoczesnego nagrywania wideo z 2 kamer. Ustawienia obejmują wartość alfa do mieszania, przesunięcie w swoistych współrzędnych x i y oraz skalę szerokości i wysokości okna wyświetlania obrazu z kamery. Odsunięcie, szerokość i wysokość są określone w skali 1:1. (Ia2b8a)
- Wyświetlony
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 funkcję
bindToLifecycle
, a obiektLifecycleOwner
został zniszczony. (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 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, aVideoCapture
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
KameraX 1.4.0 to mnóstwo ekscytujących nowości. Podsumowanie:
Główna funkcja: 10-bitowy HDR:
- Łatwo robić niesamowite zdjęcia i filmy HDR.
- Obsługuje HLG i kodowanie HEVC 10-bitowe.
- Korzystanie z podglądu 10-bitowego HDR i sprawdzanie 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
takePicture
iawaitInstance
. - Efekty w czasie rzeczywistym: stosuj efekty takie jak znak wodny i podświetlenie obiektu.
- Interfejs CameraController API: nowe elementy sterujące do konfigurowania przechwytywania 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 funkcjami
VideoCapture
i nowymi funkcjamiImageCapture
. - 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 beta i RC.
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
startFocusMetering
zPreviewView.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/torby/3A do robienia zdjęć za pomocą
CameraEffect
. Zdjęcia wykonane z użyciemCameraEffect
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 bezCameraEffect
. (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 na urządzeniach. (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 obiektLifecycleOwner
został zniszczony. (I6e6d8) - Dodano animację widoczności w
ScreenFlashView
dlaScreenFlash#apply
, która rozwiązuje też problemy 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.getScreenFlash
iPreviewView.setScreenFlashOverlayColor
na wypadek, gdy elementScreenFlashView
nie został dodany w sposób jawny. (I43945)
Poprawki błędów
- Rozwiązano problemy z ekspozycją i odcieniami kolorów podczas robienia zdjęć z włączoną lampą błyskową w warunkach słabego oświetlenia w ramach zastosowania związanego z wideo. (Ic9814)
- Rozwiązanie problemu, który powodował, że przerwanie wykonania zapytania
takePicture
z włączonymi rozszerzeniami mogło spowodować nieotrzymanie wyniku, a następne zapytanietakePicture
mogło 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 komisy.
Zmiany w interfejsie API
- Podobnie jak w przypadku
VideoCapture
, dodajsetMirrorMode
do przypadku użycia Podgląd. Obsługa trybu lustrzanego włączania i wyłączania dla strumienia podglądu za pomocąOutputConfiguration.setMirrorMode
od interfejsu API 33 lub nowszego. W przypadku starszych interfejsów API ta funkcja nie będzie działać. (I821f4)
Poprawki błędów
- Rozwiązano problem, który powodował, że aplikacje nie mogły robić zdjęć na urządzeniu Samsung Tab A8, gdy
ImageCapture
wybierało rozdzielczość 1920 x 1080 w kombinacjiPreview
+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 funkcje przechwytywania i namierzania dotykiem nie korzystały z 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) - Naprawiono błąd powodujący awarię podczas robienia zdjęć za pomocą funkcji podglądu.
ImageCapture
iVideoCapture(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 komity.
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 typowy dla języka Kotlin. (I920be)
Zmiany w interfejsie API
- Dodaj interfejsy API formatu wyjściowego do
ImageCapture
i dodaj metodęgetSupportedOutputFormats
doImageCaptureCapabilities
, aby zapytać o możliwości urządzenia. Domyślna wartość formatu wyjściowego toOUTPUT_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 naOUTPUT_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 w 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
PhysicalCameraInfo
wCameraInfo
, aby zapytać o informacje o fizycznym aparacie, oraz dodaj metodę ustawiania/odczytywania identyfikatora fizycznego aparatu wCameraSelector
(Ic5b90). - Zawartość komórki
CameraController#COORDINATE_SYSTEM_VIEW_REFERENCED
zastąp tekstemImageAnalysis#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óbowania w przypadku inicjalizacji CameraX. (I36dd2) - Umożliwienie tworzenia obiektu
ImageCaptureLatencyEstimate
w celu ułatwienia testowania (Iaba99) - Dodaj
ImageAnalysis#COORDINATE_SYSTEM_SENSOR
. W takim przypadku funkcjaMlKitAnalyzer
zwraca współrzędne w systemie współrzędnych czujnika aparatu. (I3ec61) - Interfejs API metadanych rozszerzeń. Nowe interfejsy
CameraExtensionsInfo
iCameraExtensionsControl
umożliwiają aplikacjom monitorowanie i dostosowywanie ustawień siły rozszerzenia. Aplikacje mogą uzyskać instancjęCameraExtensionsInfo
lubCameraExtensionsControl
za pomocą nowo dodanych metodExtensionsManager#getCameraExtensionsInfo()
lubExtensionsManager#getCameraExtensionsControl()
. (I28e1a) - Dodano wersję
ProcessCameraProvider.awaitInstance
, która jest wersją zawieszoną wersjiProcessCameraProvider.getInstance
(Ib22b9). - Dodaj interfejs API
PreviewView#getSensorToViewTransform()
. Macierz ta reprezentuje transformację z współrzędnych czujnika aparatu na współrzędnePreviewView
. Można go użyć do przekształcenia współrzędnych z jednegoUseCase
na inne. Na przykład przekształcenie współrzędnych wykrytych obiektów wImageAnalysis
na nakładkęPreviewView
. (I947ab) - Uczynić interfejs API
camera-viewfinder-core
bardziej uniwersalnym, aby można było go używać w przypadkucamera-viewfinder
icamera-viewfinder-compose
. (I1e295) - Dodaj funkcję
getSurface
doViewfinderSurfaceRequest
. (I781a0) - Użyj właściwości
camera-viewfinder-core
w elementachcamera-viewfinder
, a elementyViewfinderSurfaceRequest
iCameraViewfinder
oznacz jako przestarzałe. (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średnioResolutionSelector
z preferowanym rozdzielczością i dopasowującAspectRatioStrategy
doImageAnalysis
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) - Zastosowanie sprawdzania nieprawidłowych danych JPEG do urządzeń 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 zwrócić 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)
- Usunięto obsługę
ImageAnalysis
w rozszerzeniach CameraX, ponieważ wiele implementacji rozszerzeń przez producentów nie działa dobrze zImageAnalysis
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
lubImageCapture
. Ten element zawiera implementacje interfejsu APICameraEffect
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 dodać znak wodny lub wyróżnić wykryte obiekty na wyjściu z kamery.DynamicRange
Interfejsy API do stosowania w przypadku podglądu: teraz zakres dynamiczny można ustawiać w przypadku użycia podglądu niezależnie od przypadku użycia filmu. Umożliwia to wyświetlanie dynamicznych zakresów HDR, takich jak HLG10, tylko w podglądzie. WCameraInfo
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
naScreenFlashListener
i przeniesiony parametrScreenFlashUiCompleter#getExpirationTimeMillis
do parametruexpirationTimeMillis
w kampaniiScreenFlash#apply
. (I13944) - Dodano nowe interfejsy API, które umożliwiają ustawianie zakresu dynamicznego w przypadku użycia podglądu oraz przesyłanie 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 naisMirroring()
(I47063) - Dodano w CameraX obsługę szacowania opóźnienia w chwytaniu zdjęć 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 naScreenFlash
,ScreenFlashUiControl#applyScreenFlashUi
naScreenFlash#apply
,ScreenFlashUiControl#clearScreenFlashUi
naScreenFlash#clear
, a zamiast bezpośredniego udostępniania metodySCREEN_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 czynności lub fragmenty nie były uwalniane po włączeniu rozszerzeń (I14215).
- Rozwiązaliśmy problem, który powodował, że funkcja
getZoomRatio
zwracała nieprawidłową wartość zmniejszoną po zastosowaniu zwiększonego współczynnika powiększenia. (I4aa0d, b/317543616) - Zdarzenie
ImageCapture#ScreenFlash#clear
jest wywoływane natychmiast, gdyImageCapture
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ązano problem z zawieszaniem się aplikacji, który występował, gdy cykl życia został zatrzymany 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.onCaptureStarted
iOnImageSavedCallback.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 Screen Flash w aplikacji CameraX do robienia zdjęć za pomocą 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 pre-capture 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 poziomuPreviewView
lub z nowegoScreenFlashView
, 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 wywołania zwrotnego 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ływaniatakePicture()
można zaimplementowaćonPostviewBitmapAvailable
ionCaptureProcessProgressed
wOnImageSavedCallback
lubOnImageCapturedCallback
, aby uzyskać powiadomienie o wyświetleniu reklamy i przetworzyć powiadomienie o postępach (jeśli jest 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ądzieUseCase
. (Ie5b6c) - Dodano interfejsy API, aby obsługiwać więcej jakości w przypadku
VideoCapture
.Recorder.Builder#setVideoCapabilitiesSource(int)
można użyć zVIDEO_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 UHD, gdy tylko jest to możliwe, aleCamcorderProfile
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. (I9a96c, b/308240643)
Poprawki błędów
- W sekcji Aparat
1.3.1
: zwiększono wydajnośćProcessCameraProvider#bindToLifecycle()
. Główną zmianą jest optymalizacja procesu identyfikowania najbardziej odpowiednich kombinacji rozmiarów dlaUseCases
. Optymalne wyniki zależą od konkretnych kombinacjiUseCase
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 uchwycionych obrazów 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, który powoduje przypadkowe zwracanie niepustych obsługiwanych rozmiarówImageAnalysis
. (I7ec31) - Rozwiązaliśmy problem z wydajnością, który polegał na zwiększeniu obciążenia procesora i zużycia energii po włączeniu rozszerzeń. (Ibdccb)
- Dodano Snapdragona 480 do
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.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 filmu lub podglądu. (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) - Dodawanie interfejsów API do konfigurowania zakresu tonalnego, częstotliwości klatek i trybu lustrzanego podczas rejestrowania filmów. (Ifb8f7)
- Wycofaj
OutputSize
i zastąp goResolutionSelector
.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 zImageCapture
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, który powodował, że funkcja
getZoomRatio
zwracała nieprawidłową wartość zmniejszoną po zastosowaniu zwiększonego współczynnika powiększenia. (I4aa0d, b/317543616) - Naprawiono problem z robieniem zdjęć/naciśnięciem, aby ustawić ostrość, które nie używało powtarzających się wartości FPS/trybu stabilizacji, co może powodować ponowne tworzenie sesji rejestrowania i problemy z opóźnieniem lub zablokowanie podglądu na niektórych urządzeniach. (I7dc0b)
- Rozwiązano problem, który powodował, że podczas wywoływania funkcji
setTargetFrameRate
za pomocą funkcjiFRAME_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średnioResolutionSelector
z preferowanym rozdzielczością i odpowiadającymAspectRatioStrategy
do przypadku użyciaImageAnalysis
. (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 komity.
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 typu 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 scenariuszach:
4
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
3
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
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
- Funkcje dotyczące filmów, w tym 10-bitowy HDR, przycinanie, lustrowanie/nielustrowanie, wyciszanie/wyciszanie dźwięku, ustawianie liczby klatek na sekundę i inne.
- Podwójny aparat
- Biblioteka efektów
- Selektor rozdzielczości
- Wybór aparatu ultraszerokokątnego i teleobiektywu
- Przełączanie aparatów podczas nagrywania wideo (funkcja eksperymentalna)
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 dezincjalizowania były wywoływane we właściwej 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 zImageCapture
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) - 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, gdyVideoCapture
, 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ż problem z czarnym ekranem na STARYCH urządzeniach, gdy włączone było udostępnianie strumienia. - Rozwiązaliśmy 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. Z tego powodu rozmiary uchwycionych obrazów są duże. 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 uzyskać normalny rozmiar pliku obrazu. (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 uzyskać normalny rozmiar pliku obrazu. (I97c4d, b/288828159)
- Naprawiono problem z tradycyjnym awariami podczas robienia zdjęć z włączonymi rozszerzeniami (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 zatwierdzenia.
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 uzyskać normalny rozmiar pliku obrazu. (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
- Nazwa funkcji
ResolutionSelector.Builder#setHighResolutionEnabledFlag(int)
została zmieniona nasetAllowedResolutionMode
, a stałeResolutionSelector#HIGH_RESOLUTION_FLAG_OFF
/ON
naPREFER_CAPTURE_RATE_OVER_HIGHER_RESOLUTION
/PREFER_HIGHER_RESOLUTION_OVER_CAPTURE_RATE
. (If84e8) - Usunięto wycofane interfejsy API:
ImageAnalysis.setTargetRotationDegrees(int)
,ImageCapture.setTargetRotationDegrees(int)
iVideoCapture.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 zVideoCapture
doVideoCapture.Builder#setDynamicRange()
. (Ib0377) - Dodano interfejs API
isImageAnalysisSupported
doExtensionsManager
, dzięki któremu aplikacje mogą określić, czy przypadki użyciaImageAnalysis
można powiązać z podglądem iImageCapture
, gdy są włączone rozszerzenia. (I1bc63) - Nowa klasa
VideoCapabilities
uzyskana zRecorder
może służyć do zapytania o obsługiwane zakresy dynamiczne i jakości nagrywania wideo na urządzeniu. MetodyQualitySelector
getSupportedQualities()
iisQualitySupported()
są wycofywane. Zamiast tego używaj metodgetSupportedQualities()
iisQualitySupported()
klasyVideoCapabilities
. (I04014) - Parametr
CameraController#setVideoCaptureTargetQuality()
został przemianowany nasetVideoCaptureQualitySelector
i przyjmuje argumentQualitySelector
, co zapewnia większą elastyczność konfiguracji jakości filmu. WartośćCameraController#getVideoCaptureTargetQuality()
została odpowiednio zmieniona nagetVideoCaptureQualitySelector
. (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
dlaImageProxy.toBitmap()
. Jeśli nie uda się zdekodować tablicy bajtów JPEG, zostanie wywołana klasaUnsupportedOperationException
. (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 APICameraInfo#getSupportedFrameRates()
.
Zmiany w interfejsie API
- Zmieniono nazwy stałych
ResolutionSelector#HIGH_RESOLUTION_FLAG_OFF
iON
naALLOWED_RESOLUTIONS_NORMAL
iSLOW
oraz zmieniono nazwę funkcji konstruktorasetHighResolutionEnabledFlag
nasetAllowedResolutionMode
. (Iae817) - Funkcja
CameraInfo#getSupportedFrameRateRanges()
zwraca teraz wartośćSet
zamiastList
, 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 interfejssetTargetRotationDegrees
i wycofuje interfejsyImageAnalysis.setTargetRotationDegrees(int)
,ImageCapture.setTargetRotationDegrees(int)
iVideoCapture.setTargetRotationDegrees(int)
. (Ia9010) - Dodano nowe interfejsy API
Preview#getTargetFrameRate
iPreview.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łęduERROR_RECORDING_GARBAGE_COLLECTED
, gdy obiektRecording
zostanie zatrzymany z powodu zbierania elementów usuniętych z pamięci. (Iba974)
Poprawki błędów
- Rozwiązano problem z funkcją
NullPointerException
, gdy rozmiary danych wyjściowych w pamięci podręcznej w elementachStreamConfigurationMapCompat
są puste. (Idf124, b/282025204) - Rozwiązanie problemu polegającego na tym, ż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, gdyVideoCapture
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} powiązanymi z każdą 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ść do 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 ustawić 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 przezVideoCapture
nie są domyślnie odwrócone. Jednak w przypadku przedniego aparatu podgląd jest domyślnie odbity jak w lustrze. Interfejsy API do zwierciadleniaVideoCapture
umożliwiają dopasowanie do podglądu aparatu podczas korzystania z przedniego aparatu. Tak nazywają się 3 osoby:MirrorMode
,OFF
,ON
iON_FRONT_ONLY
. Aby dopasować obraz do podglądu w aparacie, zalecamy użycie opcjiON_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
ResolutionSelector
API. 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żywanie wysokiej rozdzielczości może wydłużyć czas nagrywania. (Ibed95) - Zakresy liczby klatek na sekundę obsługiwane przez algorytm AE można teraz wyszukiwać za pomocą zapytania
CameraInfo#getSupportedFrameRateRanges()
. (Iaa67f) - Połącz nazwy wszystkich metod dotyczących częstotliwości klatek, używając nazwy „FrameRate”. Popraw błędny javadoc w
VideoCapture#getTargetFrameRate()
(I83304) - Wycofanie starszych interfejsów API
setTargetAspectRatio
isetTargetResolution
. Zamiast tego użyj nowego interfejsu APIResolutionSelector
. (I542c3) - Dodano publiczne interfejsy API do obsługi równoczesnego korzystania z podwójnego aparatu, w tym:
List<List<CameraInfo>> getAvailableConcurrentCameraInfos()
ConcurrentCamera bindToLifecycle(@NonNull ConcurrentCameraConfig concurrentCameraConfig)
boolean isConcurrentCameraModeOn()
iConcurrentCameraConfig
,SingleCameraConfig
iConcurrentCamera
(Iab1c1)
- Ustaw
ImageProcessor.Response#getOutputImage
na NonNull (Ib9c60). - Dodano interfejsy API do powielania
VideoCapture
, w tymVideoCapture.Builder.setMirrorMode(int)
iVideoCapture.getMirrorMode()
. Interfejsy API są przydatne w przypadku aplikacji, które wymagają, aby nagranie wideo było zgodne z powszechnie stosowanym zachowaniem podglądu aparatu, czyli aby podgląd z tylnego aparatu nie był lustrzany, a z przedniego – tak. (I713b6, b/194634656) - Dodawanie interfejsu
setTargetFrameRate()
w interfejsieVideoCapture.Builder
oraz interfejsugetTargetFramerate()
w interfejsieVideoCapture
(I109d4) - Utwórz klasę
SurfaceOutput
rozszerzającą klasę Closable i ukryj publiczny konstruktor klasy SurfaceOutput.Event
. (I60ea8) - Dodano
Recording.mute
, aby dynamicznie wyciszyć lub włączyć dźwięk w pliku audio będącym 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ł zawieszanie się 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 przednim aparatem 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 funkcjiDefaultSurfaceProcessor
. Awaria może wystąpić, gdyVideoCapture
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 tymVideoCapture.Builder.setTargetRotation(int)
,VideoCapture.setTargetRotation(int)
,VideoCapture.setTargetRotationDegrees(int)
iVideoCapture.getTargetRotation()
. Interfejsy API są przydatne w przypadku aplikacji, które blokują orientację urządzenia. Dodano też użytkownikówImageCapture.setTargetRotationDegrees(int)
iImageAnalysis.setTargetRotationDegrees(int)
. (Id3ffe, b/205242781) - Zezwól na
VIDEO_CAPTURE
iPREVIEW|VIDEO_CAPTURE
jako docelowe efekty. Efekty kierowane naVIDEO_CAPTURE
zostaną zastosowane do przypadku użyciaVideoCapture
. Efekty kierowane naPREVIEW|VIDEO_CAPTURE
zostaną zastosowane do udostępnionego strumienia przed skopiowaniem do strumienia Podgląd iVideoCapture
. (Iee6f3)
Poprawki błędów
- W Aparat
1.2.2
: rozwiązano problem, który powodował, że rozszerzenia CameraX nie działały prawidłowo, gdy na niektórych urządzeniach, takich jak Pixel, włączona była funkcja Proguard (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 przez udostępnienie jednego strumienia wielu zastosowaniom.
- Wcześniej podczas wiązania „Preview, VideoCapture, ImageAnalysis” na poziomie sprzętu kamery FULL i niżej lub wiązania „Preview, VideoCapture, ImageCapture” na poziomie sprzętu LEGACY funkcja CameraX wyrzuca błąd
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
wBitmap
. Obsługiwany formatImageProxy
toImageFormat.YUV_420_888
iPixelFormat.RGBA_8888
. Jeśli format jest nieprawidłowy, zostanie zwrócona wartośćIllegalArgumentException
. (Ic7110) - Dodaj
CoroutineCameraViewfinder
, aby umożliwić 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 wyświetlać informacje o kierunku obiektywu. DodanoCameraSelector#LENS_FACING_EXTERNAL
jako funkcję eksperymentalną do wybierania kamer zewnętrznych. (Icaf3e) - Dodaj
#setEffect()
doCameraController
, aby umożliwić dodawanie efektów do wyjścia z aparatu. (I1d21f) - Dodaj metodę
invalidate()
doSurfaceRequest
. 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żkiImageCapture
. (I575c6) - Dodano interfejs API
Recorder.Builder.setAspectRatio()
, który można łączyć z interfejsemQualitySelector
, aby obsługiwać więcej rozdzielczości filmów. (I8a082) - Dodano
Recorder.Builder#setTargetVideoEncodingBitRate
, aby ustawić docelowy standard kodowania wideoBitRate
, orazRecorder#getTargetVideoEncodingBitRate
, aby uzyskać docelową szybkość transmisji bitów kodowania wideo. (I5984d)
Poprawki błędów
- Rozwiązano problem polegający na tym, że
ImageCapture
nie działało, gdy nie było żadnego modułu lampy błyskowej i tryb lampy błyskowej był 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 aparatu, np. wywołanie
CameraController#enableTorch
, oczekująca czynność jest przechowywana w pamięci podręcznej i przesyłana 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 commity.
Zmiany w interfejsie API
- dodać nowy interfejs API do stosowania efektu końcowego do danych wyjściowych podglądu. (Ic17d5)
- Zmieniono nazwę
OutputOptions.getDurationLimit
naOutputOptions.getDurationLimitMillis
, aOutputOptions.setDurationLimit
naOutputOptions.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 funkcjistartRecording
doAudioConfig
, aby uniknąć niepotrzebnych próśb o uprawnienia w przypadkach, gdy dźwięk nie jest potrzebny. (I28755) - Usuń klasy Metadata,
OnVideoSavedCallback
,OutputFileOptions
iOutputFileResults
, które nie są już używane po zastosowaniu nowego interfejsu API do przechwytywania filmów. (I38cd8) - zastosuj nowy interfejs API do przechwytywania filmów; Metody
getVideoCaptureTargetSize
isetVideoCaptureTargetSize
są odpowiednio zastępowane metodamigetVideoCaptureTargetQuality
isetVideoCaptureTargetQuality
, ponieważ metodasetTargetResolution
nie jest już obsługiwana. (I2a1d5)
Poprawki błędów
- Usunięto 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 commity.
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
wViewPager2
. W ramach poprawkiPreviewView
będzie ponownie używaćSurfaceView
, jeśli nie zmienisz żądanej rozdzielczości. (Ib3f27) - Obsługa przycinania filmów (funkcja WYSIWYG) przy użyciu interfejsu API
ViewPort
lubCameraController
. (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 przednim aparatem 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 funkcja Proguard jest włączona na niektórych urządzeniach, takich jak Pixel (I90aa2).
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 proces przechwytywania, 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
, funkcja ta będzie działać w trybieCAPTURE_MODE_MINIMIZE_LATENCY
. - Wycofaj
android.camera.core.VideoCapture
. - Dodano interfejs
setStreamUseCase()
jako publiczny interfejs APICamera2Interop
. - Dodano wymagania dotyczące poziomu interfejsu API dla
setOutputImageRotationEnabled
. - Nazwa
ImageAnalysis.Analyzer#getTargetResolutionOverride()
została zmieniona naImageAnalysis.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 rozciągniętym obrazem na urządzeniach Samsung J7 Prime (SM-G610M) i J7 (SM-J710MN) na poziomie interfejsu API 27.
Preview/VideoCapture
- Wyłączenie obejścia problemu polegającego 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
dlaOutputConfiguration
. Użytkownik może określić zastosowanie strumienia dla 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 rozciągniętym obrazem 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ówPreview/VideoCapture
. Dodano obejście problemu polegające na niewybieraniu rozdzielczości 1920 x 1080 w przypadku podglądu lubVideoCapture
, aby uniknąć rozciągania obrazu. (I0e04e) - Usunięto problem niskiej liczby klatek na sekundę podczas korzystania z funkcji
VideoCapture
i podglądu w formacie 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 parametruSurfaceProvider
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 zintegruj 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 proces przechwytywania, 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żyty tryb CAPTURE_MODE_MINIMIZE_LATENCY.
ImageAnalysis.Analyzer
iMLKitAnalyzer
są teraz oficjalnymi interfejsami API.- Interfejs API umożliwiający ustawienie metadanych lokalizacji w zapisanym filmie.
- Zmień nazwę
ImageAnalysis.Analyzer#getTargetResolutionOverride()
naImageAnalysis.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, który pozwala
ExifInterface
prawidłowo przeanalizować atrybuty. Aby obejść ten problem, uchwyć obrazy w formacie YUV, a następnie skompresuj 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()
naImageAnalysis.Analyzer#getDefaultTargetResolution()
. Zmieniono też zachowanie, tak aby wartość zwracana przez tę metodę mogła być zastąpiona wartością zImageAnalysis#setTargetResolution()
. (If1d36) - Interfejs API umożliwiający ustawienie metadanych lokalizacji w zapisanym filmie. Obiekt
android.location.Location
można skonfigurować za pomocą nowego interfejsu APIandroidx.camera.video.OutputOptions.Builder.setLocation(Location)
. (I313a0, b/204197544)
Poprawki błędów
- Rozwiązanie problemu z robieniem zdjęć z podglądem bez powiązania (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 commity.
Zmiany w interfejsie API
- Usunięto eksperymentalną adnotację dla
ImageAnalysis.Analyzer
iMLKitAnalyzer
. (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śliFocusMeteringAction
nie zostanie anulowany i część AF nie zostanie zbliżona w czasie trwania. (Ibc2e3) - Rozwiązanie problemu z robieniem zdjęć z podglądem bez powiązania (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_LAG
wImageCapture
i dodajisZslSupported
wCameraInfo
, 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 w pamięci podręcznej na potrzeby późniejszego ponownego przetwarzania, gdy użytkownik naciska przyciski do robienia zdjęć. Jeśli {@link VideoCapture} jest powiązany lub tryb lampy błyskowej nie jest WYŁĄCZONY lub rozszerzenie OEM jest WŁĄCZONE, ten tryb zostanie automatycznie wyłączony. (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ściCONTROL_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, gdyVideoCapture
jest powiązany zImageCapture
i podglądem na urządzeniu z kamerą o pełnym lub wyższym poziomie sprzętu. Strategia zastępczaQualitySelector
powoduje, żeVideoCapture
nieprawidłowo uzyskuje rozdzielczość FHD. W przypadku tej kombinacji zastosowań obsługiwana jest rozdzielczość UHD, więc należy ją zastosować. (I0e788, b/230651237) - Naprawiono błąd
NullPointerException
w wersjiImageCapture.takePicture()
. (I92366, b/230454568, b/229766155) - Poprawka zachowania asynchronicznego wstrzymywania w
androidx.camera.video.Recorder
(Ia8ce8)
Camera-Camera2, Camera-Core, Camera-Lifecycle i Camera-Video w wersji 1.1.0
Wersja 1.1.0
29 czerwca 2022 r.
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
isetOutputImageFormat
) - Obsługa trybu wielookiennego przez umożliwienie aplikacjom CameraX wznowienia korzystania z aparatu, gdy zostanie on przerwany przez inną aplikację i ponowne skupienie na nim.
- 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
isFocusMeteringSupported
wCameraInfo
, który umożliwia aplikacjom sprawdzenie, czy danyFocusMeteringAction
jest obsługiwany przez bieżącą kamerę. - Wyświetlany interfejs API
getResolutionInfo
, który udostępnia informacje o rozdzielczości w przypadku podglądu,ImageCapture
iImageAnalysis
. - Dodano nowy interfejs API
ImageCapture.Builder#setJpegQuality
, który umożliwia zmianę jakości kompresji wyjściowego obrazu JPEG podczas robienia zdjęć. - Dodano
CameraSelector#filter
do publicznego interfejsu API, aby filtrować listęCameraInfos
na podstawieCameraSelector
. - Dodano
Camera2CameraControl.clearCaptureRequestOptions
do wyczyszczania istniejących opcji żądania przechwytywania. - Dodano eksperymentalny interfejs API do korzystania z
CameraController
z zewnętrzymi bibliotekami do przetwarzania obrazów, np. MLKit. - Dodano eksperymentalny interfejs API
CameraInfo#getCameraSelector()
, który zwracaCameraSelector
unikalny dla danego aparatu. - kilka eksperymentalnych interfejsów API zostało awansowanych do formalnych publicznych interfejsów API;
- W przypadku interfejsów API w wersji eksperymentalnej 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. - Zmieniliśmy status tych eksperymentalnych interfejsów API na oficjalne:
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 parametryViewPort#getLayoutDirection
,ViewPort.Builder#setLayoutDirection
iViewPort.Builder#setScaleType
do dostosowywania widoku. ExperimentalUseCaseGroupLifecycle
awansował do rangi oficjalnych publicznych interfejsów API.- Zmiany w istniejących interfejsach API
Renamed MediaStoreOutputOptions.getCollection
, byMediaStoreOutputOptions.getCollectionUri
.- Aby ograniczyć ilość informacji, zmieniliśmy nazwę kolumny
ActiveRecording
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 trybImageCapture#CAPTURE_MODE_MAX_QUALITY
. - Konfiguracja stałego 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łączone” 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 wersjiImageCapture.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 parametrCONTROL_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życiaVideoCapture<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 inImageCaptureTest
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 obrazu, np. MLKit (I4ea71).
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że podgląd
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 latarka nie będzie dostępna. (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 rozszerzonego efektu 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)
- Naprawiono 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 nagrywarka napotykała
InvalidConfigException
. Ta poprawka zapobiega tylko awariom aplikacji, ale nie rozwiązuje przyczyny problemuInvalidConfigException
. JeśliRecorder
nadal nie można skonfigurować, aplikacje otrzymają wywołanie zwrotne błędu, gdy rozpocznie się nagrywanie. (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
- Dodanie możliwości 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 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żyj latarki jako lampy błyskowej na Pixelu 3a lub Pixelu 3a XL, aby zwiększyć szybkość i jakość 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 ramami 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 zatwierdzenia.
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 w
QualitySelector
zostały zmienione, aby były reprezentowane przez obiekty klasy. Na przykładQualitySelector.QUALITY_HD
jest zamieniane naQuality.HD
, aQualitySelector.FALLBACK_STRATEGY_LOWER
– na instancję zwracaną przezFallbackStrategy.lowerQualityOrHigherThan(Quality)
. Interfejs API używany do tworzeniaQualitySelector
został zmieniony na interfejs API oparty na listach. Nowy interfejs APIQualitySelector.fromOrderedList(List<Quality>)
będzie się odwoływać do kolejności listy jakości danych wejściowych zamiast do kolejności utworzonej przezQualitySelector.Procedure
. ZajęciaQualitySelector.Procedure
zostały usunięte. (I43343) - Detektor zdarzeń
PendingRecording.withEventListener()
został usunięty, a teraz musi być przekazywany doPendingRecording.start()
. To wymaganie dotyczące detektorów zdarzeń ma zachęcać do obsługi błędów asynchronicznych zgłaszanych w zdarzeniuVideoRecordEvent.Finalize
. (I1e71d) - Aby zmniejszyć ilość informacji, nazwa
ActiveRecording
została zmieniona naRecording
. (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 zREQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE
mają minimalny zestaw funkcji, który jest obsługiwany przez każde urządzenie z kamerą. Kamera bezREQUEST_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życiaPreview
,ImageCapture
,ImageAnalysis
aniVideoCapture
w przypadku tych kamer. Dlatego te kamery powinny być odfiltrowywane, aby zapobiec ich niewłaściwemu użyciu. (Ib8cda) - Funkcja
CameraSelector#filter
nie zwraca już błęduIllegalArgumentException
, 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. Kąt obrotu to względny obrót 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 obliczany 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ściCameraCharacteristics.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 inny. 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 automatyczny 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 filmów. 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ą wariantowo 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-alpha09
i androidx.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 Samsungiem 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 rejestrowania. Jeśli tryb rejestrowania to
CAPTURE_MODE_MINIMIZE_LATENCY
, jakość kompresji JPEG będzie wynosić 95. Jeśli tryb rejestrowania toCAPTURE_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-alpha08
i androidx.camera:camera-lifecycle:1.1.0-alpha08
są dostępne. Wersja 1.1.0-alpha08 zawiera te commity.
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ącego 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 usługie 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 ono powiązane z Preview i ImageCapture. Wybrana rozdzielczość dla ImageCapture musi też być rozdzielczością rozmiaru NAGRANIA. 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ść w przypadku ImageAnalysis, a nie maksymalną rozdzielczość w przypadku 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 dla danego formatu lub docelowego urządzenia z 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-alpha07
i androidx.camera:camera-lifecycle:1.1.0-alpha07
są dostępne. Wersja 1.1.0-alpha07 zawiera te commity.
Poprawki błędów
- Usunięto 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łączono tryb rozszerzenia i ustawiono trybImageCapture#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-alpha06
i androidx.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 pozwala aplikacjom sprawdzić, czy podana akcja FocusMeteringAction jest obsługiwana przez bieżący aparat. (Ib45ae, b/188606490)
- Udostępniono interfejs getResolutionInfo API, aby udostępniać informacje o rozdzielczości w przypadku podglądu, przechwytywania obrazu i analizy 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ępniliśmy 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#setLayoutDirection
iViewPort.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-alpha05
i androidx.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 obiekt setZoomRatio i setLinearZoom nie mógł zostać ukończony 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);
- Zmiana 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-alpha04
i androidx.camera:camera-lifecycle:1.1.0-alpha04
są dostępne. Wersja 1.1.0-alpha04 zawiera te commity.
Poprawki błędów
- Naprawiliśmy 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 interfejsuandroidx.annotation.OptIn
zamiast wycofanegoandroidx.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-alpha03
i androidx.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) - Naprawiono błąd inicjalizacji 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-alpha02
i androidx.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 przezCameraSelector
podany w plikuCameraXConfig.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 metody 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ą zablokowane, np. zablokowana lub wolno działająca podgląd. (Ic12da, b/175851631)
- Naprawiono ExtensionsErrorListener, aby zgłaszać błędy, gdy tylko podgląd lub ImageCapture są powiązane. (I5ae39)
- Usunięto regresję wydajności ImageCapture przez usunięcie weryfikacji lokalizacji zapisanego obrazu przed zrobieniem zdjęcia. Jeśli po wprowadzeniu tej zmiany miejsce docelowe zapisu jest nieprawidłowe, odpowiedź o błędzie będzie generowana dłużej, ponieważ aplikacja będzie próbować zapisać obraz po zrobieniu zdjęcia. (I1fd4e, b/177061560)
- Rozwiązano problem z regresją wydajności ImageCapture w przypadku opcji OutputFileOptions typu „Plik”. (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-alpha01
i androidx.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 sporadycznie uszkodzone dane obrazu w pliku JPEG na tylnym aparacie 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.2
i androidx.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 zdjęcia robione przy użyciu lampy błyskowej 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.1
i androidx.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
ListenableFuture
zwracane wsetZoomRatio
isetLinearZoom
nie może zostać ukończone 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.0
i androidx.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, ImageCapture i Analysis.
- 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 kamery Androida.
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-rc05
i androidx.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-rc04
i androidx.camera:camera-lifecycle:1.0.0-rc04
są dostępne. Wersja 1.0.0-rc04 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd inicjalizacji 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-rc03
i androidx.camera:camera-lifecycle:1.0.0-rc03
są dostępne. Wersja 1.0.0-rc03 zawiera te zatwierdzenia.
Poprawki błędów
- Napraw błędy formatowania w dokumencie
ProcessCameraProvider#getInstance
- Usunięto błąd testu Robolectric występujący podczas używania w CameraXConfig metody setAvailableCamerasLimiter.
- Usunięto regresję wydajności ImageCapture przez usunięcie weryfikacji lokalizacji zapisanego obrazu przed zrobieniem zdjęcia. Jeśli po wprowadzeniu tej zmiany miejsce docelowe zapisu jest nieprawidłowe, odpowiedź o błędzie będzie dłużej oczekiwać, ponieważ system będzie próbować zapisać obraz po zrobieniu zdjęcia.
- Ta zmiana przechwytuje wyjątek, gdy kolejka obrazów jest maksymalnie wykorzystana w ImageAnalysis. Zamiast awarii może wystąpić zablokowanie lub spowolnienie innych przypadków użycia, np. zablokowanie lub spowolnienie podglądu.
- obejście problemu polegające na tym, że sporadycznie uszkodzone dane obrazu w pliku JPEG na tylnym aparacie 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. podgląd. (Ic12da, b/175851631)
- Usunięto błąd testu Robolectric, który występował, gdy w CameraXConfig używano metody setAvailableCamerasLimiter. (Ice307)
- Usunięto regresję wydajności ImageCapture przez usunięcie weryfikacji lokalizacji zapisanego obrazu przed zrobieniem zdjęcia. Jeśli po wprowadzeniu tej zmiany miejsce docelowe 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 z regresją wydajności ImageCapture w przypadku opcji OutputFileOptions typu „Plik”. (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-rc02
i androidx.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)
Ogranicz liczbę prób ponownego otwarcia kamery. 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-rc01
i androidx.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ść toLog#DEBUG
. (Ic3245)
Poprawki błędów
- obejście problemu polegające na tym, że od czasu do czasu dane obrazu w pliku JPEG są uszkodzone w przypadku tylnego aparatu w urządzeniu SM-G930V; (I5aca5, b/159831206)
- Rozwiązanie problemu polegającego na tym, że robienie zdjęć nie przynosi rezultatów, gdy lampa błyskowa jest zawsze włączona i otoczenie jest 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ązanie problemu 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-beta12
i androidx.camera:camera-lifecycle:1.0.0-beta12
są dostępne. Wersja 1.0.0-beta12 zawiera te commity.
Poprawki błędów
- Wyłączenie automatycznego flesza na urządzeniach Samsung A3 w celu naprawienia problemu z zawieszaniem się aplikacji 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)
- Implementacja klasy podstawowej
OnImageCapturedCallback#onCaptureSuccess
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 nowy wariant 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 commity.
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 z wyjątkiem 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 inicjowania 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óciSurface.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 commity.
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 z wyjątkiem NumberFormatException, który występował, gdy identyfikator kamery nie był liczbą całkowitą. (Ib2228)
- Tworzenie przypadków użycia nie wymaga inicjowania 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óciSurface.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-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 wersja 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
- Wersja obsługująca Camera-Core 1.0.0-beta10
Aparat – Camera2 w wersji 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ść tworzenia widoku bez ustawiania widoku. (Ie3d2e)
- Dodano eksperymentalne interfejsy dla
ExposureCompensation
(If96c7) - Zezwalaj 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ę. Występuje on, gdy tryb lampy błyskowej jest ustawiony na
FLASH_MODE_ON
, aby zrobić zdjęcie, a po naciśnięciu przycisku migawki zmienia się naFLASH_MODE_OFF
. Objawy są podobne do włączonego trybu latarki. (Ib4451, b/162568128) - Wymuszenie PreviewView do użycia TextureView, jeśli włączony jest efekt rozszerzenia, a implementacja biblioteki dostawcy musi przeprowadzić specjalny proces na wyjściowej powierzchni. (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 automatycznie ustawianym przez system, który wybierał rozmiar 16:9 mod16 (864 x 480), gdy docelowe ustawienie rozdzielczości wynosiło 2016 x 1080, a obsługiwany był inny rozmiar 1920 x 1080 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
zamiastCameraSelector
, więc istnieje bezpośrednie mapowanie na potrzeby tworzenia punktów dla aparatu, którego ma dotyczyć fabryka. Wszystkie klasy, które używająDisplayOrientedMeteringPointFactory
, przyjmują też instancjęCameraInfo
zamiastCameraSelector
. (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 commity.
Poprawki błędów
- Rozwiązaliśmy problem polegający na rozciągnięciu podglądu 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 commity.
Zmiany w interfejsie API
- Scal styl
FIT_CENTER
,FIT_START
iFIT_END
zFIT
.FIT
oznacza, ż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 objęty prostokątem przycinania. (I142a4)
Poprawki błędów
- Rozwiązaliśmy problem polegający na rozciągnięciu podglądu 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 wersja 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 commity.
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 będzie mógł wygenerować prawidłowych prostokątów pomiarowych. (Id53ce)
Camera-Core w wersji 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 commity.
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
- Teraz przed wywołaniem metody
ProcessCameraProvider#getInstance()
można skonfigurować CameraX za pomocą metodyProcessCameraProvider#configureInstance()
. Umożliwia to dostosowanieCameraXConfig
bez konieczności implementowaniaCameraXConfig.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
zawieraCameraUnavailableException
, który zostanie ustawiony naListenableFuture
wyniku inicjalizacji zamiast powodować awarię aplikacji. (I9909a, b/149413835) - Usunięto awarię podczas wywoływania funkcji
startFocusAndMetering
na urządzeniach, na którychCONTROL_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
zawieraCameraUnavailableException
, zostanie ono ustawione naListenableFuture
wyniku inicjalizacji zamiast powodować zamykanie aplikacji. (I9909a, b/149413835)
Poprawki błędów
- Zaktualizowano dokumentację
setTargetResolution
isetTargetRotation
. (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
- Aplikacje mogły ustawiać dowolne parametry żądania rejestrowania za pomocą interfejsu
Camera2Interop
bez powodowania awarii. Pamiętaj, że jeśli wystąpią problemy z nałożeniem parametrów, 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 czasami zdjęcie było zbyt ciemne, mimo że włączono lampę błyskową. (I5d9fa, b/149729613)
- Naprawiono błąd, który powodował, że bufor w
ImageProxy
zImageCapture
nie był przewijany (I0c455, b/153249512) - Rozwiązaliśmy problemy, które występowały podczas wiązania ImageCapture: (1) nie udało się zrobić zdjęć przy użyciu parametru MAX_QUALITY; (2) generowanie słabej jakości zdjęć, ponieważ nie działała automatyczna ekspozycja. (I17782, b/145326998)
- Zwiększona niezawodność ponownego otwierania aparatu, gdy CameraX zostanie odłączony przez inny proces lub ścieżkę kodu, która 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 kamery CameraX. Ten nowy interfejs API wraz z interfejsemCameraXConfig.Builder#setCameraExecutor()
powinien zapewniać pełną kontrolę nad wątkami używanymi przez pakiet aparatu CameraX. (I7bf32, b/121160431)
Poprawki błędów
- Rozwiązanie problemu z awarią w funkcji
ImageAnalysis
, gdy po zamknięciu oknaImageReaderProxy
próbuje się uzyskać dostęp do oknaImageProxy
. Oznacza to również, że wszystkieImageProxy
otrzymane przezAnalyzer
muszą zostać zamknięte, zanimImageReaderProxy
zostanie zamknięta. (I4b299, b/145956416, b/154155377, b/156357269) - Parametr
CameraInfo
został usunięty z funkcjiPreviewView#createSurfaceProvider()
, a funkcjaPreviewView
pobiera go teraz wewnętrznie z funkcjiSurfaceRequest
. (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
zImageCapture
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 wybierana 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 argumentamiUseCase
powodowało wyjątek. Zapobiegało to wyodrębnianiuCamera
bez wiązaniaUseCase
.
Camera-Camera2 Version 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()
zImageProxy
wygenerowanego przezImageCapture
, aby pasował do wartości orientacji obrotowej EXIF. (Id4281, b/150802561) - Wyraźne uporządkowanie zależności CameraX w
build.gradle
nie jest już wymagane do korzystania z domyślnej implementacji CameraX/Camera2. 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
IllegalArgumentException
występujący na urządzeniach, na których rozmiar wyświetlacza jest mniejszy niż 640 x 480. (Ife3f2, b/150506192) - Naprawiono
bindToLifecycle
, aby modyfikował on UseCase tylko wtedy, gdy udało się go powiązać. Wcześniej, gdy wywoływana była funkcjabindToLifecycle
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()
zImageProxy
wygenerowanego przezImageCapture
, aby pasował do wartości orientacji obrotowej EXIF. (Id4281, b/150802561) - Naprawiono funkcję
bindToLifecycle
, tak aby modyfikowała ona tylko UseCase, jeśli udało się ją pomyślnie powiązać. Wcześniej, gdy wywoływana była funkcjabindToLifecycle
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łaniuPreview.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)
naSurfaceRequest.provideSurface(Surface)
, aSurfaceRequest.setWillNotComplete()
naSurfaceRequest.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 kolumnieSurfaceRequest.provideSurface()
została zastąpiona przez komórkęExecutor
iCallback
. Upraszcza to interfejs API, ponieważ nie wymaga już obsługi wyjątków w przypadkuprovideSurface()
i zapewnia, że wywołania zwrotnegoprovideSurface()
nie można anulować. Ma to zapobiegać awariom na starszych urządzeniach spowodowanym przedwczesnym zwalnianiem powierzchni. ObiektSurfaceRequest.Result
jest teraz używany do śledzenia sposobu korzystania przezSurfaceRequest
z podawanegoSurface
. (I7854b) - Zmieniono nazwę
SurfaceRequest.setSurface(Surface)
naSurfaceRequest.provideSurface(Surface)
, aSurfaceRequest.setWillNotComplete()
naSurfaceRequest.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, żeSurface
są przechowywane tylko przez czas korzystania z aplikacji Camera2. (I9dac2) - Rozwiązano problem z podświetleniem podglądu na urządzeniach STARSZE 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 folderachUri
iOutputStream
. Połączone przeciążone metodytakePicture
w jedną. Zaktualizowano aplikację testową, aby używałaUri
jako przykładu kanonicznego. (Ia3bec) - Nazwa
Preview.PreviewSurfaceProvider
została zmieniona naPreview.SurfaceProvider
.SurfaceProvider
nie wymagają już od programistów tworzenia własnychListenableFuture
, a udzielanieSurface
odbywa się teraz za pomocą nowego obiektuSurfaceRequest
. MetodaPreview.getPreviewSurfaceProvider()
została usunięta ze względu na możliwość jej niewłaściwego użycia, gdyPreview
jest połączona z innymi klasami, takimi jakPreviewView
. (I20105) - Dodano
getTargetRotation()
igetTargetName()
doPreview
. (Iceee7) - Dodano użytkowników
getTargetRotation()
,getBackpressureStrategy()
igetImageQueueDepth()
do albumuImageAnalysis
. (I9d6d9) - Dodano użytkowników
getTargetRotation()
igetCaptureMode()
w sekcjiImageCapture()
(I5bc17). - Argumenty, które były wcześniej przekazywane w parametrach
ImageCapture.OnImageSavedCallback.onError()
iImageCapture.OnImageCapturedCallback.onError()
, zostały zastąpione przez pojedynczy argumentImageCaptureException
, 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
Preview
iImageCapture
są teraz oznaczone jako ostateczne. (I2500b) - Interfejs API został zaktualizowany. Metody
getZoomRatio()
,getMaxZoomRatio()
,getMinZoomRatio()
igetLinearZoom()
interfejsuCameraInfo
zostały połączone w interfejsgetZoomState()
, który zwraca instancjęZoomState
. (Ib19fe) - Usunięto pola interfejsu API
OPTION_TARGET_CLASS
iOPTION_TARGET_NAME
zCameraXConfig
, ponieważ są one przeznaczone tylko do użytku wewnętrznego. Usunięto konstruktorCameraXConfig.Builder
. (I96912) - Usunięto wymóg, że aplikacja musi rozszerzać klasę
Application
, aby zainicjować CameraX. CameraX będzie teraz inicjowany za pomocą domyślnej konfiguracji Camera2, o ile elementcamera-camera2
jest uwzględniony wbuild.gradle
aplikacji. (I58ff5) (b/146923574)
Aparat – Camera2 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ą funkcjiCamera2CameraInfo.extractCameraId()
. Poniższy przykładowy kod pokazuje, jak tego użyć:Camera camera = provider.bindToLifecycle(...); String cameraId = Camera2CameraInfo.extractCameraId(camera.getCameraInfo());
Klasa
Camera2CameraInfo
wymaga klasy markerClassExperimentalCamera2Interop
.
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 nauseCaseForAspectRatio
, a dokumentacja referencyjna została rozszerzona. - Metody
FocusMeteringAction.Builder.from()
są zastępowane przez konstruktoryFocusMeteringAction.Builder()
. - Usunięto
DisplayOrientedMeteringPointFactory(android.content.Context, androidx.camera.core.CameraSelector, float, float)
. Aplikacje powinny używać konstruktora, który przyjmuje parametrDisplay
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 parametruDisplay
. - Rozszerzyliśmy dokumentację referencyjną dotyczącą
setZoomRatio
isetLinearZoom
.
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 dostępnych wymiarów mod16 rozmiary były wybierane zamiast żądanej rozdzielczości.
- Interfejsy API
startFocusMetering
icancelFocusMetering
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 wymiary przycięcia. Teraz, gdy jest to możliwe, zostanie wybrany nieprzycięty rozmiar o wystarczającej rozdzielczości, aby ograniczyć oryginalne żądanie.
Camera-Camera2 Wersja 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 błąd:
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 w podglądzie 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 elementów
PreviewView
lubCameraView
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
iCameraControl
. - Wdrożony element
TorchControl
dla elementówenableTorch()
igetTorchState()
.
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 klasyOnImageCaptureCallback
do klasyImageInfo
. - Element sterujący
rotationDegrees
został przeniesiony z klasyAnalyzer
do klasyImageInfo
.
Aparat – Camera2 w wersji 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 komity
Camera2Config
jest teraz dostępny 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 alfa, która jest już w trakcie przygotowywania do wersji beta, wprowadzono kilka istotnych zmian. Zalecamy zapoznanie się ze zmianami i przesłanie opinii na temat grupy CameraX w Google. Deweloperom, którzy używają 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ściCamera2Config
udostępnianej przezandroidx.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()
ihasCamera()
, które wcześniej były dostępne w ramach wywołania klasy CameraX, są teraz dostępne wProcessCameraProvider
.instancja
ProcessCameraProvider
dla każdego procesu jest uzyskiwana asynchronicznie za pomocą metody statycznejProcessCameraProvider.getInstance()
, która zwraca przyszłość do słuchania, która dostarczaProcessCameraProvider
po zakończeniu. Tutaj jest on pokazany wonCreate()
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 przezgetInstance()
. Dzięki temu dostawcę kamery można pobrać zFuture
bez blokowania naFuture.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 platformy.
Ważne: implementacja metody
ImageAnalysis
w analizatorze musi wywołać metodęimage.close()
dla otrzymanych obrazów po zakończeniu ich używania. 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 zmieniona na strategięintdef
.ImageProxy.getImage()
jest oznaczony jako funkcja eksperymentalna. Aplikacje powinny zawierać adnotacje dotyczące użycia, np.@androidx.camera.core.ExperimentalGetImage
Wymaganie adnotacji
UIThread
w przypadkuAnalyzer
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 Callback:
ImageCapture.OnImageCapturedListener
to terazImageCapture.OnImageCapturedCallback
ImageCapture.OnImageSavedListener
to terazImageCapture.OnImageSavedCallback
VideoCapture.OnVideoSavedListener
to terazVideoCapture.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/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
startFocusMetering
icancelFocusMetering
zwracają teraz wartośćListenableFutures
, która reprezentuje asynchroniczną obsługę 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 wcześniejszym wstrzymaniu zdjęć w trakcie ich tworzenia).
- Znane problemy:
CameraControl.enableTorch()
działa, ale zwracanyListenableFuture<Void>
jest zawsze w niezwłocznej przyszłościcomplete(success)
, nawet jeśli nie ma modułu lampy błyskowej. W przyszłych wersjach to zachowanie zostanie zmienione. Jeśli nie ma modułu lampy błyskowej,enableTorch(true)
natychmiast się nie powiedzie (nie wyśle żądania doCaptureSession
), aTorchState
pozostanie wyłączone. - Znane problemy: funkcje
startFocusAndMetering
icancelFocusAndMetering
uruchamiają i anulują pomiar ostrości, ale zwracają natychmiastową wartośćcompleted (success)
, która nie odpowiada opisanemu działaniu. WartośćFocusMeteringResult
z funkcjiListenableFuture<FocusMeteringResult> CameraControl.startFocusAndMetering()
to fałszywy wynik, któryisFocusSuccessful()
i zawsze jest „fałszywy”, 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 ostrzenia dotykiem nie jest dostępna dlaPreviewView
.
Camera-Camera2 i Camera-Core w wersji 1.0.0-alpha06
9 października 2019 r.
androidx.camera:camera-camera2:1.0.0-alpha06
i androidx.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ą opcjiRATIO_4_3
lubRATIO_16_9
zamiast dowolnych proporcji. Ta zmiana odzwierciedla fakt, że z kamery pochodzą tylko określone proporcje, 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świetlanie lub przetwarzać podregion.
- Te proporcje są ukierunkowane 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 nasetTargetAspectRatioCustom(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
- Interfejs API
Dodano informacje o aparacie z interfejsami API do sprawdzania dostępności lampy błyskowej i obrotu czujnika
Dodano metodę
CameraInfo
igetCameraInfo
, która pozwala aplikacjom sprawdzić, czy obiektyw skierowany jest na CameraInfo i czy w danym aparacie jest dostępna lampa błyskowa. Przykład:try { CameraInfo cameraInfo = CameraX.getCameraInfo(currentCameraLensFacing); LiveData<Boolean> isFlashAvailable = cameraInfo.isFlashAvailable(); flashToggle.setVisibility(isFlashAvailable.getValue() ? View.VISIBLE : View.INVISIBLE); } catch (CameraInfoUnavailableException e) { Log.w(TAG, "Cannot get flash available information", e); flashToggle.setVisibility(View.VISIBLE); }
Dodano użytkownika
CameraInfo.getSensorRotationDegrees()
Określa orientację czujnika aparatu względem naturalnej orientacji urządzenia lub, dla wygody, względem orientacji opisanej przez obrót powierzchni (który opisuje orientację względem naturalnej orientacji).
Zmiany w interfejsie API i poprawki błędów
- Format obrazu: w przypadku każdego zastosowania aplikacje powinny wywoływać tylko jedną z funkcji
setTargetResolution()
lubsetTargetAspectRatio()
. 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 zapisywanie obrazu umożliwia uzyskanie zdjęć o wysokiej rozdzielczości. Więcej informacji znajdziesz w tabeli automatycznych rozdzielczości. - Użyj
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).
- Zwykle zalecamy użycie
- 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ł wyjątek
java.lang.IllegalStateException at Camera$StateCallback.onError
podczas otwierania aparatu. - Rozwiązano problem, który powodował, że przy żądaniu większej lub domyślnej rozdzielczości aplikacja wybierała zbyt małe rozdzielczości (mniejsze niż 640 x 480), co skutkowało blokowaniem lub rozmyciem obrazu 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 kamery w ciągu.
Camera-Camera2 i Camera-Core w wersji 1.0.0-alpha05
5 września 2019 r.
androidx.camera:camera-camera2:1.0.0-alpha05
i androidx.camera:camera-core:1.0.0-alpha05
są dostępne. Oto kompilacje zawarte w camera-camera2:1.0.0-alpha05 i kompilacje 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 naImageCapture.ImageCaptureError
- Nazwa
VideoCapture.UseCaseError
została zmieniona naVideoCapture.VideoCaptureError
- Nazwa
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
iFocusMeteringAction
do korzystania z funkcji „Kliknij, aby skupić uwagę”: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();
Dodaliśmy 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), rzucając błąd
IllegalStateException
, gdy nie są one dostępne. W kolejnych wersjach będzie można używać innych wątków i zapewnić serializację.CameraX.bindToLifecycle()
CameraX.unbind()
CameraX.unbindAll()
ImageAnalysis.setAnalyzer()
ImageAnalysis.getAnalyzer()
ImageAnalysis.removeAnalyzer()
Preview.removePreviewOutputListener()
Preview.getOnPreviewOutputUpdateListener()
Preview.setOnPreviewOutputUpdateListener()
Różne ustawienia konfiguracji akceptują teraz parametry null, a odpowiednie metody gettera mogą zwracać null.
Rozwiązano problem z testowaniem na emulatorach, które nie obsługują ustawień AF/AE/AWB.
Naprawiliśmy 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 obrócenie urządzenia podgląd był czarny (brak danych z aparatu).
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-alpha04
i androidx.camera:camera-core:1.0.0-alpha04
są dostępne. Wersja 1.0.0-alpha04 zawiera te zatwierdzenia
Nowe funkcje
Zmiany w wybieraniu formatu obrazu i rozdzielczości
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. W związku z tym 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 prawidłowe działanie wymaga korzystania z określonych rozdzielczości.
- Na niektórych urządzeniach niektóre formaty są dostępne tylko w określonych proporcjach
- Preferowanie „nearest mod16” w przypadku 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 sposobie ustawiania 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ślany przez dowolne wywołania
setTargetAspectRatio
lubsetTargetResolution
). - 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 się użycie ImageAnalysis.
- Domyślny zestaw wykonawców działa wewnętrznie jako nieblokujący wykonawca.
Poprawki błędów
- Rozwiązano problemy z przekroczeniem limitu czasu podczas 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 wywołanie funkcjijava.lang.IllegalArgumentException: Unable to get camera ID for use case
. - Naprawiono błąd, który powodował, że starsze urządzenia wymagały określonego formatu obrazu jako maksymalnej rozdzielczości JPEG.
- Rozwiązaliśmy problem z zamykaniem aplikacji w tle podczas otwierania aparatu.
- Rozwiązano problem z interfejsem API: usunięto błąd
checkAndUpdateEglState: invalid current EGLDisplay
(poziom 25) - 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-alpha03
i androidx.camera:camera-camera2:1.0.0-alpha03
są dostępne. Wersja 1.0.0-alpha03 zawiera te commity.
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 rygorystycznego 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-alpha02
i androidx.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 0 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 ramach przygotowań 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.
Funkcje androidx.camera:camera-core:1.0.0-alpha01
i androidx.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 commity.
Poprawki błędów
<UseCase>.getTargetRotation()
zwróciSurface.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-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
- Wersja obsługująca Camera-Core 1.0.0-beta10
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 commity.
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 commity.
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
zawieraCameraUnavailableException
, zostanie ono ustawione naListenableFuture
wyniku inicjalizacji 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 argumentamiUseCase
powodowało wyjątek. Zapobiegało to pobieraniuCamera
bez wiązaniaUseCase
. - 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 inicjowania wartości
ProcessCameraProvider
używana jest konfiguracja domyślna, a rozszerzanie wartościApplication
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-beta02
icamera-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 commity.
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
oraz implementację o nazwieProcessCameraProvider
, która zapewnia wiele funkcji poprzedniej klasy CameraX w jądrze i jest uzyskiwana za pomocą metodygetInstance()
. - Aplikacje powinny zawierać bibliotekę cyklu życia aparatu, aby korzystać z CameraX.
- Aby dowiedzieć się, jak zainicjować CameraX za pomocą
ProcessCameraProvider
, zapoznaj się z notatkami 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-alpha32
i androidx.camera:camera-view:1.0.0-alpha32
są dostępne. Wersja 1.0.0-alpha32 zawiera te commity.
Zmiany w interfejsie API
- Usunięto niepotrzebne 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ą tylkoImageCapture
iPreview
.VideoCapture
nie jest jeszcze obsługiwany. Jeśli aplikacja wiążeVideoCapture
i włącza dowolny tryb rozszerzenia, zostanie wywołana funkcjaIllegalArgumentException
. (I0d87b) - Funkcja
CameraSelector#filter
nie zwraca już błęduIllegalArgumentException
, gdy zbiór wyników jest pusty. (I27804) - Nazwa interfejsu API
ExtensionsManager#getInstance
została zmieniona nagetInstanceAsync
, ponieważ zwraca on odpowiedź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życiaImageCapture
, i nie mogą odróżnić, czy zwrócone informacje o opóźnieniu dotyczą maksymalnego rozmiaru wyjściowego zrzutu ekranu czy parametru rozdzielczości wejściowej. (I74bb2) - Przenieś parametr
CameraProvider
funkcjiExtensionsManager
do interfejsugetInstance()
API. Użytkownicy nie muszą wpisywać parametruCameraProvider
za każdym razem, gdy wywołują funkcjeExtensionsManager
. (Ic7e48)
Wersja 1.0.0-alpha31
17 listopada 2021 r.
androidx.camera:camera-extensions:1.0.0-alpha31
i androidx.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-alpha30
i androidx.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 bibliotekę camera-core 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 pojawia się po włączeniu Proguarda. (Iae468, b/201177844)
Wersja 1.0.0-alpha29
29 września 2021 r.
androidx.camera:camera-extensions:1.0.0-alpha29
i androidx.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żyjRotationProvider#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-alpha28
i androidx.camera:camera-view:1.0.0-alpha28
są dostępne. Wersja 1.0.0-alpha28 zawiera te commity.
Zmiany w interfejsie API
- Oznaczenie ExperimentalUseCaseGroupLifecycle zostało usunięte, 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, a TAP_TO_FOCUS_SUCCESSFUL na TAP_TO_FOCUS_FOCUSED. Zrobiono OutputSize final (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-alpha27
i androidx.camera:camera-view:1.0.0-alpha27
są dostępne. Wersja 1.0.0-alpha27 zawiera te commity.
Zmiany w interfejsie API
- interfejs API Viewport przestał być eksperymentalny; Usuń eksperymentalną adnotację interfejsu API. (I717ea)
- Zmieniono nazwę
CoordinateTransform#getTransform
naCoordinateTransform#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-alpha26
i androidx.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 kolejnych funkcji związanych z głównymi funkcjami aparatu: metod dostępu do właściwości i metod ustawień dotyczących docelowego formatu obrazu, docelowej rozdzielczości, trybu rejestrowania, obiektu CameraControl oraz 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 rozszerzenia brakuje podglądu lub funkcji ImageCapture. CameraX automatycznie doda dodatkowy podgląd lub ImageCapture, aby funkcje rozszerzenia działały prawidłowo. 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-alpha25
i androidx.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 stały się oficjalnymi interfejsami API. Można ich używać bez adnotacji OptIn. (I4bc94)
- Dodaj narzędzie, które przekształca współrzędne między 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-alpha24
i androidx.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 interfejsuandroidx.annotation.OptIn
zamiast wycofanegoandroidx.annotation.experimental.UseExperimental
. (Iff226) - Usunięto problem z rozciągniętym podglądem na Samsungu J5 Prime (Ib10b6).
Rozszerzenia i widok aparatu w wersji 1.0.0-alpha23
24 marca 2021 r.
androidx.camera:camera-extensions:1.0.0-alpha23
i androidx.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
- Przypięte zależności widoku aparatu korzystają z elementów wersji 1.0.0. W zależności od wersji 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 będzie zgodna z tymi artefaktami, jeśli zostaną one wyraźnie skonfigurowane do użycia 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-alpha22
i androidx.camera:camera-view:1.0.0-alpha22
są dostępne. Wersja 1.0.0-alpha22 zawiera te commity.
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-alpha21
i androidx.camera:camera-view:1.0.0-alpha21
są dostępne. Wersja 1.0.0-alpha21 zawiera te commity.
Publikowanie 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-alpha20
i androidx.camera:camera-view:1.0.0-alpha20
są dostępne. Wersja 1.0.0-alpha20 zawiera te commity.
Publikowanie 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-alpha19
i androidx.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
jakomarkerClass
. (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óciSurface.ROTATION_0
, jeśli zostanie wywołana przed dołączeniem do wystąpienia 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.
Publikowanie 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
- Wersja obsługująca Camera-Core 1.0.0-beta10
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
- Wersja obsługująca Camera-Core 1.0.0-beta10
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ć obiektExtensions
, 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()
iPreviewView#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 nowegoPreviewView#getViewPort(targetRotation)
. (Ib62cc) - Nazwa
createSurfaceProvider()
została zmieniona nagetSurfaceProvider()
. 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 musi przeprowadzić specjalny proces na wyjściowej powierzchni. (I0c3cc)
- Zezwalaj 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
zamiastCameraSelector
, więc istnieje bezpośrednie mapowanie na potrzeby tworzenia punktów dla aparatu, którego ma dotyczyć fabryka. Wszystkie klasy, które używająDisplayOrientedMeteringPointFactory
, przyjmują też instancjęCameraInfo
zamiastCameraSelector
. (I400c1) - Użytkownik
TextureViewMeteringPointFactory
został usunięty. UsługaPreviewView
udostępnia publiczny interfejs API (createMeteringPointFactory()
) do tworzenia fabryki punktów pomiarowych niezależnie od tego, czy korzysta ona z interfejsuTextureView
czySurfaceView
. (Ide693) - Zmień nazwy trybów implementacji PreviewView
SURFACE_VIEW
/TEXTURE_VIEW
naPERFORMANCE
/COMPATIBLE
.PERFORMANCE
to stary trybSURFACE_VIEW
, aCOMPATIBLE
to stary trybTEXTURE_VIEW
. (I0edc2) - W przypadku przechwytywania obrazu zastąpij flagę przechylenia 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 commity.
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 commity.
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
zawieraCameraUnavailableException
, zostanie ono ustawione naListenableFuture
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óry 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łceniami w podglądzie na kamerach
FULL/LIMITED/LEVEL_3
z Androidem 7.0 lub starszym. Wymuś użycie trybuImplementationMode#TEXTURE_VIEW
, gdy wersja Androida jest 7.0 lub starsza. (I83e30, b/155085307) - Parametr
CameraInfo
został usunięty z funkcjiPreviewView#createSurfaceProvider()
, a funkcjaPreviewView
pobiera go teraz wewnętrznie z funkcjiSurfaceRequest
. (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 fragmentuPreview
i powrocie do niego w ViewPager2. Rozwiązano też problem, gdyremoveView(previewview)
, a potemaddView(previewView)
. (Iab555, b/149877652, b/147354615) - Zaktualizuj interfejs API
CameraView#takePicture()
, aby umożliwić zapisywanie obrazów w usłudzeUri
iOutputStream
. Zaktualizuj aplikację testową, aby używałaUri
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żyjPreviewView.ScaleType
, aby ustawić lub pobrać typ skali za pomocą 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
- Zaktualizowano je, aby obsługiwały poprawki błędów w artefaktach
camera-camera2:1.0.0-beta02
,camera-core:1.0.0-beta02
icamera-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 komponenciePreviewView
może nie działać prawidłowo na niektórych urządzeniach. Dzieje się tak, ponieważ komponentSurfaceView
używany do podglądu staje się nieważny, gdy cykl życia okna, w którym się znajduje, zostanie zatrzymany. Gdy zostanie ponownie uruchomiony, kamera zostanie ponownie otwarta i może spróbować wznowić podgląd, zanim powierzchniaSurfaceView
stanie się ponownie ważna. Na razie należy używaćImplementationMode.TEXTURE_VIEW
.
Zmiany w interfejsie API
- Nazwa
PreviewView.setImplementationMode()
została zmieniona naPreviewView.setPreferredImplementationMode()
. - Nazwa
PreviewView.getImplementationMode()
została zmieniona naPreviewView.getPreferredImplementationMode()
. - Zawartość komórki
PreviewView.getSurfaceProvider()
zastąpiono komórkąPreviewView.createSurfaceProvider(CameraInfo)
, która przyjmuje wartość null w przypadku instancjiCameraInfo
używanej do optymalizacji podglądu przez użycieImplementationMode.SURFACE_VIEW
, gdy tylko to możliwe. Jeśli przekazano instancję null lub preferowany tryb implementacji ustawiono naImplementationMode.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óre pozwala ustawić typ skalowania podglądu. Może przyjmować jedną z wartości w sekcjiPreviewView.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ą atrybutuimplementationMode
.Dodaj interfejs API
createMeteringPointFactory()
do PreviewView, aby umożliwić konwersję (x, y) wPreviewView
naMeteringPoint
. (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 zatwierdzenia.
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 zatwierdzenia.
Poprawki błędów
- Zawartość komórki
ListenableFuture
w kolumnieSurfaceRequest.provideSurface()
została zastąpiona przezExecutor
iCallback
. Upraszcza to interfejs API, ponieważ nie wymaga już obsługi wyjątków w przypadkuprovideSurface()
i zapewnia, że wywołania zwrotnegoprovideSurface()
nie można anulować. Ma to zapobiegać awariom na starszych urządzeniach spowodowanym przedwczesnym zwalnianiem powierzchni. ObiektSurfaceRequest.Result
jest teraz używany do śledzenia sposobu korzystania przezSurfaceRequest
z podawanegoSurface
. (I7854b) - Zmieniono nazwę
SurfaceRequest.setSurface(Surface)
naSurfaceRequest.provideSurface(Surface)
, aSurfaceRequest.setWillNotComplete()
naSurfaceRequest.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()
iImageCapture.OnImageCapturedCallback.onError()
, zostały zastąpione przez pojedynczy argumentImageCaptureException
, 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
PreviewView
TextureView
ustawia teraz rozmiarTextureView
na rozmiar wyjściowy czujnika aparatu, zanim zostanie ona przeskalowana, aby wypełnić element nadrzędnyPreviewView
. Jeśli chcesz, aby podgląd kamery wypełniał całą część interfejsu użytkownika (np. cały ekran), nie należy ustawiać rozmiaruPreviewView
na stałą wartość ani nie należy zawinąć 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 aparatu 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 folderachUri
iOutputStream
. Połączone przeciążone metodytakePicture
w jedną. Zaktualizowano aplikację testową, aby używałaUri
jako przykładu kanonicznego. (Ia3bec) - Nazwa
Preview.PreviewSurfaceProvider
została zmieniona naPreview.SurfaceProvider
.SurfaceProvider
nie wymagają już od programistów tworzenia własnychListenableFuture
, a udzielanieSurface
odbywa się teraz za pomocą nowego obiektuSurfaceRequest
. MetodaPreview.getPreviewSurfaceProvider()
została usunięta ze względu na możliwość jej niewłaściwego użycia, gdyPreview
jest połączona z innymi klasami, takimi jakPreviewView
. (I20105) - Argumenty, które były wcześniej przekazywane w parametrach
ImageCapture.OnImageSavedCallback.onError()
iImageCapture.OnImageCapturedCallback.onError()
, zostały zastąpione przez pojedynczy argumentImageCaptureException
, 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()
igetLinearZoom()
interfejsuCameraInfo
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 wymaga teraz parametru wejściowego
CameraSelector
. Musi to być ten samCameraSelector
, 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ądu w aplikacji. W układzie można uwzględnić
PreviewView
:<androidx.camera.view.PreviewView android:id="@+id/preview_view" … />
PreviewView
udostępniaPreviewSurfaceProvider
, aby ułatwić łączenie z przypadkiem użycia podglądupreview.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-alpha03
i androidx.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.
Funkcje androidx.camera:camera-extensions:1.0.0-alpha02
i androidx.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 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.
Funkcje androidx.camera:camera-extensions:1.0.0-alpha01
i androidx.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.