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 )