Android 15'te Düşük Işık Artırma özelliği kullanıma sunuldu. Otomatik pozlama modu Hem Kamera 2 hem de gece modu kamera uzantısı. Düşük Işık Artışı Önizleme akışının parlaklığını loş ışıkta otomatik olarak ayarlar koşullar. Bu, gece modu kamera uzantısının oluşturma işleminden farklıdır. sabit resimler kullanır, çünkü gece modu birden fazla fotoğraftan birini geliştirilmiş resim. Gece modu hareketsiz görüntü oluşturmak için çok iyi çalışsa da, sürekli bir kare akışı oluşturamaz ancak Düşük Işık Artırma özelliği oluşturabilir. Böylece, Düşük Işık Artırma, aşağıdakiler gibi yeni kamera özellikleri sunar:
- Kullanıcıların resimleri daha iyi çerçeveleyebilmeleri için geliştirilmiş bir resim önizlemesi sağlama düşük ışıkta çekilmiş fotoğraflar.
- QR kodları loş ışıkta taranıyor.
Düşük Işık Artırımı'nı etkinleştirirseniz düşük ışık olduğunda otomatik olarak açılır ve daha fazla ışık olduğunda söner.
Uygulamalar, düşük ışık koşullarında önizleme akışının dışında bir alan kaydederek parlaklaştırılmış video.
Zayıf Işık Artırma özelliğini Kamera2 uygulamasında veya kamera uzantıları. Bu dokümanda, Düşük Işık Artışı'nın Kamera2 ile nasıl kullanılacağı açıklanmaktadır. Ayrıca şunu da kullanabilirsiniz: tarafından destekleniyorsa Gece Modu kamera uzantısıyla Düşük Işık Artırma özelliği olanak tanır.
Müsaitlik durumunu kontrol edin
Düşük Işık Artışı'nı kullanmadan önce bu özelliğin cihazda desteklendiğinden emin olun. Eğer
Düşük Işık Artışı, şurada listelenen pozlama modlarından biridir:
camera2.CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES
. (Zayıf Işık
Diğer otomatik pozlama ayarları olduğundan Boost kendi otomatik pozlama ayarıdır
tarafından gerçekleştirilen önizleme parlaklığıyla uyumlu değildir.)
Zayıf Işık Artışı'nın kullanılıp kullanılamadığını kontrol etmek için
CameraCharacteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES)
ve döndürülen modların ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY
içerip içermediğini 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 (next section) } else { // Proceed without Low Light Boost }
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 (next section) } else { // Proceed without Low Light Boost }
Düşük Işık Artırma'yı etkinleştir
Camera2 oturumunda Düşük Işık Artışı'nı etkinleştirmek için şu ayarı yapın:
CaptureRequest.CONTROL_AE_MODE
-
ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY
. Bunu yaptıktan sonra,
Düşük Işık Artırma'nın açık olduğunu onaylayın; bunu kontrol ederek
CaptureResult.CONTROL_AE_MODE
alanına giriş yapın. Düşük Işık nedeniyle kontrol etmeniz gerekiyor
Güçlendirme tüm kamera yapılandırmalarıyla uyumlu değildir. Örneğin, yüksek hızlı
kayıt, FPS ile ilgili nedenlerden dolayı Düşük Işık Artırma özelliğini desteklemiyor. Eğer
Düşük Işık Artırımı açık değil, kamerayı değiştirmeniz gerekebilir
yapılandırıp tekrar deneyin.
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 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 set successfully result.get(CaptureResult.CONTROL_AE_MODE) == CameraMetadata.CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY; } }, mCameraHandler );
Düşük Işık Artışı'nı izle
Düşük Işık Artışı, düşük ışık koşullarında önizleme akışının parlaklığını artırır ve
ortam normal kalabilecek kadar aydınlıksa hiç bir etkisi olmaz.
yakalamanız gerekir. Düşük Işık Artırmanın şu anda etkin olup olmadığını kontrol ederek onaylayabilirsiniz
CaptureResult.CONTROL_LOW_LIGHT_BOOST_STATE
alanına girin. Projeyi
Düşük Işık Artırımı açık ve şu anda etkin durumdaysa alan
CameraMetadata.CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE
.
Daha sonra bu kişilere
önizlemenin parlak olduğunu belirten ay simgesi veya başka bir gösterge.
Kotlin
session.setRepeatingRequest( captureRequestBuilder.build(), object : CaptureCallback() { @Override fun onCaptureCompleted(session: CameraCaptureSession, request: CaptureRequest, result: TotalCaptureResult) { // check if Low Light Boost is active or inactive if (result.get(CaptureResult.CONTROL_LOW_LIGHT_BOOST_STATE) == CameraMetadata.CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE) { // Low Light Boost state is active // Show Moon Icon } else { // Low Light Boost state is inactive or AE mode is not set // to Low Light Boost // 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 is active or inactive if (result.get(CaptureResult.CONTROL_LOW_LIGHT_BOOST_STATE) == CameraMetadata.CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE) { // Low Light Boost state is active // Show Moon Icon } else { // Low Light Boost state is inactive or AE mode is not set // to Low Light Boost // Hide Moon Icon } } }, mCameraHandler );