Chế độ phơi sáng tự động tăng cường ánh sáng yếu

Android 15 ra mắt Chế độ tự động phơi sáng (AE) tăng cường ánh sáng yếu, một chế độ tự động phơi sáng mới có sẵn cho cả Camera 2 và tiện ích camera ở chế độ ban đêm. Chế độ AE tăng cường ánh sáng yếu tự động điều chỉnh độ sáng của luồng Xem trước trong điều kiện ánh sáng yếu. Điều này khác với cách tiện ích máy ảnh ở chế độ ban đêm tạo ra hình ảnh tĩnh, vì chế độ ban đêm kết hợp một loạt ảnh để tạo ra một hình ảnh duy nhất, nâng cao. Mặc dù chế độ ban đêm hoạt động rất hiệu quả trong việc tạo hình ảnh tĩnh, nhưng chế độ này không thể tạo ra một luồng khung hình liên tục, còn Chế độ AE tăng cường ánh sáng yếu thì có thể. Do đó, Chế độ AE tăng cường ánh sáng yếu cho phép các tính năng mới của camera, chẳng hạn như:

  • Cung cấp bản xem trước hình ảnh nâng cao để người dùng có thể tạo khung hình tốt hơn cho ảnh chụp trong điều kiện thiếu sáng.
  • Quét mã QR trong điều kiện thiếu sáng.

Nếu bạn bật Chế độ phơi sáng tự động tăng cường ánh sáng yếu, chế độ này sẽ tự động bật khi mức ánh sáng thấp và tắt khi có nhiều ánh sáng hơn.

Ứng dụng có thể quay video ngoài luồng Xem trước trong điều kiện thiếu sáng để lưu video sáng hơn.

Bạn có thể sử dụng Chế độ phơi sáng tự động (AE) của tính năng Tăng cường ánh sáng yếu trong Camera2 hoặc thông qua tiện ích máy ảnh. Tài liệu này trình bày cách sử dụng Chế độ AE tăng cường ánh sáng yếu với Camera2. Bạn cũng có thể sử dụng Chế độ AE tăng cường ánh sáng yếu với tiện ích máy ảnh Chế độ ban đêm nếu thiết bị hỗ trợ.

Kiểm tra phạm vi cung cấp

Trước khi sử dụng Chế độ AE Cải thiện ánh sáng yếu, hãy kiểm tra để đảm bảo thiết bị có hỗ trợ chế độ này. Nếu có, Chế độ phơi sáng tự động tăng cường ánh sáng yếu là một trong các chế độ phơi sáng được liệt kê trong camera2.CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES. (Cải thiện ánh sáng yếu là chế độ cài đặt phơi sáng tự động riêng, vì các chế độ cài đặt phơi sáng tự động khác không tương thích với tính năng làm sáng bản xem trước do Chế độ phơi sáng tự động cải thiện ánh sáng yếu thực hiện.)

Vì vậy, để kiểm tra xem Chế độ phơi sáng tự động tăng cường ánh sáng yếu có hoạt động hay không, hãy gọi CameraCharacteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES) và kiểm tra xem các chế độ được trả về có bao gồm ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY hay không:

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.
}

Bật Chế độ phơi sáng tự động (AE) để cải thiện ánh sáng yếu

Để bật Chế độ phơi sáng tự động (AE) của tính năng Cải thiện ánh sáng yếu trong một phiên Camera2, hãy đặt CaptureRequest.CONTROL_AE_MODE thành ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY. Sau khi thực hiện, bạn cần xác nhận rằng Chế độ phơi sáng tự động tăng cường ánh sáng yếu đã được bật; bạn có thể thực hiện việc này bằng cách kiểm tra trường CaptureResult.CONTROL_AE_MODE. Bạn cần kiểm tra vì tính năng Tăng cường ánh sáng yếu không tương thích với một số cấu hình camera. Ví dụ: chế độ quay tốc độ cao không hỗ trợ Chế độ phơi sáng tự động tăng cường ánh sáng yếu, do các yếu tố liên quan đến FPS. Nếu Chế độ phơi sáng tự động tăng cường ánh sáng yếu không được bật, bạn có thể cần thay đổi cấu hình máy ảnh rồi thử lại.

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
)

Theo dõi chế độ phơi sáng tự động của tính năng Cải thiện ánh sáng yếu

Chế độ AE Tăng cường ánh sáng yếu làm sáng luồng xem trước trong điều kiện ánh sáng yếu và không có hiệu lực nếu môi trường đã đủ sáng để chụp bình thường. Bạn có thể xác nhận xem Chế độ phơi sáng tự động tăng cường ánh sáng yếu có đang hoạt động hay không bằng cách kiểm tra trường CaptureResult.CONTROL_LOW_LIGHT_BOOST_STATE. Nếu bạn đã bật Chế độ phơi sáng tự động (AE) của tính năng Cải thiện ánh sáng yếu và chế độ này đang hoạt động, thì trường này sẽ được đặt thành CameraMetadata.CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE. Sau đó, bạn có thể hiển thị biểu tượng mặt trăng hoặc một số chỉ báo khác cho biết bản xem trước đang được làm sáng.

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
)