কম আলোয় বুস্ট অটো এক্সপোজার মোড

Android 15-এ কম আলোতে বুস্ট অটো এক্সপোজার (AE) মোড, একটি নতুন অটো-এক্সপোজার মোড যা Camera 2 এবং নাইট মোড ক্যামেরা এক্সটেনশন, দুটিতেই উপলভ্য। কম আলোতে বুস্ট AE মোড অটোমেটিক কম আলোতে প্রিভিউ স্ট্রিমের উজ্জ্বলতা অ্যাডজাস্ট করে। নাইট মোড ক্যামেরা এক্সটেনশন যেভাবে স্থির ছবি তোলে, এটি তার থেকে আলাদা। কারণ নাইট মোড একাধিক ছবিকে একত্রিত করে একটি উন্নত ছবি তৈরি করে। স্টিল ইমেজ তৈরি করার জন্য নাইট মোড খুব ভালভাবে কাজ করলেও, এটি ফ্রেমের একটানা স্ট্রিম তৈরি করতে পারে না, তবে লো লাইট বুস্ট AE মোড তা করতে পারে। তাই, লো লাইট বুস্ট AE মোড নতুন ক্যামেরা ফিচার চালু করে, যেমন:

  • উন্নত ইমেজ প্রিভিউ প্রদান করা, যাতে ব্যবহারকারীরা কম আলোতে তোলা ছবি আরও ভালোভাবে ফ্রেম করতে পারেন।
  • কম আলোতে QR কোড স্ক্যান করা।

আপনি'কম আলোতে বুস্ট AE মোড' চালু করলে, আলোর পরিমাণ কম থাকলে এটি অটোমেটিক চালু হয়ে যায় এবং আলোর পরিমাণ বেশি থাকলে বন্ধ হয়ে যায়।

অ্যাপ কম আলোয় প্রিভিউ স্ট্রিম থেকে রেকর্ড করতে পারে যাতে উজ্জ্বল ভিডিও সেভ করা যায়।

আপনি Camera2-তে অথবা ক্যামেরা এক্সটেনশন-এর মাধ্যমে 'কম আলোয় বুস্ট AE' মোড ব্যবহার করতে পারবেন। Camera2-এর সাথে কীভাবে কম আলোর বুস্ট AE মোড ব্যবহার করবেন তা এই ডকুমেন্টে কভার করা হয়েছে। এছাড়াও, ডিভাইসে কাজ করলে, আপনি নাইট মোড ক্যামেরা এক্সটেনশনের সাথে কম আলোতে বুস্ট করার AE মোড ব্যবহার করতে পারবেন।

উপলভ্য আছে কিনা দেখুন

'কম আলোতে বুস্ট AE মোড' ব্যবহার করার আগে, ডিভাইসে এটি কাজ করে কিনা তা চেক করুন। এটি উপলভ্য থাকলে, camera2.CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES-এ তালিকাভুক্ত এক্সপোজার মোডগুলির মধ্যে একটি হল লো লাইট বুস্ট AE মোড। (লো লাইট বুস্টের নিজস্ব অটো এক্সপোজার সেটিং আছে, কারণ অন্যান্য অটো এক্সপোজার সেটিং লো লাইট বুস্ট AE মোডের মাধ্যমে করা প্রিভিউ ব্রাইট করার সাথে মানানসই নয়।)

তাই, Low Light Boost AE মোড উপলভ্য আছে কিনা তা চেক করতে, 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
}

জাভা

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
}

লো লাইট বুস্ট AE মোড চালু করুন

Camera2 সেশনে লো লাইট বুস্ট AE মোড চালু করতে, CaptureRequest.CONTROL_AE_MODE-কে ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY হিসেবে সেট করুন। এটি করার পরে, আপনাকে কনফার্ম করতে হবে যে 'কম আলোতে বুস্ট AE' মোড চালু করা হয়েছে; আপনি CaptureResult.CONTROL_AE_MODE ফিল্ড চেক করে এটি করতে পারবেন। আপনাকে চেক করতে হবে কারণ সব ক্যামেরা কনফিগারেশনের সাথে 'কম আলোয় বুস্ট' ফিচার কাজ করে না। যেমন, FPS-এর কারণে হাই-স্পিড রেকর্ডিংয়ে লো লাইট বুস্ট AE মোড কাজ করে না। কম আলোয় বুস্ট AE মোড চালু না থাকলে, আপনাকে ক্যামেরার কনফিগারেশন পরিবর্তন করে আবার চেষ্টা করতে হতে পারে।

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
)

জাভা

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

লো লাইট বুস্ট AE মোড মনিটর করুন

কম আলোর বুস্ট AE মোড কম আলোর পরিস্থিতিতে প্রিভিউ স্ট্রিমকে উজ্জ্বল করে, এবং পরিবেশ যদি ইতিমধ্যেই স্বাভাবিক ক্যাপচারের জন্য যথেষ্ট উজ্জ্বল হয় তবে এর কোনও প্রভাব নেই। CaptureResult.CONTROL_LOW_LIGHT_BOOST_STATE ফিল্ড চেক করে আপনি কনফার্ম করতে পারবেন যে Low Light Boost AE মোড বর্তমানে অ্যাক্টিভ আছে কিনা। আপনি যদি'কম আলোতে বুস্ট AE মোড' চালু করে থাকেন এবং এটি বর্তমানে অ্যাক্টিভ থাকে, তাহলে ফিল্ডটি 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
)

জাভা

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