حالت نوردهی خودکار تقویت نور کم

Android 15 حالت نوردهی خودکار (AE) تقویت نور کم را معرفی می‌کند، یک حالت نوردهی خودکار جدید که هم برای Camera 2 و هم برای افزونه دوربین حالت شب دردسترس است. «حالت AE تقویت نور کم» به‌طور خودکار روشنایی جاری‌سازی «پیش‌نمایش» را در شرایط کم‌نور تنظیم می‌کند. این با نحوه ایجاد تصاویر ثابت توسط افزونه دوربین حالت شب متفاوت است، زیرا حالت شب مجموعه‌ای از عکس‌ها را ترکیب می‌کند تا یک تصویر بهبودیافته واحد ایجاد کند. درحالی‌که حالت شب برای ایجاد تصویر ثابت بسیار خوب کار می‌کند، نمی‌تواند جریان پیوسته‌ای از فریم‌ها ایجاد کند، اما «حالت نوردهی خودکار تقویت نور کم» می‌تواند این کار را انجام دهد. بنابراین، «حالت نوردهی خودکار تقویت نور کم» قابلیت‌های جدیدی را برای دوربین فعال می‌کند، ازجمله:

  • ارائه پیش‌نمایش تصویر بهبودیافته، تا کاربران بتوانند عکس‌هایشان را در نور کم بهتر قاب‌بندی کنند.
  • اسکن کردن رمزینه‌های پاسخ‌سریع در نور کم.

اگر «حالت نوردهی خودکار تقویت نور کم» را فعال کنید، وقتی نور کم باشد به‌طور خودکار روشن می‌شود و وقتی نور بیشتر شود خاموش می‌شود.

برنامه‌ها می‌توانند در شرایط کم‌نور از جاری‌سازی «پیش‌نمایش» ضبط کنند تا ویدیویی روشن‌تر ذخیره شود.

می‌توانید از «حالت نوردهی خودکار تقویت نور کم» در Camera2 یا ازطریق افزونه‌های دوربین استفاده کنید. این سند نحوه استفاده از «حالت نوردهی خودکار بهبود در نور کم» را با Camera2 پوشش می‌دهد. همچنین می‌توانید از «حالت AE تقویت نور کم» با افزونه دوربین «حالت شب» استفاده کنید، البته اگر دستگاه از آن پشتیبانی کند.

بررسی دردسترس بودن

قبل‌از استفاده از «حالت نوردهی خودکار تقویت‌شده در نور کم»، مطمئن شوید که دستگاه از آن پشتیبانی می‌کند. اگر دردسترس باشد، «حالت نوردهی خودکار تقویت نور کم» یکی از حالت‌های نوردهی فهرست‌شده در camera2.CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES است. («بهبود نور کم» تنظیم نوردهی خودکار خودش را دارد، زیرا سایر تنظیمات نوردهی خودکار با روشن کردن پیش‌نمایش که توسط «حالت نوردهی خودکار بهبود نور کم» انجام می‌شود سازگار نیستند.)

بنابراین، برای بررسی اینکه آیا «حالت نوردهی خودکار تقویت نور کم» دردسترس است یا نه، CameraCharacteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES) را فراخوانی کنید و بررسی کنید که آیا حالت‌های برگردانده‌شده شامل ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY است یا نه:

کاتلین

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
}

جاوا

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
}

فعال کردن «حالت نوردهی خودکار تقویت نور کم»

برای فعال کردن «حالت نوردهی خودکار بهبود در نور کم» در جلسه Camera2، CaptureRequest.CONTROL_AE_MODE را روی ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY تنظیم کنید. پس‌از انجام این کار، باید تأیید کنید که «حالت نوردهی خودکار تقویت‌شده در نور کم» روشن شده است؛ می‌توانید این کار را با بررسی فیلد CaptureResult.CONTROL_AE_MODE انجام دهید. باید بررسی کنید چون «بهبود در نور کم» با همه پیکربندی‌های دوربین سازگار نیست. برای مثال، ضبط با سرعت بالا از «حالت نوردهی خودکار تقویت نور کم» پشتیبانی نمی‌کند، زیرا ملاحظات FPS وجود دارد. اگر «حالت نوردهی خودکار تقویت نور کم» روشن نیست، ممکن است لازم باشد پیکربندی دوربین را تغییر دهید و دوباره امتحان کنید.

کاتلین

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
)

جاوا

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

پایش حالت AE «افزایش روشنایی»

«حالت نوردهی خودکار تقویت نور کم» جریان پیش‌نمایش را در شرایط کم‌نور روشن می‌کند، و اگر محیط ازقبل برای ضبط عادی به‌اندازه کافی روشن باشد، هیچ تأثیری ندارد. با بررسی فیلد CaptureResult.CONTROL_LOW_LIGHT_BOOST_STATE می‌توانید تأیید کنید که آیا «حالت نوردهی خودکار تقویت نور کم» درحال‌حاضر فعال است یا نه. اگر «حالت AE تقویت نور کم» را روشن کرده باشید و درحال‌حاضر فعال باشد، فیلد روی CameraMetadata.CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE تنظیم می‌شود. سپس ممکن است نماد ماه یا نشانگر دیگری را نشان دهید که پیش‌نمایش درحال روشن‌تر شدن است.

کاتلین

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
)

جاوا

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