Android 15 memperkenalkan Mode Eksposur Otomatis (AE) Peningkatan Cahaya Rendah, mode eksposur otomatis baru yang tersedia untuk Camera 2 dan ekstensi kamera mode malam. Mode AE Peningkatan Cahaya Redup secara otomatis menyesuaikan kecerahan streaming Pratinjau dalam kondisi cahaya redup. Hal ini berbeda dengan cara ekstensi kamera mode malam membuat gambar diam, karena mode malam menggabungkan serangkaian foto untuk membuat satu gambar yang ditingkatkan. Meskipun mode malam berfungsi sangat baik untuk membuat gambar diam, mode ini tidak dapat membuat aliran frame yang berkelanjutan, tetapi Mode AE Pengoptimalan Cahaya Redup dapat melakukannya. Dengan demikian, Mode AE Low Light Boost memungkinkan kemampuan kamera baru, seperti berikut:
- Memberikan pratinjau gambar yang ditingkatkan, sehingga pengguna dapat lebih baik membingkai gambar dalam kondisi cahaya redup.
- Memindai kode QR dalam kondisi cahaya redup.
Jika Anda mengaktifkan Mode AE Peningkatan Cahaya Redup, mode ini akan otomatis aktif saat ada tingkat cahaya rendah, dan nonaktif saat ada lebih banyak cahaya.
Aplikasi dapat merekam dari streaming Pratinjau dalam kondisi cahaya redup untuk menyimpan video yang lebih terang.
Anda dapat menggunakan Mode AE Peningkatan Cahaya Redup di Camera2 atau melalui ekstensi kamera. Dokumen ini membahas cara menggunakan Mode AE Pengoptimalan Cahaya Redup dengan Camera2. Anda juga dapat menggunakan Mode AE Peningkatan Cahaya Redup dengan ekstensi kamera Mode Malam jika didukung oleh perangkat.
Memeriksa ketersediaan
Sebelum menggunakan Mode AE Peningkatan Cahaya Redup, pastikan mode tersebut didukung di perangkat.
Jika tersedia, Mode AE Peningkatan Cahaya Redup adalah salah satu mode eksposur yang tercantum
di camera2.CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES
. (Peningkatan
Cahaya Redup adalah setelan eksposur otomatisnya sendiri, karena setelan eksposur otomatis lainnya
tidak kompatibel dengan kecerahan pratinjau yang dilakukan oleh Mode
AE Peningkatan Cahaya Redup.)
Jadi, untuk memeriksa apakah Mode AE Low Light Boost tersedia, panggil
CameraCharacteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES)
dan periksa apakah mode yang ditampilkan menyertakan ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY
:
Kotlin
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 }
Java
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 }
Mengaktifkan Mode AE Boost Cahaya Rendah
Untuk mengaktifkan Mode AE Low Light Boost dalam sesi Camera2, tetapkan
CaptureRequest.CONTROL_AE_MODE
ke
ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY
. Setelah melakukannya, Anda harus
mengonfirmasi bahwa Mode AE Low Light Boost telah diaktifkan; Anda dapat melakukannya dengan mencentang
kolom CaptureResult.CONTROL_AE_MODE
. Anda perlu memeriksanya karena Low
Light Boost tidak kompatibel dengan semua konfigurasi kamera. Misalnya,
perekaman kecepatan tinggi tidak mendukung Mode AE Low Light Boost, karena pertimbangan
FPS. Jika Mode AE Low Light Boost tidak diaktifkan, Anda mungkin perlu
mengubah konfigurasi kamera dan mencoba lagi.
Kotlin
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 )
Java
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 );
Memantau Mode AE Peningkatan Cahaya Redup
Mode AE Peningkatan Cahaya Rendah mencerahkan streaming pratinjau dalam kondisi cahaya redup,
dan tidak berpengaruh jika lingkungan sudah cukup terang untuk
perekaman normal. Anda dapat mengonfirmasi apakah Mode AE Low Light Boost saat ini
aktif dengan memeriksa kolom CaptureResult.CONTROL_LOW_LIGHT_BOOST_STATE
.
Jika Anda telah mengaktifkan Mode AE Peningkatan Cahaya Redup dan saat ini aktif, kolom akan ditetapkan ke CameraMetadata.CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE
.
Kemudian, Anda dapat menampilkan ikon bulan atau beberapa indikasi lain bahwa pratinjau
telah diperjelas.
Kotlin
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 )
Java
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 );