Android 15, hem Kamera 2 hem de gece modu kamera uzantısında kullanılabilen yeni bir otomatik pozlama modu olan düşük ışık güçlendirme otomatik pozlama (AE) modunu kullanıma sunar. Düşük Işık Güçlendirmesi AE Modu, düşük ışık koşullarında önizleme akışının parlaklığını otomatik olarak ayarlar. Gece modu, tek bir gelişmiş resim oluşturmak için bir grup fotoğrafı birleştirdiğinden bu, gece modu kamera uzantısının hareketsiz resim oluşturma yönteminden farklıdır. Gece modu, hareketsiz resim oluşturmak için çok iyi çalışır ancak kesintisiz bir kare akışı oluşturamaz. Düşük Işıkta Geliştirme AE Modu ise bunu yapabilir. Bu nedenle, Düşük Işıkta Güçlendirme AE Modu aşağıdakiler gibi yeni kamera özelliklerini etkinleştirir:
- Kullanıcıların düşük ışıkta çektiği fotoğrafları daha iyi kadraja alabilmesi için gelişmiş resim önizlemesi sunar.
- Düşük ışıkta QR kodu taramak.
Düşük Işık Güçlendirme AE Modu'nu etkinleştirirseniz bu mod, ışık seviyesi düşük olduğunda otomatik olarak açılır ve ışık seviyesi arttığında kapanır.
Uygulamalar, düşük ışık koşullarında önizleme akışını kaydederek videoları aydınlatabilir.
Düşük Işık Güçlendirme AE modunu Camera2'de veya kamera uzantılarıyla kullanabilirsiniz. Bu belgede, Camera2 ile Düşük Işık Güçlendirme AE modunun nasıl kullanılacağı açıklanmaktadır. Cihaz tarafından destekleniyorsa Gece Modu kamera uzantısıyla Düşük Işıkta Güçlendirme AE modunu da kullanabilirsiniz.
Müsaitlik durumunu kontrol edin
Düşük Işıkta Güçlendirme AE modunu kullanmadan önce cihazda desteklenip desteklenmediğini kontrol edin.
Varsa Düşük Işık Güçlendirme AE Modu, camera2.CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES
bölümünde listelenen pozlama modlarından biridir. (Diğer otomatik pozlama ayarları, Düşük Işık Güçlendirme AE Modu tarafından gerçekleştirilen önizleme aydınlatmasıyla uyumlu olmadığından Düşük Işık Güçlendirme kendi otomatik pozlama ayarına sahiptir.)
Bu nedenle, Düşük Işıkta Güçlendirilmiş AE Modu'nun kullanılıp kullanılamadığını kontrol etmek için CameraCharacteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES)
işlevini çağırın ve döndürülen modlarda ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY
olup olmadığını kontrol edin:
Kotlin
val characteristics = cameraManager.getCameraCharacteristics(cameraId) val autoExposureModes = characteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES)!! val lowLightBoostSupported = autoExposureModes.contains( CameraMetadata.CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY) if (lowLightBoostSupported) { // Enable Low Light Boost AE Mode (next section) } else { // Proceed without Low Light Boost AE Mode }
Java
CameraCharacteristics characteristics = mCameraManager.getCameraCharacteristics(cameraId); int[] autoExposureModes = characteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES); boolean lowLightBoostSupported = autoExposureModes.contains( CameraMetadata.CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY); if (lowLightBoostSupported) { // Enable Low Light Boost AE Mode (next section) } else { // Proceed without Low Light Boost AE Mode }
Zayıf Işıkta Güçlendirilmiş AE Modu'nu etkinleştirme
Camera2 oturumunda Düşük Işık Güçlendirme AE modunu etkinleştirmek için CaptureRequest.CONTROL_AE_MODE
değerini ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY
olarak ayarlayın. Bunu yaptıktan sonra, Düşük Işıkta Güçlendirme AE Modu'nun etkinleştirildiğini onaylamanız gerekir. Bunu CaptureResult.CONTROL_AE_MODE
alanını işaretleyerek yapabilirsiniz. Düşük Işık Güçlendirmesi tüm kamera yapılandırmalarıyla uyumlu olmadığından bunu kontrol etmeniz gerekir. Örneğin, yüksek hızlı kayıt, FPS ile ilgili nedenlerden dolayı Düşük Işık Güçlendirmesi AE modunu desteklemez. Düşük Işıkta Güçlendirme AE Modu açık değilse kamera yapılandırmasını değiştirip tekrar denemeniz gerekebilir.
Kotlin
val captureRequestBuilder = camera.createCaptureRequest( CameraDevice.TEMPLATE_PREVIEW) if (isLowLightBoostAvailable(cameraId)) { captureRequestBuilder.set( CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY ) } // other capture request params session.setRepeatingRequest( captureRequestBuilder.build(), object : CaptureCallback() { @Override fun onCaptureCompleted(session: CameraCaptureSession, request: CaptureRequest, result: TotalCaptureResult) { // verify Low Light Boost AE Mode AE mode set successfully result.get(CaptureResult.CONTROL_AE_MODE) == CameraMetadata.CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY } }, cameraHandler )
Java
CaptureRequest.Builder captureRequestBuilder = mCamera.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW); if (isLowLightBoostAvailable(cameraId)) { captureRequestBuilder.set( CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY); } // other capture request params mSession.setRepeatingRequest( captureRequestBuilder.build(), new CaptureCallback() { @Override public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request, TotalCaptureResult result) { // verify Low Light Boost AE Mode AE mode set successfully result.get(CaptureResult.CONTROL_AE_MODE) == CameraMetadata.CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY; } }, mCameraHandler );
Monitör Düşük Işık Güçlendirme AE Modu
Düşük Işık Güçlendirmesi AE Modu, düşük ışık koşullarında önizleme akışını aydınlatır ve ortam normal çekim için yeterince aydınlıksa herhangi bir etkisi olmaz. Düşük Işıkta Güçlendirme AE Modu'nun şu anda etkin olup olmadığını CaptureResult.CONTROL_LOW_LIGHT_BOOST_STATE
alanını kontrol ederek onaylayabilirsiniz.
Düşük Işıkta Güçlendirilmiş AE Modu'nu açtıysanız ve bu mod şu anda etkinse alan CameraMetadata.CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE
olarak ayarlanır.
Ardından, önizlemenin parlatıldığını gösteren bir ay simgesi veya başka bir gösterge gösterebilirsiniz.
Kotlin
session.setRepeatingRequest( captureRequestBuilder.build(), object : CaptureCallback() { @Override fun onCaptureCompleted(session: CameraCaptureSession, request: CaptureRequest, result: TotalCaptureResult) { // check if Low Light Boost AE Mode is active or inactive if (result.get(CaptureResult.CONTROL_LOW_LIGHT_BOOST_STATE) == CameraMetadata.CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE) { // Low Light Boost AE Mode state is active // Show Moon Icon } else { // Low Light Boost AE Mode state is inactive or AE mode is not set // to Low Light Boost AE Mode // Hide Moon Icon } } }, cameraHandler )
Java
mSession.setRepeatingRequest( captureRequestBuilder.build(), new CaptureCallback() { @Override public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request, TotalCaptureResult result) { // check if Low Light Boost AE Mode is active or inactive if (result.get(CaptureResult.CONTROL_LOW_LIGHT_BOOST_STATE) == CameraMetadata.CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE) { // Low Light Boost AE Mode state is active // Show Moon Icon } else { // Low Light Boost AE Mode state is inactive or AE mode is not set // to Low Light Boost AE Mode // Hide Moon Icon } } }, mCameraHandler );