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

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

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

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

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

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

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

قبل‌از استفاده از «حالت نوردهی خودکار تقویت نور کم»، بررسی کنید که این ویژگی در دستگاه پشتیبانی شود. اگر دردسترس باشد، «حالت نوردهی خودکار تقویت نور کم» یکی از حالت‌های نوردهی فهرست‌شده در 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.
}

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

برای فعال کردن «حالت نوردهی خودکار تقویت نور کم» در جلسه 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
)

Monitor Low Light Boost AE Mode

«حالت 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
)