โหมดการเปิดรับแสงอัตโนมัติที่เพิ่มแสงในสภาวะแสงน้อย

Android 15 เปิดตัวโหมดการเปิดรับแสงอัตโนมัติ (AE) สำหรับการเพิ่มคุณภาพในที่แสงน้อย ซึ่งเป็นโหมดการเปิดรับแสงอัตโนมัติใหม่ที่ใช้ได้กับทั้ง Camera 2 และส่วนขยายกล้องสำหรับโหมดกลางคืน โหมด AE สำหรับการเพิ่มแสงในสภาวะแสงน้อยจะปรับความสว่างของสตรีมตัวอย่างโดยอัตโนมัติในสภาวะแสงน้อย ซึ่งแตกต่างจากวิธีที่ส่วนขยายกล้องโหมดกลางคืนสร้างภาพนิ่ง เนื่องจากโหมดกลางคืนจะรวมภาพถ่ายต่อเนื่องเพื่อสร้างภาพที่ปรับปรุงแล้วเพียงภาพเดียว แม้ว่าโหมดกลางคืนจะทำงานได้ดีมากในการสร้างภาพนิ่ง แต่ก็ไม่สามารถสร้างเฟรมต่อเนื่องได้ แต่โหมด AE เพิ่มแสงน้อยทำได้ ดังนั้น โหมด AE สำหรับการเพิ่มคุณภาพในที่แสงน้อยจึงช่วยให้กล้องมีความสามารถใหม่ๆ เช่น

  • แสดงตัวอย่างรูปภาพที่ปรับปรุงแล้ว เพื่อให้ผู้ใช้จัดเฟรมภาพในที่แสงน้อยได้ดีขึ้น
  • การสแกนคิวอาร์โค้ดในที่แสงน้อย

หากเปิดใช้โหมด AE เพิ่มคุณภาพในที่แสงน้อย โหมดนี้จะเปิดโดยอัตโนมัติเมื่อมีระดับแสงน้อย และจะปิดเมื่อมีแสงมากขึ้น

แอปสามารถบันทึกจากสตรีมตัวอย่างในสภาพแสงน้อยเพื่อบันทึกวิดีโอที่สว่างขึ้นได้

คุณสามารถใช้โหมด AE เพิ่มคุณภาพในที่แสงน้อยได้ใน Camera2 หรือผ่านส่วนขยายกล้อง เอกสารนี้อธิบายวิธีใช้โหมด Low Light Boost AE กับ Camera2 นอกจากนี้ คุณยังใช้โหมด AE เพิ่มประสิทธิภาพในสภาวะแสงน้อยกับส่วนขยายกล้องโหมดกลางคืนได้ด้วย หากอุปกรณ์รองรับ

ตรวจสอบความพร้อมใช้งาน

ก่อนใช้โหมด AE สำหรับการเพิ่มแสงในสภาวะแสงน้อย ให้ตรวจสอบว่าอุปกรณ์รองรับโหมดดังกล่าวหรือไม่ หากพร้อมใช้งาน โหมด AE สำหรับการเพิ่มแสงในสภาวะแสงน้อยจะเป็นหนึ่งในโหมดการรับแสงที่แสดงใน camera2.CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES (การเพิ่มแสงในสภาวะแสงน้อยมีการตั้งค่าการเปิดรับแสงอัตโนมัติของตัวเอง เนื่องจากการตั้งค่าการเปิดรับแสงอัตโนมัติอื่นๆ ไม่เข้ากันกับการเพิ่มความสว่างของตัวอย่างภาพที่ดำเนินการโดยโหมด AE ของการเพิ่มแสงในสภาวะแสงน้อย)

ดังนั้น หากต้องการตรวจสอบว่าโหมด AE เพิ่มประสิทธิภาพในสภาวะแสงน้อยพร้อมใช้งานหรือไม่ ให้เรียกใช้ 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 สำหรับการเพิ่มแสงในสภาวะแสงน้อย

หากต้องการเปิดใช้โหมด AE สำหรับการเพิ่มแสงในสภาวะแสงน้อยในเซสชัน Camera2 ให้ตั้งค่า CaptureRequest.CONTROL_AE_MODE เป็น ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY หลังจากนั้น คุณจะต้องยืนยันว่าโหมด AE สำหรับการเพิ่มความสว่างในที่แสงน้อยเปิดอยู่ โดยตรวจสอบช่อง CaptureResult.CONTROL_AE_MODE คุณต้องตรวจสอบเนื่องจากการเพิ่มคุณภาพแสงน้อยใช้ไม่ได้กับการกำหนดค่ากล้องบางอย่าง ตัวอย่างเช่น การบันทึกความเร็วสูงไม่รองรับโหมด AE สำหรับการเพิ่มแสงในสภาวะแสงน้อยเนื่องจากข้อจำกัดด้าน FPS หากไม่ได้เปิดโหมด AE สำหรับการเพิ่มคุณภาพในที่แสงน้อย คุณอาจต้องเปลี่ยนการกำหนดค่ากล้องแล้วลองอีกครั้ง

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
)

ตรวจสอบโหมด AE สำหรับการเพิ่มแสงในสภาวะแสงน้อย

โหมด AE สำหรับการเพิ่มแสงในสภาวะแสงน้อยจะเพิ่มความสว่างให้สตรีมตัวอย่างในสภาพแสงน้อย และจะไม่มีผลใดๆ หากสภาพแวดล้อมสว่างเพียงพอสำหรับการจับภาพตามปกติอยู่แล้ว คุณสามารถยืนยันว่าโหมด 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
)