कम रोशनी वाला मोड और ऑटो एक्सपोज़र

Android 15 में कम रोशनी में बेहतर ऑटो एक्सपोज़र (एई) मोड की सुविधा जोड़ी गई है. यह ऑटो एक्सपोज़र मोड, Camera 2 और नाइट मोड कैमरा एक्सटेंशन, दोनों के लिए उपलब्ध है. कम रोशनी वाले मोड में, एई (ऑटोमैटिक एक्सपोज़र) की सुविधा, कम रोशनी में झलक स्ट्रीम की रोशनी को अपने-आप अडजस्ट कर देती है. यह तरीका, नाइट मोड कैमरा एक्सटेंशन के स्टिल इमेज बनाने के तरीके से अलग है. ऐसा इसलिए है, क्योंकि नाइट मोड में एक बेहतर इमेज बनाने के लिए, कई फ़ोटो को एक साथ लिया जाता है. नाइट मोड, स्टिल इमेज बनाने के लिए बहुत अच्छा काम करता है. हालांकि, यह फ़्रेम की लगातार स्ट्रीम नहीं बना सकता. हालांकि, कम रोशनी में बेहतर एआई मोड ऐसा कर सकता है. इसलिए, कम रोशनी में बेहतर एआई मोड की मदद से, कैमरे की नई सुविधाएं चालू की जा सकती हैं. जैसे:

  • इमेज की बेहतर झलक दिखाने की सुविधा, ताकि उपयोगकर्ता कम रोशनी में बेहतर तरीके से फ़ोटो खींच सकें.
  • कम रोशनी में क्यूआर कोड स्कैन करना.

कम रोशनी वाले मोड में एई (ऑटोमैटिक एक्सपोज़र) की सुविधा चालू करने पर, यह कम रोशनी होने पर अपने-आप चालू हो जाती है और ज़्यादा रोशनी होने पर बंद हो जाती है.

ऐप्लिकेशन, कम रोशनी में झलक वाली स्ट्रीम को रिकॉर्ड करके, बेहतर रोशनी वाला वीडियो सेव कर सकते हैं.

कम रोशनी में बेहतर एआई मोड का इस्तेमाल, Camera2 या कैमरे के एक्सटेंशन में किया जा सकता है. इस दस्तावेज़ में, Camera2 के साथ कम रोशनी में बेहतर एई मोड इस्तेमाल करने का तरीका बताया गया है. अगर आपके डिवाइस पर नाइट मोड कैमरा एक्सटेंशन काम करता है, तो कम रोशनी में बेहतर एआई मोड का इस्तेमाल नाइट मोड के साथ भी किया जा सकता है.

उपलब्धता देखना

कम रोशनी में बेहतर एआई मोड का इस्तेमाल करने से पहले, देख लें कि यह आपके डिवाइस पर काम करता हो. अगर यह मोड उपलब्ध है, तो यह camera2.CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES में दिए गए एक्सपोज़र मोड में से एक है. (कम रोशनी वाली जगहों पर बेहतर फ़ोटो लेने की सुविधा, अपने-आप एक्सपोज़र तय करने की एक सेटिंग है. ऐसा इसलिए है, क्योंकि अपने-आप एक्सपोज़र तय करने की अन्य सेटिंग, कम रोशनी वाली जगहों पर बेहतर फ़ोटो लेने की सुविधा के एई मोड की मदद से, झलक को ज़्यादा रोशन करने की सुविधा के साथ काम नहीं करती हैं.)

इसलिए, यह देखने के लिए कि लो लाइट बूस्ट एई मोड उपलब्ध है या नहीं, CameraCharacteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES) को कॉल करें और देखें कि दिखाए गए मोड में 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
}

कम रोशनी वाले मोड में एई मोड चालू करना

Camera2 सेशन में, कम रोशनी में बेहतर एई मोड चालू करने के लिए, CaptureRequest.CONTROL_AE_MODE को ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY पर सेट करें. ऐसा करने के बाद, आपको यह पुष्टि करनी होगी कि कम रोशनी में बेहतर एआई मोड चालू है. इसके लिए, CaptureResult.CONTROL_AE_MODE फ़ील्ड पर सही का निशान लगाएं. आपको यह देखना होगा, क्योंकि कम रोशनी में बेहतर वीडियो रिकॉर्ड करने की सुविधा, सभी कैमरे कॉन्फ़िगरेशन के साथ काम नहीं करती. उदाहरण के लिए, एफ़पीएस के हिसाब से, तेज़ रफ़्तार वाली रिकॉर्डिंग में कम रोशनी वाला एई मोड काम नहीं करता. अगर कम रोशनी में बेहतर एई मोड चालू नहीं है, तो आपको कैमरे का कॉन्फ़िगरेशन बदलना पड़ सकता है. इसके बाद, फिर से कोशिश करें.

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
);

मॉनिटर का कम रोशनी वाला बेहतर एई मोड

कम रोशनी में बेहतर एई मोड, कम रोशनी की स्थितियों में झलक स्ट्रीम को ज़्यादा रोशन करता है. अगर आस-पास की रोशनी पहले से ही सामान्य कैप्चर के लिए ज़रूरत के मुताबिक है, तो इसका कोई असर नहीं पड़ता. CaptureResult.CONTROL_LOW_LIGHT_BOOST_STATE फ़ील्ड की जांच करके, यह पुष्टि की जा सकती है कि फ़िलहाल, कम रोशनी में बेहतर एआई मोड चालू है या नहीं. अगर आपने कम रोशनी में बेहतर एआई मोड चालू किया है और वह फ़िलहाल चालू है, तो फ़ील्ड को CameraMetadata.CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE पर सेट किया गया है. इसके बाद, आपको चंद्रमा का आइकॉन या झलक को ज़्यादा रोशन करने का कोई अन्य संकेत दिख सकता है.

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
);