Düşük Işık Güçlendirme Otomatik Pozlama Modu

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
);